Currents · Schema

ContextResponse

CompanyTestingPlaywrightTest AutomationCI/CDTest OrchestrationDeveloper ToolsMCP

Properties

Name Type Description
status string
data object
View JSON Schema on GitHub

JSON Schema

currents-dev-context-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/currents-dev/json-schema/currents-dev-context-response-schema.json",
  "title": "ContextResponse",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/currents-dev-context-api-openapi.yml#/components/schemas/ContextResponse",
  "type": "object",
  "required": [
    "status",
    "data"
  ],
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "OK"
      ]
    },
    "data": {
      "oneOf": [
        {
          "$ref": "#/$defs/ContextTestData"
        },
        {
          "$ref": "#/$defs/ContextInstanceData"
        },
        {
          "$ref": "#/$defs/ContextRunData"
        }
      ]
    }
  },
  "$defs": {
    "ContextAsset": {
      "type": "object",
      "description": "A link to a stored artifact (trace, screenshot, video, attachment, or instance stdout).",
      "properties": {
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string",
          "description": "Short link to the artifact. It redirects (302) to a signed, time-limited storage URL, so the client must follow redirects. The link lasts as long as the signature it replaced. Compression applies to the response it redirects to: the object may be stored gzipped, so decompress when the response carries `Content-Encoding: gzip` or the body starts with the gzip magic bytes `0x1f 0x8b`."
        }
      }
    },
    "ContextError": {
      "type": [
        "object",
        "null"
      ],
      "description": "Error details including message, stack, location, and code snippet",
      "properties": {
        "message": {
          "type": [
            "string",
            "null"
          ]
        },
        "stack": {
          "type": [
            "string",
            "null"
          ]
        },
        "location": {
          "$ref": "#/$defs/ContextErrorLocation"
        },
        "snippet": {
          "type": [
            "string",
            "null"
          ],
          "description": "Code snippet around the error location"
        }
      }
    },
    "ContextErrorLocation": {
      "type": [
        "object",
        "null"
      ],
      "description": "Source code location of an error",
      "properties": {
        "file": {
          "type": "string"
        },
        "line": {
          "type": "integer"
        },
        "column": {
          "type": "integer"
        }
      }
    },
    "ContextFailedTestBase": {
      "type": "object",
      "description": "Common properties for failed test summaries",
      "properties": {
        "testId": {
          "type": "string"
        },
        "title": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Test title hierarchy"
        },
        "status": {
          "type": "string"
        },
        "attempt": {
          "type": "integer"
        },
        "duration": {
          "type": "integer",
          "description": "Duration in milliseconds"
        },
        "error": {
          "$ref": "#/$defs/ContextError"
        },
        "errorContext": {
          "allOf": [
            {
              "$ref": "#/$defs/ContextAsset"
            }
          ],
          "description": "Browser accessibility snapshot at time of failure"
        },
        "failureContext": {
          "$ref": "#/$defs/ContextFailureContext"
        },
        "detailUrl": {
          "type": "string",
          "description": "Absolute URL for full test-level context"
        }
      }
    },
    "ContextFailureContext": {
      "type": [
        "object",
        "null"
      ],
      "description": "Context around the failed step",
      "properties": {
        "failedStepIndex": {
          "type": "integer",
          "description": "Index of the failed step in the flattened steps array (0-indexed)"
        },
        "stepBefore": {
          "allOf": [
            {
              "$ref": "#/$defs/ContextStep"
            }
          ],
          "description": "The step that executed before the failure (null if failed step was first)"
        },
        "failedStep": {
          "$ref": "#/$defs/ContextStep",
          "description": "The step that failed"
        },
        "stepAfter": {
          "allOf": [
            {
              "$ref": "#/$defs/ContextStep"
            }
          ],
          "description": "The step that would have executed after (null if failed step was last)"
        }
      }
    },
    "ContextFramework": {
      "type": [
        "object",
        "null"
      ],
      "description": "Test framework information",
      "properties": {
        "type": {
          "type": "string",
          "description": "Framework type (e.g., playwright, cypress)"
        },
        "version": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "ContextGit": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "repository",
        "branch",
        "sha",
        "pullRequest"
      ],
      "description": "Where the failing code lives. Null when the run reported no git data. Values are checkout-able: the pull request head branch and commit rather than a refs/pull ref or a GitHub Actions merge commit.",
      "properties": {
        "repository": {
          "type": [
            "string",
            "null"
          ],
          "description": "owner/repo on GitHub-shaped hosts; the host's own repo path elsewhere"
        },
        "branch": {
          "type": [
            "string",
            "null"
          ]
        },
        "sha": {
          "type": [
            "string",
            "null"
          ]
        },
        "pullRequest": {
          "type": [
            "object",
            "null"
          ],
          "required": [
            "number",
            "url",
            "baseBranch"
          ],
          "properties": {
            "number": {
              "type": [
                "string",
                "null"
              ],
              "description": "Null when only a link is known"
            },
            "url": {
              "type": [
                "string",
                "null"
              ]
            },
            "baseBranch": {
              "type": [
                "string",
                "null"
              ],
              "description": "The branch the pull request merges into"
            }
          }
        }
      }
    },
    "ContextInstanceData": {
      "type": "object",
      "required": [
        "level",
        "spec",
        "instanceStatus",
        "instanceAssets",
        "list",
        "count",
        "total",
        "nextPage",
        "meta",
        "environment",
        "git"
      ],
      "properties": {
        "level": {
          "type": "string",
          "enum": [
            "instance"
          ]
        },
        "spec": {
          "type": "string"
        },
        "instanceStatus": {
          "type": "string",
          "description": "Instance lifecycle status (FAILED, TIMED_OUT, CANCELLED, etc.)"
        },
        "instanceAssets": {
          "type": "object",
          "description": "Instance-level assets",
          "properties": {
            "stdout": {
              "allOf": [
                {
                  "$ref": "#/$defs/ContextAsset"
                }
              ],
              "description": "Instance-level console output. The `url` field is a `ContextAsset` link, and the object it redirects to is often uploaded with gzip compression enabled."
            }
          }
        },
        "list": {
          "type": "array",
          "description": "Failed tests on this page",
          "items": {
            "allOf": [
              {
                "$ref": "#/$defs/ContextFailedTestBase"
              },
              {
                "type": "object",
                "properties": {
                  "totalAttempts": {
                    "type": "integer"
                  }
                }
              }
            ]
          }
        },
        "count": {
          "type": "integer",
          "description": "Number of items in `list` for this page"
        },
        "total": {
          "type": "integer",
          "description": "Total number of failed tests for the instance"
        },
        "nextPage": {
          "oneOf": [
            {
              "type": "integer"
            },
            {
              "type": "boolean",
              "enum": [
                false
              ]
            }
          ],
          "description": "Next page index (0-based), or false if no more pages"
        },
        "meta": {
          "type": "object",
          "properties": {
            "projectId": {
              "type": "string"
            },
            "runId": {
              "type": "string"
            },
            "instanceId": {
              "type": "string"
            }
          }
        },
        "environment": {
          "type": "object",
          "properties": {
            "framework": {
              "$ref": "#/$defs/ContextFramework"
            },
            "platform": {
              "$ref": "#/$defs/ContextPlatform"
            },
            "project": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "git": {
          "$ref": "#/$defs/ContextGit"
        }
      }
    },
    "ContextPlatform": {
      "type": [
        "object",
        "null"
      ],
      "description": "Platform/browser information",
      "properties": {
        "osName": {
          "type": "string"
        },
        "osVersion": {
          "type": "string"
        },
        "browserName": {
          "type": "string"
        },
        "browserVersion": {
          "type": "string"
        }
      }
    },
    "ContextRunData": {
      "type": "object",
      "required": [
        "level",
        "runId",
        "instances",
        "list",
        "count",
        "total",
        "nextPage",
        "meta",
        "environment",
        "git"
      ],
      "properties": {
        "level": {
          "type": "string",
          "enum": [
            "run"
          ]
        },
        "runId": {
          "type": "string"
        },
        "runStatus": {
          "type": "string"
        },
        "instances": {
          "type": "array",
          "description": "All non-passed instances in the run",
          "items": {
            "type": "object",
            "properties": {
              "instanceId": {
                "type": "string"
              },
              "spec": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "durationMs": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "groupId": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          }
        },
        "list": {
          "type": "array",
          "description": "Paginated unique failing tests (deduplicated by signature + error). With `include_flaky=true`, flaky tests follow the failed ones with `status: \"flaky\"` and the error from their last failed attempt; `page`/`limit` and `nextPage` then index through this combined failed+flaky ordering, whose overall size is `total + totalFlakyTests`.",
          "items": {
            "allOf": [
              {
                "$ref": "#/$defs/ContextFailedTestBase"
              },
              {
                "type": "object",
                "properties": {
                  "instanceId": {
                    "type": "string"
                  },
                  "signature": {
                    "type": "string",
                    "description": "Identifies the test across runs and groups"
                  },
                  "spec": {
                    "type": "string"
                  },
                  "groupId": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lastSteps": {
                    "type": "array",
                    "description": "The last five step list rows before Playwright's After Hooks, or the last five rows when there is none. Present only with `detail=compact`, when no step recorded an error, as when the test body times out in a sleep or throws outside a step.",
                    "items": {
                      "type": "object",
                      "required": [
                        "number",
                        "indent",
                        "title",
                        "duration",
                        "repeats"
                      ],
                      "properties": {
                        "number": {
                          "type": "integer",
                          "description": "1-based, in preorder over the attempt's step tree"
                        },
                        "indent": {
                          "type": "integer",
                          "description": "Nesting depth, 0 for a top-level step"
                        },
                        "title": {
                          "type": "string"
                        },
                        "lastTitle": {
                          "type": "string",
                          "description": "Title of the last folded step, when the folded titles differ"
                        },
                        "category": {
                          "type": "string"
                        },
                        "duration": {
                          "type": "integer",
                          "description": "Duration in milliseconds, summed over the folded steps. -1 for a step that never finished, which keeps a row of its own."
                        },
                        "repeats": {
                          "type": "integer",
                          "description": "Steps the row stands for, 1 when nothing was folded"
                        }
                      }
                    }
                  },
                  "steps": {
                    "type": "array",
                    "description": "The attempt's steps. Empty unless `detail=default`.",
                    "items": {
                      "$ref": "#/$defs/ContextStep"
                    }
                  },
                  "assets": {
                    "type": "object",
                    "description": "Signed asset links for the attempt. Present only with `detail=default`.",
                    "properties": {
                      "traces": {
                        "type": "array",
                        "items": {
                          "$ref": "#/$defs/ContextAsset"
                        }
                      },
                      "screenshots": {
                        "type": "array",
                        "items": {
                          "$ref": "#/$defs/ContextAsset"
                        }
                      },
                      "videos": {
                        "type": "array",
                        "items": {
                          "$ref": "#/$defs/ContextAsset"
                        }
                      },
                      "attachments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "description": "Attachment with additional metadata",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "filename": {
                              "type": "string"
                            },
                            "contentType": {
                              "type": "string"
                            },
                            "url": {
                              "type": "string",
                              "description": "Short link to the artifact. It redirects (302) to a signed, time-limited storage URL, so the client must follow redirects. The link lasts as long as the signature it replaced. Compression applies to the response it redirects to: the object may be stored gzipped, so decompress when the response carries `Content-Encoding: gzip` or the body starts with the gzip magic bytes `0x1f 0x8b`."
                            }
                          }
                        }
                      }
                    }
                  },
                  "alsoFailedIn": {
                    "type": "array",
                    "description": "Other tests with the same error (cross-group deduplication)",
                    "items": {
                      "type": "object",
                      "properties": {
                        "testId": {
                          "type": "string"
                        },
                        "instanceId": {
                          "type": "string"
                        },
                        "groupId": {
                          "type": "string"
                        },
                        "title": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Test title for context"
                        }
                      }
                    }
                  }
                }
              }
            ]
          }
        },
        "count": {
          "type": "integer",
          "description": "Number of items in `list` for this page"
        },
        "total": {
          "type": "integer",
          "description": "Unique failing tests after deduplication (may be subset on large runs). Excludes flaky tests: with `include_flaky=true` the combined list size is `total + totalFlakyTests`."
        },
        "totalFlakyTests": {
          "type": "integer",
          "description": "Unique flaky tests after deduplication; only present with `include_flaky=true`. Add to `total` for the size of the combined paginated list."
        },
        "nextPage": {
          "oneOf": [
            {
              "type": "integer"
            },
            {
              "type": "boolean",
              "enum": [
                false
              ]
            }
          ],
          "description": "Next page index (0-based), or false if no more pages. With `include_flaky=true` pages run over the combined failed+flaky ordering (`total + totalFlakyTests` entries), so flaky-only pages follow the failed ones."
        },
        "meta": {
          "type": "object",
          "properties": {
            "projectId": {
              "type": "string"
            },
            "runId": {
              "type": "string"
            }
          }
        },
        "environment": {
          "type": "object",
          "properties": {
            "framework": {
              "$ref": "#/$defs/ContextFramework"
            }
          }
        },
        "git": {
          "$ref": "#/$defs/ContextGit"
        }
      }
    },
    "ContextStep": {
      "type": "object",
      "description": "A test execution step (recursive structure)",
      "properties": {
        "title": {
          "type": "string",
          "description": "Step title/description"
        },
        "category": {
          "type": "string",
          "description": "Step category (e.g., pw:api)"
        },
        "duration": {
          "type": "integer",
          "description": "Duration in milliseconds"
        },
        "error": {
          "$ref": "#/$defs/ContextError"
        },
        "steps": {
          "type": "array",
          "description": "Nested child steps",
          "items": {
            "$ref": "#/$defs/ContextStep"
          }
        }
      }
    },
    "ContextTestData": {
      "type": "object",
      "required": [
        "level",
        "spec",
        "test",
        "error",
        "meta",
        "environment",
        "git"
      ],
      "properties": {
        "level": {
          "type": "string",
          "enum": [
            "test"
          ]
        },
        "spec": {
          "type": "string",
          "description": "Spec file path"
        },
        "test": {
          "type": "object",
          "properties": {
            "title": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Test title hierarchy"
            },
            "status": {
              "type": "string"
            },
            "attempt": {
              "type": "integer"
            },
            "totalAttempts": {
              "type": "integer"
            },
            "duration": {
              "type": "integer",
              "description": "Duration in milliseconds"
            }
          }
        },
        "error": {
          "$ref": "#/$defs/ContextError"
        },
        "otherAttempts": {
          "type": "array",
          "description": "Summary of other attempts for cross-attempt comparison",
          "items": {
            "type": "object",
            "properties": {
              "attempt": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "sameError": {
                "type": "boolean",
                "description": "Whether this attempt had the same error as the displayed attempt"
              },
              "error": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Simplified error summary (no stack/snippet)",
                "properties": {
                  "message": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "location": {
                    "$ref": "#/$defs/ContextErrorLocation"
                  }
                }
              }
            }
          }
        },
        "errorContext": {
          "allOf": [
            {
              "$ref": "#/$defs/ContextAsset"
            }
          ],
          "description": "Browser accessibility snapshot at time of failure, as a link that redirects to storage"
        },
        "traceErrorAnalysis": {
          "type": [
            "object",
            "null"
          ],
          "description": "Console entries and network requests from the error timeframe",
          "properties": {
            "consoleEntries": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "time": {
                    "type": "number"
                  },
                  "messageType": {
                    "type": "string"
                  },
                  "text": {
                    "type": "string"
                  },
                  "location": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "properties": {
                      "url": {
                        "type": "string"
                      },
                      "lineNumber": {
                        "type": "integer"
                      },
                      "columnNumber": {
                        "type": "integer"
                      }
                    }
                  }
                }
              }
            },
            "networkRequests": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "time": {
                    "type": "number"
                  },
                  "url": {
                    "type": "string"
                  },
                  "status": {
                    "type": "integer"
                  },
                  "method": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "failureContext": {
          "$ref": "#/$defs/ContextFailureContext"
        },
        "steps": {
          "type": "array",
          "description": "Test execution steps (omitted when detail=summary)",
          "items": {
            "$ref": "#/$defs/ContextStep"
          }
        },
        "stdout": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Standard output lines from the test"
        },
        "stderr": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Standard error lines from the test"
        },
        "assets": {
          "type": "object",
          "description": "Links to traces, screenshots, videos, and attachments. Each redirects to a signed storage URL.",
          "properties": {
            "traces": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/ContextAsset"
              }
            },
            "screenshots": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/ContextAsset"
              }
            },
            "videos": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/ContextAsset"
              }
            },
            "attachments": {
              "type": "array",
              "items": {
                "type": "object",
                "description": "Attachment with additional metadata",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "contentType": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string",
                    "description": "Short link to the artifact. It redirects (302) to a signed, time-limited storage URL, so the client must follow redirects. The link lasts as long as the signature it replaced. Compression applies to the response it redirects to: the object may be stored gzipped, so decompress when the response carries `Content-Encoding: gzip` or the body starts with the gzip magic bytes `0x1f 0x8b`."
                  }
                }
              }
            },
            "totals": {
              "type": [
                "object",
                "null"
              ],
              "description": "Total counts for each asset category. Only present when assets are limited (detail=compact or detail=summary)",
              "properties": {
                "traces": {
                  "type": "integer",
                  "description": "Total number of traces before limiting"
                },
                "screenshots": {
                  "type": "integer",
                  "description": "Total number of screenshots before limiting"
                },
                "videos": {
                  "type": "integer",
                  "description": "Total number of videos before limiting"
                },
                "attachments": {
                  "type": "integer",
                  "description": "Total number of attachments before limiting"
                }
              }
            }
          }
        },
        "meta": {
          "type": "object",
          "properties": {
            "projectId": {
              "type": "string"
            },
            "runId": {
              "type": "string"
            },
            "instanceId": {
              "type": "string"
            },
            "testId": {
              "type": "string"
            },
            "signature": {
              "type": "string"
            },
            "attempt": {
              "type": "integer"
            }
          }
        },
        "environment": {
          "type": "object",
          "properties": {
            "framework": {
              "$ref": "#/$defs/ContextFramework"
            },
            "platform": {
              "$ref": "#/$defs/ContextPlatform"
            },
            "project": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "git": {
          "$ref": "#/$defs/ContextGit"
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/currents-dev-context-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.