NQD API queries and field semantics
Use one Core-owned query vocabulary across HTTP, dashboard reads, and generated client help.
Query-capable GET endpoints use filter, select, order, limit, cursor, count, and resource-approved search. Each operation exposes only the fields declared by Core. Writes use JSON bodies; DELETE uses path and headers. Unknown fields and oversized payloads are rejected.
Collection reads return a data array, even when a filter matches one record. Single-record reads return one object in data. POST and PUT return arrays for batch resource writes; commands that operate on one record return an object. A successful 204 response has no body. Each endpoint’s response schema defines its exact shape.
Paginated collections use limit and an opaque cursor. The response contains data and page.nextCursor/page.hasMore. The default limit is 25; each resource declares its maximum. count=exact is available only where the resource supports it.
Use filter expressions such as filter[status]=in.(pending,paid) and filter[createdAt]=gte.2026-01-01T00:00:00Z. Select fields with select=id,name,currency; select declared relations with select=id,name,client(id,name). Order with order=createdAt.desc,id.desc. No SQL, arbitrary expressions, or undeclared relations are accepted.
Directories are Core snapshots. They expose only declared fields, operators, and relations. Financial filters use runtime totals, modifiers, and effective transactions. Recurring templates describe schedules; the recurrence workflow creates due records.
Money is an exact decimal string. Database projections may retain trailing zeroes; do not convert authored values to floating-point numbers. Entry prices exclude VAT. Report/chart numbers keep their existing projection precision. Timestamps use the generated ISO contract; preserve all digits, including microseconds for stale-edit checks.
null clears a nullable field. If a field is required and nullable, include it with null when no value applies. Omit a field only when the schema marks it optional. POST and PUT use the writable resource representation. Send relationship IDs from the matching catalog or party resource.