REST

Ingest's original engine. Only `{method,url,headers,params,data,json,timeout,allow_redirects,ssl,proxy}` are forwarded to the transport.

Errors are detected in band

A 4xx that is not 429 is an error. So is a 2xx whose body is not JSON (the first 200 characters are recorded), and so is a 2xx whose body matches the resource's error_path / error_conditions. An API that answers 200 OK with {"ok": false} has failed, and Ingest treats it that way.

Pagination

none | offset | page | cursor | link | next_url_in_body. Every paginator declares a stop condition. Offset paging always re-emits the limit parameter on later pages; page-numbered APIs use page, never offset; link follows RFC 5988 with a re-merged-params self-heal for servers that 400 or 422 on a bare next link. Stop precedence is has_more_path first, then a short page. Hard caps: 1000 pages, 500,000 records per work item. A response that switches between dict and list is fatal.

Credential proof

A trivial authenticated call. 404, 405 and 410 are not credential verdicts: they mean the path was wrong, not the key.