Batch updates vs single record API calls

The current API documentation suggests that all write operations (POST, PATCH, DELETE) must be performed on individual records. However, for large-scale data synchronization scenarios — e.g., updating status on 10,000+ work orders nightly from an external ERP — this presents significant performance concerns.

Specifically, I am seeking clarification on the following:

  1. Does the FieldPulse API expose any batch or bulk endpoints (e.g., /batch, /bulk, or JSON:API-style compound documents) that would allow multiple records to be modified in a single request?
  2. If not, what is the recommended architecture for high-volume operations? I.e., should clients implement exponential backoff with jitter per RFC 7234, or are there higher rate limits available for authenticated integration partners?
  3. Are there any idempotency guarantees (e.g., Idempotency-Key headers per RFC 7230) to prevent duplicate records in the event of network partition during a long-running batch process?

I have reviewed API Rate Limits and Best Practices, but it does not address the batch semantics question directly. Any guidance on the intended pattern here would be appreciated.

Parents
  • Thank you for the detailed responses. A few follow-ups:

    @eli.torres — re: ENG-4421, is there a public issue tracker or changelog entry I can subscribe to for updates on idempotency support? Additionally, regarding sharding across multiple API keys: from a governance perspective, does FieldPulse treat this as acceptable use, or would it be considered a circumvention of rate limit policy (i.e., could result in key revocation)?

    @leo.nakamura — confirmed on the ETag pattern; we are already implementing conditional sync. However, I have observed that the last_modified field on work orders does not update when certain nested resources change (e.g., checklist responses). Is this expected behavior per the resource hierarchy, or should I file a separate issue?

    @devon.marsh — the webhook suggestion is noted, though our ERP requires transactional confirmation before state transition, so async updates introduce complexity we'd prefer to avoid. I will inquire with our CSM regarding integration tier access.

Reply
  • Thank you for the detailed responses. A few follow-ups:

    @eli.torres — re: ENG-4421, is there a public issue tracker or changelog entry I can subscribe to for updates on idempotency support? Additionally, regarding sharding across multiple API keys: from a governance perspective, does FieldPulse treat this as acceptable use, or would it be considered a circumvention of rate limit policy (i.e., could result in key revocation)?

    @leo.nakamura — confirmed on the ETag pattern; we are already implementing conditional sync. However, I have observed that the last_modified field on work orders does not update when certain nested resources change (e.g., checklist responses). Is this expected behavior per the resource hierarchy, or should I file a separate issue?

    @devon.marsh — the webhook suggestion is noted, though our ERP requires transactional confirmation before state transition, so async updates introduce complexity we'd prefer to avoid. I will inquire with our CSM regarding integration tier access.

Children
  • Quick clarifications:

    Multiple keys: Totally acceptable for legitimate architectural reasons (different services, env separation, etc.). What gets you in trouble is spinning up 50 keys just to blast through a limit — we have detection for that pattern. Your use case sounds legit.

    Idempotency tracking: No public tracker yet, unfortunately. I can add you to the early access list for the RFC if you email me directly.

    Nested resource modification: Yeah, that's a known inconsistency. Checklist responses updating work_order.modified_at was supposed to ship in 3.2 but got pulled due to perf concerns on large jobs. It's back in 3.4, currently in beta. Workaround is polling the checklist endpoint separately — not ideal, I know.