syncro: add hard rules block for POST idempotency and preview enforcement
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -23,6 +23,16 @@ Create, update, close, comment on, and bill tickets in Syncro PSA.
|
|||||||
**Rate limit:** 180 requests/minute per IP
|
**Rate limit:** 180 requests/minute per IP
|
||||||
**Docs:** https://api-docs.syncromsp.com/
|
**Docs:** https://api-docs.syncromsp.com/
|
||||||
|
|
||||||
|
## Hard Rules (violations have occurred — no exceptions)
|
||||||
|
|
||||||
|
**Before any POST:** Always show the full payload to the user and wait for explicit confirmation. This applies to tickets, comments, line items, and invoices — including hidden/internal notes.
|
||||||
|
|
||||||
|
**After any ambiguous POST result** (null fields, jq error, curl error, timeout): Do NOT retry. GET the resource first to confirm whether the action succeeded. Syncro has no idempotency on any endpoint — one POST always creates one record. Duplicate tickets and comments cannot be deleted via API; comments require manual GUI removal.
|
||||||
|
|
||||||
|
**Ticket response shape:** `{"ticket": {...}}` — always use `.ticket.id`, never `.id`. The flat-object jq pattern silently returns nulls and looks like failure when it isn't.
|
||||||
|
|
||||||
|
**Billing:** Always ask for minutes and labor type before adding any line item. Never assume a default.
|
||||||
|
|
||||||
## Implementation
|
## Implementation
|
||||||
|
|
||||||
When invoked, use the Syncro REST API via `curl`. All requests include `?api_key=<key>` as query parameter (NOT in header — Syncro uses query param auth).
|
When invoked, use the Syncro REST API via `curl`. All requests include `?api_key=<key>` as query parameter (NOT in header — Syncro uses query param auth).
|
||||||
|
|||||||
Reference in New Issue
Block a user