Portal Community

Node Configuration

{
  "nodeType": "EntityQuery",
  "name": "findPendingInvoices",
  "config": {
    "entityType": "invoice",
    "filter": {
      "status": "pending-approval",
      "vendorId": "$output.fetchVendor.entityId",
      "total": { "gte": 1000 }
    },
    "fields": ["invoiceNumber", "vendorId", "total", "submittedAt"],
    "orderBy": "submittedAt",
    "orderDirection": "asc",
    "page": 1,
    "pageSize": 50
  }
}

Filter Operators

OperatorExampleMeaning
exact match"status": "approved"Field equals value
gte"total": { "gte": 1000 }Greater than or equal
lte"total": { "lte": 5000 }Less than or equal
in"status": { "in": ["draft", "pending"] }Value in array
contains"description": { "contains": "travel" }Case-insensitive substring match
after"submittedAt": { "after": "2026-01-01" }Date after
before"submittedAt": { "before": "2026-06-01" }Date before

Node Output

{
  "items": [
    { "entityId": "inv-001", "data": { "invoiceNumber": "INV-001", "total": 2400.00 } },
    { "entityId": "inv-002", "data": { "invoiceNumber": "INV-002", "total": 1800.00 } }
  ],
  "totalCount": 12,
  "page": 1,
  "pageSize": 50
}

Iterating Results with ForEach

// ForEach node config — iterate query results:
{
  "nodeType": "ForEach",
  "name": "processEachInvoice",
  "config": {
    "items": "$output.findPendingInvoices.items",
    "itemAlias": "invoice"
  }
}
// Inside the loop body, access current item via $json:
// $json.entityId
// $json.data.invoiceNumber
// $json.data.total
Pagination: pageSize defaults to 50 and caps at 500. For large datasets, use multiple query nodes with incrementing page numbers, or use a Loop node that queries page-by-page until totalCount is exhausted. Loading all records in one call is not supported above 500.