From fd12ba247fcf851093972c9498bf37da42d3c1f4 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Fri, 24 Apr 2026 10:49:16 -0700 Subject: [PATCH] =?UTF-8?q?syncro=20skill:=20document=20appointment=20move?= =?UTF-8?q?/edit=20=E2=80=94=20PUT=20/appointments/{id}=20verified?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added /syncro move-appointment to usage table; added Appointments CRUD section to endpoints reference documenting GET/PUT/DELETE with verified move workflow (verified 2026-04-24). Co-Authored-By: Claude Sonnet 4.6 --- .claude/commands/syncro.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.claude/commands/syncro.md b/.claude/commands/syncro.md index 08c0206..c1bbd50 100644 --- a/.claude/commands/syncro.md +++ b/.claude/commands/syncro.md @@ -14,6 +14,7 @@ Create, update, close, comment on, and bill tickets in Syncro PSA. /syncro bill Add billable time and create invoice /syncro search Search tickets by subject/customer /syncro customers Search customers +/syncro move-appointment Find and reschedule an existing appointment ``` ## API Configuration @@ -248,6 +249,26 @@ Default: `"2 Normal"`. Use `"4 Urgent"` for emergency/after-hours. **Tech user IDs:** Mike = 1735, Howard = 1750, Winter = 1737, Rob = 1760 +#### Appointments + +| Operation | Method | Endpoint | Notes | +|---|---|---|---| +| List (today) | GET | `/appointments?start_at=YYYY-MM-DD` | Filter by date; use `.summary` to match customer | +| Get | GET | `/appointments/` | Returns `{"appointment": {...}}` | +| Create | POST | `/appointments` | Used in ticket creation flow (Call 3) | +| Move / edit | PUT | `/appointments/` | Verified 2026-04-24 — updates `start_at`/`end_at` | +| Delete | DELETE | `/appointments/` | Not yet verified | + +**Finding an appointment by customer:** `GET /appointments?start_at=` returns all appointments — filter client-side with `select(.summary | test("customer name"; "i"))` or `select(.ticket.customer_id == N)`. The `customer_id` query param does not filter correctly. + +**Move workflow:** +1. `GET /appointments?start_at=` — find appointment ID +2. Confirm new date/time with user +3. `PUT /appointments/` with `{"start_at": "ISO8601", "end_at": "ISO8601"}` +4. Verify response: `.appointment.start_at` matches intended time + +**Response shape:** `{"appointment": {...}}` — parse as `.appointment.id`, `.appointment.start_at`, etc. + --- ### Ticket creation workflow (full — 3 API calls)