Query Process Runs
Process-run queries support process-template filters, typed parameter filters, relationship inclusion, visibility, ordering, and pagination.
Filter process templates
Use filter() for query fields and Field predicates for portable structured comparisons.
from recap.dsl.query import Field
runs = (
namespace.query_maker()
.process_runs()
.where(Field("process_template.name") == "Collect")
.where(Field("name").starts_with("Run-"))
.all()
)Filter parameters
filter_parameter() requires exactly one comparator. Use eq, range comparators, between, or membership with in_; pass step when parameter names repeat across steps.
query = namespace.query_maker()
exact = query.process_runs().filter_parameter(
"detector", eq="pilatus", step="Collect"
).all()
in_range = query.process_runs().filter_parameter(
"exposure", between=(0.1, 1.0), step="Collect"
).all()
selected = query.process_runs().filter_parameter(
"energy", in_=[8.0, 12.0, 16.0], value_type="float"
).all()Include run relationships
runs = (
query.process_runs()
.include_steps(include_parameters=True)
.include_resources()
.all()
)include_steps() loads steps; include_steps(include_parameters=True) also loads step parameters; include_resources() loads assigned resources and their child resources.
Include archived runs and paginate
runs = (
query.process_runs()
.include_archived()
.order_by(Field("create_date").desc())
.limit(25)
.offset(50)
.all()
)Archived runs are excluded by default. first() is equivalent to applying limit(1) and returning the first result.