Loading...
Loading...
Build and validate HelixDB dynamic inline-query requests for POST /v1/query. Use when the task involves dynamic queries, inline query JSON, the inline AST (steps, predicates, expressions, projections), parameter_types, DateTime coercion, query warming, or debugging a request body sent directly to the Helix gateway. See REFERENCE.md for every AST variant and EXAMPLES.md for copy-pasteable payloads.
npx skill4agent add helixdb/skills helix-query-json-dynamicPOST /v1/queryqueryREFERENCE.mdREFERENCE.mdStepPredicateExprPropertyValueIndexSpecRepeatConfigBatchConditionEXAMPLES.mdRepeatChooseCoalesceUnionForEachPOST /v1/queryparameter_typesDateTimehelix-query-authoringAddNAddESetPropertyRemovePropertyDropDropEdgeDropEdgeLabeledDropEdgeByIdCreate*IndexDropIndexrequest_type: "write"queryDateTimePOST /v1/queryrequest_type"read""write"#[serde(rename_all = "lowercase")]queryReadBatchWriteBatchqueries.jsonparametersparameter_typesX-Helix-Warm: true{
"request_type": "read",
"query": {
"queries": [
{
"Query": {
"name": "node_exists",
"steps": ["Count"],
"condition": null
}
}
],
"returns": ["node_exists"]
},
"parameters": {
"name": "Alice",
"entity_id": 123
},
"parameter_types": {
"name": "String",
"entity_id": "I64"
}
}queryReadBatchWriteBatch{ "queries": [...], "returns": [...] }queriesBatchEntry{"Query": {...}}{"ForEach": {...}}"steps": ["Count"]Count{"Limit": 10}{"Has": ["name", {"String": "Alice"}]}REFERENCE.mdunknown variantinvalid typeE::Var(..)#[serde(...)]Step::Count"Count"Predicate::HasKey{"Var": <inner>}Step::N(NodeRef::Ids(vec![644])){"N": {"Ids": [644]}}{"Var": [a, b, ...]}Predicate::Eq("status", PropertyValue::String("active")){"Eq": ["status", {"String": "active"}]}Predicate::Between("score", 60, 100){"Between": ["score", {"I64": 60}, {"I64": 100}]}{"Var": {"field": ...}}Step::VectorSearchNodes { label, property, ... }{"VectorSearchNodes": {"label": "...", "property": "...", ...}}#[serde(untagged)]BatchQueryqueryReadBatchWriteBatch{"Read": ...}ProjectionProjectPropertyProjection{"source": "name", "alias": "name"}ExprProjection{"alias": "age_plus_one", "expr": {...}}{"Property": {...}}{"Expr": {...}}DynamicQueryValueparameters"limit": 25"tags": ["a","b"]"user": {"name": "Alice"}{"I64": 25}PropertyValueDynamicQueryRequestTyperename_all = "lowercase""read""write""Read""Write"nulltenant_valueconditionelse_traversalemit_predicateskip_serializing_if = "Option::is_none"nullPropertyValueDynamicQueryValueHasEqAddNPropertyInput::Value{"String": "..."}{"I64": 42}{"Bool": true}{"F64": 3.14}{"F64Array": [0.1, 0.2]}{"Null": null}"Null"parametersDateTimeparameter_types: {"p": "DateTime"}BytesUnsupportedBytesParameterBytes| Goal | | | Notes |
|---|---|---|---|
| Simple read | | | |
| Conditional step after prior step | | | Conditions: |
| Single mutation | | | See EXAMPLES.md §Write |
| Upsert | | Multi-entry: load → | See EXAMPLES.md §Upsert |
| Per-row iteration over a param | | | |
| Warm a read | | normal body + header | Returns |
REFERENCE.md{"N": {"Ids": [1,2]}}{"N": {"Var": "x"}}{"N": {"Param": "ids"}}{"NWhere": <SourcePredicate>}{"E": {...}}{"EWhere": <SourcePredicate>}{"VectorSearchNodes": {"label":"...","property":"...","query_vector":{...},"k":{...},"tenant_value":{...}}}{"TextSearchNodes": {...}}{"VectorSearchEdges": {...}}{"TextSearchEdges": {...}}{"Out": "LABEL"}{"Out": null}InBothOutEInEBothE"OutN""InN""OtherN"{"Has": ["prop", {"String": "v"}]}{"HasLabel": "User"}{"HasKey": "email"}{"Where": <Predicate>}"Dedup"{"Within": "var"}{"Without": "var"}{"EdgeHas": ["weight", {"Value": {"I64": 1}}]}{"EdgeHasLabel": "KNOWS"}{"Limit": 10}{"Skip": 5}{"Range": [0, 25]}{"LimitBy": {"Param": "n"}}{"SkipBy": ...}{"RangeBy": [<StreamBound>, <StreamBound>]}{"As": "x"}{"Store": "x"}{"Select": "x"}{"Inject": "x"}{"OrderBy": ["created_at", "Desc"]}{"OrderByMultiple": [["priority", "Desc"], ["name", "Asc"]]}{"Group": "status"}{"GroupCount": "status"}{"AggregateBy": ["Sum", "price"]}CountSumMinMaxMeanSubTraversal{"steps": [...]}{"Union": [{"steps":[...]}, {"steps":[...]}]}{"Choose": {"condition": <Predicate>, "then_traversal": {"steps":[...]}, "else_traversal": null}}{"Coalesce": [{"steps":[...]}, ...]}{"Optional": {"steps":[...]}}{"Repeat": {"traversal": {"steps":[{"Out":null}]}, "times": 3, "until": null, "emit": "After", "emit_predicate": null, "max_depth": 100}}emit"None""Before""After""All"{"Values": ["name", "email"]}{"ValueMap": ["$id", "name"]}{"ValueMap": null}{"Project": [{"source":"name","alias":"name"}, {"alias":"age_plus_one","expr":{"Add":[{"Property":"age"},{"Constant":{"I64":1}}]}}]}{"Property":...}{"Expr":...}"EdgeProperties""Count""Exists""Id""Label"{"AddN": {"label": "User", "properties": [["name", {"Value": {"String": "Alice"}}]]}}{"AddE": {"label": "FOLLOWS", "to": {"Ids":[42]}, "properties": []}}{"SetProperty": ["name", {"Value": {"String": "Bob"}}]}{"RemoveProperty": "temp"}"Drop"{"DropEdge": {"Ids": [42]}}{"DropEdgeLabeled": {"to": {...}, "label": "X"}}{"DropEdgeById": {"Ids": [7]}}{"CreateIndex": {"spec": <IndexSpec>, "if_not_exists": true}}{"DropIndex": {"spec": <IndexSpec>}}{"CreateVectorIndexNodes": {...}}CreateVectorIndexEdgesCreateTextIndexNodesCreateTextIndexEdges"Fold""Unfold""Path""SimplePath"{"WithSack": <PropertyValue>}{"SackSet": "prop"}{"SackAdd": "prop"}"SackGet"value_mapHas$id$label$distance$from$toedge_properties$distanceVectorSearchNodesVectorSearchEdgesTextSearchNodesTextSearchEdgesOutInBothOutNInNOtherNparameter_typesQueryParamType"Bool" | "I64" | "F64" | "F32" | "String" | "DateTime" | "Bytes" | "Value" | "Object"Array{"Array": "String"} // array of strings
{"Array": {"Array": "F64"}} // array of arrays of F64
{"Array": "Object"} // array of objectsDateTime{
"parameters": {"created_after": "2026-04-05T10:00:00Z"},
"parameter_types": {"created_after": "DateTime"}
}{
"parameters": {"statuses": ["active", "pending"]},
"parameter_types": {"statuses": {"Array": "String"}}
}{
"parameters": {"query_vector": [0.12, 0.44, 0.91]},
"parameter_types": {"query_vector": {"Array": "F64"}}
}BytesUnsupportedBytesParameterrequest_type: "read"request_type: "write""mcp""write"request_typeX-Helix-Warm: true204 No ContentqueryDynamicQueryRequest::read(...).to_json_string()parametersparameter_typesDateTimeX-Helix-Warm: truequeries.jsonqueryReadBatchWriteBatch"mcp""Read""Write"request_typeDateTimeparameter_typesBytesN.IdN.IdsN.VarN.Paramunknown variant 'Id', expected one of 'Ids', 'Var', 'Param'HasOrderBy[prop, Order]{prop: Order}Project{"Property": ...}{"Expr": ...}tests/register_metadata_tests.rsProjectionProjection#[serde(untagged)]DynamicQueryValuePOST /v1/queryrequest_type"read""write"queryReadBatchWriteBatchqueries[*]{"Query": {...}}{"ForEach": {...}}Querynamestepscondition"Count""Dedup""Exists""Id""Label""OutN""InN""OtherN""EdgeProperties""Drop"{"Has": ["name", {"String": "v"}]}{"VectorSearchNodes": {"label": ...}}ProjectPropertyValue{"I64": 1}parameters1parameter_typesDateTimeDateTimeparameter_typesBytesrequest_type"write"src/lib.rs:2506-2962Stepsrc/lib.rs:1548-1596Predicatesrc/lib.rs:1603-1626SourcePredicatesrc/lib.rs:1352-1384Exprsrc/lib.rs:972-1002PropertyValuesrc/lib.rs:1197-1202PropertyInputsrc/lib.rs:1232-1339NodeRefEdgeRefsrc/lib.rs:1888-1965PropertyProjectionExprProjectionProjectionsrc/lib.rs:2250-2323RepeatConfigsrc/lib.rs:1984-1993EmitBehaviorsrc/lib.rs:2327-2398IndexSpecsrc/lib.rs:4041-4078BatchConditionBatchEntryNamedQuerysrc/lib.rs:4089-4270ReadBatchWriteBatchBatchQuerysrc/lib.rs:4346-4452DynamicQueryRequestTypeDynamicQueryValueDynamicQueryRequestsrc/query_generator.rs:9-31QueryParamTypetests/register_metadata_tests.rs:182-186, 243-245, 274-275