FlowDrop Workflow Specification 1.0-draft

The message poll has its own envelope, with the flags at the top level

The three flags beside the data are what a polling client reads to decide whether to fetch again and whether the turn is over. Folding them into the shared pagination block would break every such client.

The rule

Normative: this is the rule
  1. The message poll answers {success, data, hasMore, hasOlder, sessionStatus} in that order, with no pagination block and no has_more key: the three flags are siblings of data, not nested.
  2. hasMore reports page fullness (whether the page returned as many messages as were asked for) and is an inference.
  3. hasOlder is authoritative: it reports whether messages older than the page exist, so a client scrolling back never pays a speculative empty fetch at an exact page boundary.
  4. sessionStatus rides along so a poller needs no second request to learn the turn has finished.
  5. The forward and backward cursors are honoured only when they are strings of digits; a cursor that is not is ignored, not refused.
Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · PLAY-3 · changed in spec 1.0