GitHub
ESC

Queries

Overview

The CaidoQueries module provides pre-built GraphQL query strings for all Caido resources. Each sub-module corresponds to a Caido feature area.

Requests

Query HTTP request and response history:

# Get paginated requests
query = CaidoQueries::Requests.all(first: 20)
response = client.query(query)

# With filter
query = CaidoQueries::Requests.all(first: 10, filter: "host:example.com")
response = client.query(query)

# With pagination cursor
query = CaidoQueries::Requests.all(first: 10, after: "cursor-string")
response = client.query(query)

# Get by ID (includes full request/response details)
query = CaidoQueries::Requests.by_id("request-id")
response = client.query(query)

# Get by offset
query = CaidoQueries::Requests.by_offset(offset: 0, limit: 20, filter: "")
response = client.query(query)

Sitemap

Explore target site structure:

# Get root sitemap entries for a scope
query = CaidoQueries::Sitemap.root_entries(scope_id: "scope-id")
response = client.query(query)

# Get descendant entries (DIRECT children or ALL descendants)
query = CaidoQueries::Sitemap.descendant_entries(
  parent_id: "entry-id",
  depth: "DIRECT"
)
response = client.query(query)

# Get single entry
query = CaidoQueries::Sitemap.by_id("entry-id")
response = client.query(query)

Intercept

Query the proxy intercept queue:

# Get intercepted messages
query = CaidoQueries::Intercept.entries(first: 10)
response = client.query(query)

# Check intercept status
query = CaidoQueries::Intercept.status
response = client.query(query)

# Get intercept options
query = CaidoQueries::Intercept.options
response = client.query(query)

Scopes

Manage target scope definitions:

# List all scopes
query = CaidoQueries::Scopes.all
response = client.query(query)

# Get specific scope
query = CaidoQueries::Scopes.by_id("scope-id")
response = client.query(query)

Findings

Query security findings:

# List findings
query = CaidoQueries::Findings.all(first: 20)
response = client.query(query)

# Get specific finding
query = CaidoQueries::Findings.by_id("finding-id")
response = client.query(query)

# Get available reporters
query = CaidoQueries::Findings.reporters
response = client.query(query)

Replay & Automate

Work with replay and automated attack sessions:

# Replay sessions
query = CaidoQueries::Replay.sessions(first: 10)
response = client.query(query)

query = CaidoQueries::Replay.session_by_id("session-id")
response = client.query(query)

query = CaidoQueries::Replay.collections(first: 10)
response = client.query(query)

# Automate sessions
query = CaidoQueries::Automate.sessions(first: 10)
response = client.query(query)

query = CaidoQueries::Automate.session_by_id("session-id")
response = client.query(query)

query = CaidoQueries::Automate.tasks(first: 10)
response = client.query(query)

System Queries

Query system-level information:

# Current user info
query = CaidoQueries::Viewer.info
response = client.query(query)

# Runtime info (version, platform)
query = CaidoQueries::Runtime.info
response = client.query(query)

# Instance settings
query = CaidoQueries::InstanceSettings.get
response = client.query(query)

# DNS configuration
query = CaidoQueries::DNS.rewrites
query = CaidoQueries::DNS.upstreams

# Upstream proxies
query = CaidoQueries::UpstreamProxies.http
query = CaidoQueries::UpstreamProxies.socks

# Tamper rules
query = CaidoQueries::Tamper.rules
query = CaidoQueries::Tamper.rule_by_id("rule-id")

# Workflows
query = CaidoQueries::Workflows.all
query = CaidoQueries::Workflows.by_id("workflow-id")
query = CaidoQueries::Workflows.node_definitions

# Projects
query = CaidoQueries::Projects.current
query = CaidoQueries::Projects.all

# AI Assistant
query = CaidoQueries::Assistant.sessions
query = CaidoQueries::Assistant.models

# Environments
query = CaidoQueries::Environments.all
query = CaidoQueries::Environments.context

# Plugins
query = CaidoQueries::Plugins.packages