Pulse
Business intelligence for hospitality, media and tourism businesses across the US Virgin Islands.
appLines of business551 operationsid pulse
How it sits
An app is already assembled from parts, with a face of its own. The counts and the links below are from the platform's spec and the other services' own descriptions.
| Operations | 551 GET 266 · POST 204 · PATCH 39 · DELETE 21 · PUT 21 |
| Resources | 61 |
| Leaned on by | Executive assistant, E-signature |
| Leans on | none named |
| In recipes | none yet |
What it can do
551 operations in 61 resources, as the spec declares them. Each row is one call; paths are relative to the part.
supply
| Method | Path | Does |
|---|---|---|
| GET | /api/supply/budgets | List all supply budgets |
| GET | /api/supply/budgets/{business_id} | List budgets for a business |
| PUT | /api/supply/budgets/{business_id}/{year_month} | Set or update monthly supply budget |
| GET | /api/supply/inventory/dashboard/executive | Executive supply dashboard |
| GET | /api/supply/inventory/dashboard/{business_id} | Property supply dashboard |
| GET | /api/supply/inventory/low-stock | Items below reorder threshold |
| GET | /api/supply/inventory/search | Search supply requests and Clover mappings |
| GET | /api/supply/inventory/stock | List Clover stock levels |
| GET | /api/supply/orders | List supply orders |
| POST | /api/supply/orders | Create supply order |
| GET | /api/supply/orders/{order_id} | Get supply order |
| PATCH | /api/supply/orders/{order_id} | Update supply order |
| GET | /api/supply/pricing-kit/{business_id}/guide.xlsx | Price guide for a store (spreadsheet) |
| GET | /api/supply/pricing-kit/{business_id}/labels.pdf | Price labels for a store (PDF, Avery 5160) |
| GET | /api/supply/product-groups | List product groups |
| POST | /api/supply/product-groups | Create product group with variants |
| DELETE | /api/supply/product-groups/{group_id} | Delete product group |
| GET | /api/supply/product-groups/{group_id} | Get product group |
| PATCH | /api/supply/product-groups/{group_id} | Update product group |
| POST | /api/supply/product-groups/{group_id}/push-clover | Push product group to Clover |
| POST | /api/supply/product-groups/{group_id}/variants | Add a variant to a product group |
| GET | /api/supply/products | List supply products |
| POST | /api/supply/products | Create supply product |
| POST | /api/supply/products/push-clover | Push products to Clover |
| DELETE | /api/supply/products/{product_id} | Delete supply product |
| GET | /api/supply/products/{product_id} | Get supply product |
| PATCH | /api/supply/products/{product_id} | Update supply product |
| GET | /api/supply/requests | List supply requests |
| POST | /api/supply/requests | Create supply request |
| GET | /api/supply/requests/mine | My supply requests |
| GET | /api/supply/requests/pending | Pending supply requests (approved, not ordered) |
| GET | /api/supply/requests/{request_id} | Get supply request |
| POST | /api/supply/requests/{request_id}/approve | Approve supply request |
| POST | /api/supply/requests/{request_id}/reject | Reject supply request |
| GET | /api/supply/retail-clover/{business_id} | A store's products against its Clover items |
| POST | /api/supply/retail-clover/{business_id}/links | Link products to Clover items (null unlinks) |
| GET | /api/supply/retail-invoices | List retail invoices |
| POST | /api/supply/retail-invoices | Create a draft from a read invoice and match its lines |
| GET | /api/supply/retail-invoices/{invoice_id} | Invoice detail |
| PATCH | /api/supply/retail-invoices/{invoice_id} | Edit a draft |
| POST | /api/supply/retail-invoices/{invoice_id}/confirm | Confirm a draft: create new products and the expected shipment |
| POST | /api/supply/retail-invoices/{invoice_id}/discard | Discard Invoice |
| PATCH | /api/supply/retail-invoices/{invoice_id}/lines/{line_id} | Resolve or correct one line of a draft |
| GET | /api/supply/retail-notify-recipients | List retail recipients |
| POST | /api/supply/retail-notify-recipients | Add (or reactivate and update) a retail recipient |
| DELETE | /api/supply/retail-notify-recipients/{recipient_id} | Deactivate a retail recipient |
| GET | /api/supply/retail-requests | List retail requests |
| POST | /api/supply/retail-requests | File a retail request |
| PATCH | /api/supply/retail-requests/{request_id} | Decide, advance or cancel a retail request |
| GET | /api/supply/retail-shipments | List retail shipments |
| PUT | /api/supply/retail-shipments | Create or update a retail shipment |
| POST | /api/supply/retail-shipments/{shipment_id}/arrive | An island box has landed: split it between the island's stores |
| DELETE | /api/supply/retail-shipments/{shipment_id}/photos | Remove a photo reference from a retail shipment |
| POST | /api/supply/retail-shipments/{shipment_id}/photos | Attach a photo reference to a retail shipment |
| POST | /api/supply/retail-shipments/{shipment_id}/receive | Receive (count in) a retail shipment |
| PATCH | /api/supply/retail-shipments/{shipment_id}/tracking | Enter the tracking number on a shipment |
| GET | /api/supply/retail/me | Who am I in retail |
| DELETE | /api/supply/retail/people | Remove a person from retail |
| GET | /api/supply/retail/people | List retail people |
| PUT | /api/supply/retail/people | Set a person's stores and mail |
| GET | /api/supply/shipments | List supply shipments |
| POST | /api/supply/shipments | Create supply shipment |
| GET | /api/supply/shipments/overdue | List overdue shipments |
| GET | /api/supply/shipments/{shipment_id} | Get supply shipment |
| POST | /api/supply/shipments/{shipment_id}/status | Update shipment status |
| GET | /api/supply/vendors | List active supply vendors |
| POST | /api/supply/vendors | Create supply vendor |
| GET | /api/supply/vendors/categories | List supply categories |
| GET | /api/supply/vendors/{vendor_id} | Get supply vendor |
| PATCH | /api/supply/vendors/{vendor_id} | Update supply vendor |
70 operations
ops
| Method | Path | Does |
|---|---|---|
| GET | /api/ops/businesses/{business_id}/briefing | The manager's shift-start note, from the day's one read (management) |
| GET | /api/ops/businesses/{business_id}/channels | The property's department channels, with the last line in each |
| GET | /api/ops/businesses/{business_id}/channels/{channel}/messages | A channel's lines, oldest first; ``after`` for polling |
| POST | /api/ops/businesses/{business_id}/channels/{channel}/messages | Say something in a channel |
| GET | /api/ops/businesses/{business_id}/checklist-runs | Checklist runs for a period (default: today) |
| POST | /api/ops/businesses/{business_id}/checklist-runs | Start (or resume) a run of a checklist for today — idempotent |
| POST | /api/ops/businesses/{business_id}/checklist-runs/{run_id}/complete | Mark a run complete |
| PATCH | /api/ops/businesses/{business_id}/checklist-runs/{run_id}/items/{run_item_id} | Tick or untick one item |
| GET | /api/ops/businesses/{business_id}/checklists | Checklist templates at a property |
| POST | /api/ops/businesses/{business_id}/checklists | Create a checklist template (management) |
| PATCH | /api/ops/businesses/{business_id}/checklists/{checklist_id} | Rename, re-home, reorder or archive a template (management) |
| PUT | /api/ops/businesses/{business_id}/checklists/{checklist_id}/items | Replace a template's items, in order (management) |
| GET | /api/ops/businesses/{business_id}/day-passes | ResortPass day passes at the pool for a date (default the property's today) |
| GET | /api/ops/businesses/{business_id}/day-passes/outlook | Day passes for the coming days: bookings, arrivals, sold against capacity |
| GET | /api/ops/businesses/{business_id}/day-passes/pace | How day passes are booking: recent, ahead, lead time, cancellations (management) |
| GET | /api/ops/businesses/{business_id}/guest-qr | Every room's guest-request link, to print as QR codes (management) |
| POST | /api/ops/businesses/{business_id}/guest-qr/rotate | Void every printed room code and issue new ones (management) |
| POST | /api/ops/businesses/{business_id}/housekeeping/refresh | Pull housekeeping status from Cloudbeds now (throttled to once a minute) |
| PUT | /api/ops/businesses/{business_id}/housekeeping/{room_id}/condition | Mark a room clean or dirty — writes to Cloudbeds, then mirrors locally |
| GET | /api/ops/businesses/{business_id}/inventory-alerts | Inventory alerts at a property |
| POST | /api/ops/businesses/{business_id}/inventory-alerts | Log an inventory alert |
| PATCH | /api/ops/businesses/{business_id}/inventory-alerts/{alert_id} | Update an inventory alert |
| GET | /api/ops/businesses/{business_id}/moke-rentals | Moke rentals covering a date (default the property's today) |
| GET | /api/ops/businesses/{business_id}/requests | Guest requests at a property |
| POST | /api/ops/businesses/{business_id}/requests | Log a guest request |
| PATCH | /api/ops/businesses/{business_id}/requests/{request_id} | Update a guest request (status, department, assignee) |
| GET | /api/ops/businesses/{business_id}/resortpass/reviews | ResortPass guest reviews: the summary and the latest (management) |
| GET | /api/ops/businesses/{business_id}/spa-appointments | Cojilio spa appointments for a date (default the property's today) |
| GET | /api/ops/businesses/{business_id}/tasks | Tasks at a property |
| POST | /api/ops/businesses/{business_id}/tasks | Create a task |
| GET | /api/ops/businesses/{business_id}/tasks/{task_id} | A task with its comments and activity |
| PATCH | /api/ops/businesses/{business_id}/tasks/{task_id} | Update a task |
| POST | /api/ops/businesses/{business_id}/tasks/{task_id}/comments | Comment on a task |
| GET | /api/ops/businesses/{business_id}/today | The property's day in one read: rooms, arrivals, requests, tickets, tasks, checklists |
| POST | /api/ops/guest/{slug}/requests | A guest's request from their room's code (service callers only) |
| GET | /api/ops/guest/{slug}/room | What the guest page shows for a room's code (service callers only) |
36 operations
fb
| Method | Path | Does |
|---|---|---|
| POST | /api/fb/auth | PIN login |
| POST | /api/fb/auth/logout | Logout |
| GET | /api/fb/auth/me | Current FB user |
| GET | /api/fb/budgets | List budgets |
| PUT | /api/fb/budgets | Create or update budget |
| POST | /api/fb/budgets/auto-run | Auto-set monthly F&B budgets from prior-month Clover actuals (#499) |
| GET | /api/fb/businesses | List F&B businesses |
| GET | /api/fb/dashboard/{business_id} | Dashboard data |
| GET | /api/fb/graphs | List available graph reports |
| GET | /api/fb/graphs/budget-pacing | Budget pacing — cumulative spend vs target |
| GET | /api/fb/graphs/portfolio-overview | All businesses — spend vs budget snapshot |
| GET | /api/fb/graphs/spend-by-category | Food vs Drink spend breakdown |
| GET | /api/fb/graphs/spend-by-vendor | Top vendors by spend |
| GET | /api/fb/graphs/spend-vs-budget | Spend vs Budget over time |
| GET | /api/fb/invoices | List pending F&B invoices for the caller's businesses |
| POST | /api/fb/invoices/recategorize | Recategorize the pending 'general' pile against the current vendor list |
| GET | /api/fb/invoices/unmapped-vendors | Rank pending 'general' invoice vendors NOT yet in the F&B list |
| GET | /api/fb/invoices/{invoice_id} | Get a single F&B invoice by id (detail: line items + source doc) |
| PATCH | /api/fb/invoices/{invoice_id} | Correct a mis-extracted / mis-routed F&B invoice |
| POST | /api/fb/invoices/{invoice_id}/approve | Approve an F&B invoice — creates and links an fb_order |
| POST | /api/fb/invoices/{invoice_id}/not-fb | Mark an invoice 'not F&B' — drops it from the lane without rejecting |
| POST | /api/fb/invoices/{invoice_id}/reject | Reject a pending F&B invoice with a reason |
| GET | /api/fb/orders | List orders |
| POST | /api/fb/orders | Create order |
| DELETE | /api/fb/orders/{order_id} | Void order |
| GET | /api/fb/orders/{order_id} | Get order |
| PUT | /api/fb/orders/{order_id} | Update order |
| GET | /api/fb/statements | F&B statements queue |
| GET | /api/fb/statements/{statement_id} | Get Fb Statement |
| POST | /api/fb/statements/{statement_id}/approve | Approve a statement — books one fb_order per referenced invoice |
| POST | /api/fb/statements/{statement_id}/reject | Reject a statement; voids any booked orders |
| GET | /api/fb/vendors | List F&B vendors |
| POST | /api/fb/vendors | Add an F&B vendor (Pulse#332 — widen categorization coverage) |
| PATCH | /api/fb/vendors/{vendor_id} | Edit / deactivate an F&B vendor or its aliases |
34 operations
hr
| Method | Path | Does |
|---|---|---|
| DELETE | /api/hr/agreements/{agreement_id} | Delete an agreement + its documents (manager only) |
| PATCH | /api/hr/agreements/{agreement_id} | Partially update an agreement (manager only) |
| GET | /api/hr/agreements/{agreement_id}/documents | List an agreement's documents, newest first, each signed |
| POST | /api/hr/agreements/{agreement_id}/documents | Attach an original/executed document; replaces the same role |
| DELETE | /api/hr/agreements/{agreement_id}/documents/{doc_id} | Detach an agreement document; row + best-effort Files delete |
| GET | /api/hr/alerts | List HR lifecycle alerts |
| POST | /api/hr/alerts/{alert_id}/resolve | Resolve an HR lifecycle alert |
| GET | /api/hr/dashboard | Portfolio HR overview (CJ executive view) |
| GET | /api/hr/dashboard/{business_id} | Property HR summary (GM view) |
| GET | /api/hr/employees/{employee_id}/agreements | List an employee's agreements, newest first, with signed docs |
| POST | /api/hr/employees/{employee_id}/agreements | Create an employment agreement for an employee (manager only) |
| GET | /api/hr/employees/{employee_id}/documents | List an employee's general documents, newest first, each signed |
| POST | /api/hr/employees/{employee_id}/documents | Attach a general document to an employee file (manager only) |
| DELETE | /api/hr/employees/{employee_id}/documents/{doc_id} | Detach an employee document; row + best-effort Files delete |
| POST | /api/hr/handbook/ask | Grounded handbook Q&A (AI over hr_handbook_policies) |
| POST | /api/hr/maintenance/backfill-doc-keys | Backfill legacy HR doc file_ids to full object keys (sysop; Pulse#496) |
| POST | /api/hr/separations/letter | Upload a resignation/separation letter to Files (manager only) |
| GET | /api/hr/separations/{employee_id}/documents | List a separation's documents, newest first, each with a signed url |
| POST | /api/hr/separations/{employee_id}/documents | Attach a supporting document to a separation (manager only) |
| DELETE | /api/hr/separations/{employee_id}/documents/{doc_id} | Detach a document; removes the row + best-effort Files delete |
| GET | /api/hr/status-report | HR Queue — pending items + overdue across all entities |
| GET | /api/hr/trends | Monthly team-health trend series (Pulse#516) |
| POST | /api/hr/writeup/narrate | Generate voice-bible compliant writeup prose |
23 operations
print-design
| Method | Path | Does |
|---|---|---|
| GET | /api/print-design/brands | Brands |
| GET | /api/print-design/docs | List Docs |
| POST | /api/print-design/docs | Create Doc |
| DELETE | /api/print-design/docs/{doc_id} | Delete Doc |
| GET | /api/print-design/docs/{doc_id} | Get Doc |
| PATCH | /api/print-design/docs/{doc_id} | Update Doc |
| GET | /api/print-design/docs/{doc_id}/ai-art | Ai Art Status |
| POST | /api/print-design/docs/{doc_id}/ai-art | Start Ai Art |
| POST | /api/print-design/docs/{doc_id}/ai-art/use | Use Ai Art |
| POST | /api/print-design/docs/{doc_id}/approve | Approve Doc |
| POST | /api/print-design/docs/{doc_id}/copy | Copy Doc |
| POST | /api/print-design/docs/{doc_id}/menu-changes | Read Menu Changes |
| GET | /api/print-design/docs/{doc_id}/pdf | Doc Pdf |
| DELETE | /api/print-design/docs/{doc_id}/photo | Clear Photo |
| POST | /api/print-design/docs/{doc_id}/photo | Set Photo |
| GET | /api/print-design/docs/{doc_id}/png | Doc Png |
| POST | /api/print-design/docs/{doc_id}/render | Render Doc |
| POST | /api/print-design/from-draft | Graphic From Draft |
| POST | /api/print-design/menu-paste | Read Menu Paste |
| GET | /api/print-design/photos | Search Photos |
20 operations
invoices
| Method | Path | Does |
|---|---|---|
| GET | /api/invoices | List invoices |
| POST | /api/invoices | Create an invoice |
| GET | /api/invoices/attribution-drift | Invoices the silent first-active fallback misfiled (Pulse#565) |
| GET | /api/invoices/audit | Paginated invoice list for audit |
| GET | /api/invoices/audit/{invoice_id} | Invoice audit detail with source data |
| PATCH | /api/invoices/audit/{invoice_id} | Correct invoice fields |
| POST | /api/invoices/audit/{invoice_id}/reprocess | Re-run extraction on a record's stored source pages |
| GET | /api/invoices/audit/{invoice_id}/source-images | Signed URLs for invoice source-page images |
| POST | /api/invoices/check-alerts | Check invoice and budget alerts |
| GET | /api/invoices/dedup-coverage | Which dedup keys are populated, and the residual duplicate exposure |
| GET | /api/invoices/duplicate-orders | One purchase ingested as several invoices (Pulse#563 follow-up) |
| POST | /api/invoices/ingest | Ingest invoices from email |
| GET | /api/invoices/pending | List pending invoices |
| POST | /api/invoices/process | Match and auto-approve invoices |
| GET | /api/invoices/stats | Invoice stats by status and business |
| POST | /api/invoices/upload | Upload a document via the centralized pipeline |
| GET | /api/invoices/{invoice_id} | Get invoice by ID |
| POST | /api/invoices/{invoice_id}/approve | Approve an invoice |
| POST | /api/invoices/{invoice_id}/reject | Reject an invoice |
19 operations
nosj
| Method | Path | Does |
|---|---|---|
| POST | /api/nosj/articles/batch | Mode 3: Batch Production (#346) |
| POST | /api/nosj/articles/refresh | Mode 2: Article Refresh (#345) |
| GET | /api/nosj/drafts | List NOSJ article drafts |
| GET | /api/nosj/drafts/{article_id} | Get a NOSJ article draft |
| PATCH | /api/nosj/drafts/{article_id} | Edit a NOSJ draft (title / body) |
| POST | /api/nosj/drafts/{article_id}/publish | Publish a NOSJ draft to WordPress |
| POST | /api/nosj/drafts/{article_id}/reject | Reject a NOSJ draft |
| POST | /api/nosj/editorial/full-pipeline/plan | Mode 5: Full Pipeline — Plan (#348) |
| POST | /api/nosj/editorial/full-pipeline/produce | Mode 5: Full Pipeline — Produce (#348) |
| POST | /api/nosj/editorial/plan | Mode 4: Editorial Planning (#347) |
| GET | /api/nosj/jobs/{job_id} | Mode 3: Batch job status (#346) |
| GET | /api/nosj/monitoring/jobs | Mode 6: List monitoring jobs (#349) |
| POST | /api/nosj/monitoring/jobs | Mode 6: Configure a monitoring job (#349) |
| POST | /api/nosj/monitoring/jobs/{job_id}/activate | Mode 6: Activate a monitoring job (#349) |
| POST | /api/nosj/monitoring/jobs/{job_id}/deactivate | Mode 6: Deactivate a monitoring job (#349) |
| POST | /api/nosj/monitoring/jobs/{job_id}/run | Mode 6: Run a sweep (cron-triggered, #349) |
| POST | /api/nosj/single | Mode 1: Single Article (#344) |
| POST | /api/nosj/single/async | Mode 1 async: Single Article, returns a job id (#573) |
18 operations
dinner
| Method | Path | Does |
|---|---|---|
| POST | /api/dinner/businesses/{business_id}/bookings | Add a phone or walk-in booking (staff) |
| POST | /api/dinner/businesses/{business_id}/bookings/{booking_id}/status | Mark a party arrived / no-show / cancelled (staff) |
| GET | /api/dinner/businesses/{business_id}/events | The upcoming dinners to manage — the schedule (staff) |
| POST | /api/dinner/businesses/{business_id}/events | Add a specific dinner date — a one-off (staff) |
| PATCH | /api/dinner/businesses/{business_id}/events/{event_id} | Edit the menu, name, layout or status of a dinner (staff) |
| POST | /api/dinner/businesses/{business_id}/events/{event_id}/costs | Add a cost or actual-revenue line to a dinner's P&L (staff) |
| DELETE | /api/dinner/businesses/{business_id}/events/{event_id}/costs/{cost_id} | Remove a cost/revenue line from a dinner's P&L (staff) |
| POST | /api/dinner/businesses/{business_id}/events/{event_id}/labor/pull-homebase | Pull the day's F&B labor from Homebase (staff) |
| GET | /api/dinner/businesses/{business_id}/events/{event_id}/pnl | A dinner's cost/revenue statement — projected vs actual, profit (staff) |
| POST | /api/dinner/businesses/{business_id}/events/{event_id}/revenue/pull-clover | Pull the night's actual revenue from Clover (windowed, staff) |
| GET | /api/dinner/businesses/{business_id}/next | A dinner with its bookings and inventory (next, or ?event_id=) (staff) |
| PUT | /api/dinner/businesses/{business_id}/series | Create or update a property's dinner series (management, one-time setup) |
| POST | /api/dinner/{slug}/bookings | Book a party (service callers only) |
| POST | /api/dinner/{slug}/bookings/{cancel_token}/cancel | Cancel a booking by its token (service callers only) |
| GET | /api/dinner/{slug}/events | Upcoming dinners a guest can book (service callers only) |
| GET | /api/dinner/{slug}/next | A dinner for a property (next, or ?event_id=) (service callers only) |
| GET | /api/dinner/{slug}/options | What a party size can book, per wave (service callers only) |
17 operations
marketing-content
| Method | Path | Does |
|---|---|---|
| POST | /api/marketing-content/admin/discard-failed | Discard Failed |
| POST | /api/marketing-content/admin/purge | Purge |
| GET | /api/marketing-content/drafts | List All |
| DELETE | /api/marketing-content/drafts/{draft_id} | Discard |
| GET | /api/marketing-content/drafts/{draft_id} | Get One |
| PATCH | /api/marketing-content/drafts/{draft_id} | Patch One |
| POST | /api/marketing-content/drafts/{draft_id}/approve | Approve |
| POST | /api/marketing-content/drafts/{draft_id}/push | Push |
| POST | /api/marketing-content/drafts/{draft_id}/regenerate | Regenerate |
| POST | /api/marketing-content/drafts/{draft_id}/retry | Retry |
| POST | /api/marketing-content/generate | Generate |
| POST | /api/marketing-content/imagegen/jobs | Imagegen Submit |
| GET | /api/marketing-content/imagegen/jobs/{job_id} | Imagegen Status |
| GET | /api/marketing-content/imagegen/jobs/{job_id}/image | Imagegen Image |
| GET | /api/marketing-content/settings | Get Settings |
| PUT | /api/marketing-content/settings | Put Settings |
| GET | /api/marketing-content/vista/check | Vista Check |
17 operations
employees
| Method | Path | Does |
|---|---|---|
| GET | /api/employees | List employees |
| GET | /api/employees/former | Former employees (terminated + inactive) |
| GET | /api/employees/headcount-history | Headcount history |
| GET | /api/employees/overtime-alerts | Get overtime and staffing alerts |
| GET | /api/employees/summary | Batched per-employee summary for preset filters (Pulse#407) |
| GET | /api/employees/{employee_id} | Get employee detail |
| GET | /api/employees/{employee_id}/compliance | Get compliance documents |
| PUT | /api/employees/{employee_id}/compliance | Add or update compliance document |
| GET | /api/employees/{employee_id}/compliance-documents/{doc_id}/document-url | Resolve a compliance document to a viewable PDF URL (Pulse#493) |
| GET | /api/employees/{employee_id}/compliance-documents/{doc_id}/document.pdf | Stream a compliance document's PDF (live E-signature fallback) |
| PATCH | /api/employees/{employee_id}/contact | Set/correct an employee's email and phone (manager+) |
| GET | /api/employees/{employee_id}/discipline | Get discipline history |
| POST | /api/employees/{employee_id}/discipline | Record discipline step |
| GET | /api/employees/{employee_id}/file | Employee File — full HR record in one call |
| GET | /api/employees/{employee_id}/recommended-action | AI recommended disciplinary action |
| GET | /api/employees/{employee_id}/termination-risk | AI termination risk assessment |
16 operations
payroll
| Method | Path | Does |
|---|---|---|
| GET | /api/payroll/contractors | List contractor pay periods |
| GET | /api/payroll/countdown | Payroll countdown widget |
| GET | /api/payroll/exceptions | List timesheet exceptions |
| POST | /api/payroll/exceptions/{exception_id}/resolve | Resolve timesheet exception |
| GET | /api/payroll/labor-cost | Labor cost by pay period |
| GET | /api/payroll/overtime-history | Rolling OT history |
| GET | /api/payroll/overtime-tracking | Current pay-period OT tracking |
| GET | /api/payroll/periods | List pay periods |
| POST | /api/payroll/periods/{period_id}/approve | Approve payroll period |
| POST | /api/payroll/periods/{period_id}/export-paychex | Export to Paychex Flex |
| GET | /api/payroll/periods/{period_id}/package | Get payroll package |
| POST | /api/payroll/periods/{period_id}/reject | Reject payroll period |
| GET | /api/payroll/variance | Payroll variance report |
13 operations
writeups
| Method | Path | Does |
|---|---|---|
| GET | /api/writeups | List write-ups |
| POST | /api/writeups | Create write-up |
| POST | /api/writeups/import | Import a legacy (on-file, pre-Pulse) write-up with its scan |
| GET | /api/writeups/{writeup_id} | Get write-up detail |
| PATCH | /api/writeups/{writeup_id} | Update a draft write-up |
| POST | /api/writeups/{writeup_id}/approve | Approve a draft write-up (ready to send) |
| POST | /api/writeups/{writeup_id}/cancel | Cancel a write-up (allowed before sent) |
| GET | /api/writeups/{writeup_id}/document-url | Mint a fresh PDF URL for a write-up's envelope |
| GET | /api/writeups/{writeup_id}/document.pdf | Stream a write-up's PDF (live BoldSign envelopes) |
| POST | /api/writeups/{writeup_id}/recall | Recall an in-flight writeup (manager) |
| POST | /api/writeups/{writeup_id}/remind | Send BoldSign reminder for an outstanding writeup |
| POST | /api/writeups/{writeup_id}/send | Send write-up to employee via BoldSign (routed through E-signature) |
| POST | /api/writeups/{writeup_id}/void | Void / discard an undispatched write-up (manager) |
13 operations
admin
| Method | Path | Does |
|---|---|---|
| POST | /api/admin/employees/manual | Create a manual (non-Homebase) employee (sysop only) |
| POST | /api/admin/employees/merge | Merge a duplicate employee into a canonical employee |
| GET | /api/admin/employees/merge-candidates | List employee merge candidates |
| PATCH | /api/admin/employees/{employee_id} | Edit employee identity fields (sysop only) |
| POST | /api/admin/employees/{employee_id}/exclude | Mark a spurious row as not-an-employee (sysop only) |
| GET | /api/admin/employees/{employee_id}/last-clock-in | Latest Homebase clock-in for an employee (Separation wizard prefill) |
| POST | /api/admin/employees/{employee_id}/mark-manual | Flip an Airtable-source employee to source='manual' (sysop only) |
| POST | /api/admin/employees/{employee_id}/rehire | Re-hire a terminated or inactive employee (sysop only) |
| POST | /api/admin/employees/{employee_id}/terminate | Terminate an employee with full defensibility trail (sysop only) |
| POST | /api/admin/employees/{employee_id}/terminate/send-notice | Send the BoldSign termination acknowledgement notice (sysop only) |
| POST | /api/admin/writeups/{writeup_id}/force-cancel | Force-cancel a writeup in any status (sysop only) |
11 operations
finance
| Method | Path | Does |
|---|---|---|
| GET | /api/finance/deadlines | Get upcoming deadlines |
| POST | /api/finance/deadlines | Create financial deadline |
| POST | /api/finance/deadlines/{deadline_id}/complete | Mark deadline completed |
| GET | /api/finance/edc/obligations | List EDC compliance obligations |
| POST | /api/finance/edc/obligations/{deadline_id}/approve | Approve EDC report |
| GET | /api/finance/edc/obligations/{deadline_id}/draft | Generate EDC draft report |
| GET | /api/finance/exceptions | Get finance exceptions |
| GET | /api/finance/payables | Get payables queue |
| GET | /api/finance/pnl | Get P&L statement |
| GET | /api/finance/variances | Get variance report |
10 operations
signals
| Method | Path | Does |
|---|---|---|
| GET | /api/signals | List marketing signals |
| GET | /api/signals/summary | Signal summary counts |
| GET | /api/signals/thresholds/{business_id} | List thresholds for a business |
| POST | /api/signals/thresholds/{business_id} | Create a signal threshold |
| DELETE | /api/signals/thresholds/{threshold_id} | Delete a signal threshold |
| PUT | /api/signals/thresholds/{threshold_id} | Update a signal threshold |
| GET | /api/signals/{signal_id} | Get signal by ID |
| POST | /api/signals/{signal_id}/acknowledge | Acknowledge a signal |
| POST | /api/signals/{signal_id}/action | Action a signal |
| POST | /api/signals/{signal_id}/dismiss | Dismiss a signal |
10 operations
brands
| Method | Path | Does |
|---|---|---|
| DELETE | /api/brands/{business_id} | Delete brand profile |
| GET | /api/brands/{business_id} | Get brand profile |
| PUT | /api/brands/{business_id} | Upsert brand profile |
| POST | /api/brands/{business_id}/apply-voice | Apply brand voice to text |
| GET | /api/brands/{business_id}/voice-edits | List voice edits |
| GET | /api/brands/{slug}/events | List expanded brand-event occurrences in a date range |
| POST | /api/brands/{slug}/events | Create a brand event (one-off or recurring) |
| DELETE | /api/brands/{slug}/events/{event_id} | Delete a brand event |
| PATCH | /api/brands/{slug}/events/{event_id} | Update a brand event (incl. proposed -> confirmed) |
9 operations
edc
| Method | Path | Does |
|---|---|---|
| GET | /api/edc/annual-package/{year} | Get annual compliance package |
| GET | /api/edc/calendar | Get filing calendar |
| GET | /api/edc/conditions | Get conditions status board |
| POST | /api/edc/conditions/{condition_number}/proof | Attach proof to condition |
| GET | /api/edc/filings | List EDC filings |
| POST | /api/edc/filings | Create filing record |
| PATCH | /api/edc/filings/{filing_id} | Update filing record |
| GET | /api/edc/obligations | List EDC obligations |
| GET | /api/edc/obligations/{obligation_id} | Get obligation detail |
9 operations
onboarding
| Method | Path | Does |
|---|---|---|
| GET | /api/onboarding | List onboarding packets |
| POST | /api/onboarding | Create onboarding packet |
| POST | /api/onboarding/quick-send | Create + dispatch an onboarding packet using the property's default template |
| GET | /api/onboarding/{ob_id} | Get onboarding detail |
| POST | /api/onboarding/{ob_id}/cancel | Cancel onboarding packet |
| GET | /api/onboarding/{ob_id}/document-url | Mint a fresh PDF URL for an onboarding packet |
| GET | /api/onboarding/{ob_id}/document.pdf | Stream an onboarding packet's PDF (live BoldSign envelopes) |
| POST | /api/onboarding/{ob_id}/remind | Send BoldSign reminder for an outstanding onboarding packet |
| POST | /api/onboarding/{ob_id}/send | Send onboarding packet via E-signature |
9 operations
reports
| Method | Path | Does |
|---|---|---|
| GET | /api/reports/daily-ops-digest | Get Daily Ops Digest |
| POST | /api/reports/generate/daily-ops-digest | Generate Daily Ops Digest |
| POST | /api/reports/generate/inventory-snapshot | Generate Inventory Snapshot |
| POST | /api/reports/generate/labor-period | Generate Labor Period |
| POST | /api/reports/generate/weekly-revenue-intel | Generate Weekly Revenue Intel |
| GET | /api/reports/inventory-snapshot | Get Inventory Snapshot |
| GET | /api/reports/labor-period | Get Labor Period |
| POST | /api/reports/render-and-send | Render and send a config-driven report |
| GET | /api/reports/weekly-revenue-intel | Get Weekly Revenue Intel |
9 operations
businesses
| Method | Path | Does |
|---|---|---|
| GET | /api/businesses | List businesses |
| GET | /api/businesses/{business_id} | Get business by ID |
| GET | /api/businesses/{business_id}/housekeeping | Housekeeping status |
| GET | /api/businesses/{business_id}/occupancy | Hotel occupancy metrics |
| GET | /api/businesses/{business_id}/occupancy/history | Occupancy history |
| GET | /api/businesses/{business_id}/reservations | List reservations |
| GET | /api/businesses/{business_id}/reservations/upcoming | Upcoming arrivals |
| GET | /api/businesses/{business_id}/sales/items | Get item-level sales data |
8 operations
tickets
| Method | Path | Does |
|---|---|---|
| GET | /api/tickets | List maintenance tickets |
| POST | /api/tickets | Create a maintenance ticket |
| GET | /api/tickets/{ticket_id} | Get ticket by ID |
| PUT | /api/tickets/{ticket_id} | Update ticket fields |
| POST | /api/tickets/{ticket_id}/assign | Assign a ticket |
| POST | /api/tickets/{ticket_id}/close | Close a ticket |
| POST | /api/tickets/{ticket_id}/photos | Append a photo reference to a ticket |
| POST | /api/tickets/{ticket_id}/resolve | Resolve a ticket |
8 operations
campaigns
| Method | Path | Does |
|---|---|---|
| GET | /api/campaigns | List campaign proposals |
| POST | /api/campaigns/generate | Generate AI campaign proposal |
| GET | /api/campaigns/{proposal_id} | Get campaign proposal |
| POST | /api/campaigns/{proposal_id}/approve | Approve campaign proposal |
| PATCH | /api/campaigns/{proposal_id}/channels/{channel}/edit | Edit channel content |
| POST | /api/campaigns/{proposal_id}/regenerate | Regenerate campaign content |
| POST | /api/campaigns/{proposal_id}/reject | Reject campaign proposal |
7 operations
compliance
| Method | Path | Does |
|---|---|---|
| POST | /api/compliance/analyze | Run compliance analysis for a violation |
| GET | /api/compliance/handbook/{business_id} | Handbook policies for a business |
| GET | /api/compliance/items | List compliance items |
| POST | /api/compliance/items | Create a compliance item |
| PATCH | /api/compliance/items/{item_id} | Update a compliance item |
| GET | /api/compliance/standard-documents | Shared standard employee agreements (reference shelf) |
| GET | /api/compliance/status | Compliance status rollup (or single-subject detail) |
7 operations
content-queue
| Method | Path | Does |
|---|---|---|
| POST | /api/content-queue/batch | Create Batch |
| GET | /api/content-queue/batch/{batch_id} | Get Batch |
| POST | /api/content-queue/batch/{batch_id}/approve-all | Approve All |
| GET | /api/content-queue/batches | List Batches |
| POST | /api/content-queue/push | Push Approved |
| PATCH | /api/content-queue/{post_id} | Update Post |
| GET | /api/content-queue/{post_id}/media-url | Get Media Url |
7 operations
documents
| Method | Path | Does |
|---|---|---|
| GET | /api/documents | List documents |
| POST | /api/documents | Create document record |
| GET | /api/documents/expiring | List expiring documents |
| GET | /api/documents/needs-review | List documents needing review |
| GET | /api/documents/search | Search documents |
| GET | /api/documents/{doc_id} | Get document detail |
| PATCH | /api/documents/{doc_id} | Update document metadata |
7 operations
entities
| Method | Path | Does |
|---|---|---|
| GET | /api/entities | List entities |
| GET | /api/entities/resolver/pending | List pending entity resolutions |
| POST | /api/entities/resolver/pending/{pending_id}/resolve | Resolve a pending row (match / create / ignore) |
| GET | /api/entities/resolver/search | Search entities (for the resolver picker) |
| GET | /api/entities/trade-names | List trade names |
| GET | /api/entities/{entity_id} | Get entity detail |
| PATCH | /api/entities/{entity_id}/attributes | Update entity compliance attributes |
7 operations
guests
| Method | Path | Does |
|---|---|---|
| GET | /api/guests | List guest profiles |
| GET | /api/guests/segments | List guest segments |
| POST | /api/guests/segments | Create a guest segment |
| POST | /api/guests/segments/{segment_id}/sync-mailchimp | Sync segment to Mailchimp |
| GET | /api/guests/{guest_id} | Get guest profile by ID |
| PATCH | /api/guests/{guest_id}/consent | Update guest consent |
| PATCH | /api/guests/{guest_id}/tags | Update guest tags |
7 operations
knowledge-base
| Method | Path | Does |
|---|---|---|
| GET | /api/knowledge-base | List knowledge base articles |
| POST | /api/knowledge-base | Create a knowledge base article |
| GET | /api/knowledge-base/categories | List article categories with counts |
| GET | /api/knowledge-base/search | Search knowledge base articles |
| DELETE | /api/knowledge-base/{article_id} | Delete a knowledge base article |
| GET | /api/knowledge-base/{article_id} | Get article by ID |
| PUT | /api/knowledge-base/{article_id} | Update article fields |
7 operations
users
| Method | Path | Does |
|---|---|---|
| GET | /api/users | List all users |
| GET | /api/users/notification-preferences | List every user's notification preferences (admin) |
| GET | /api/users/{user_id}/businesses | Get a user's store assignments |
| PUT | /api/users/{user_id}/businesses | Replace a user's store assignments |
| GET | /api/users/{user_id}/notification-preferences | Get another user's notification preferences (admin) |
| PUT | /api/users/{user_id}/notification-preferences | Update another user's notification preferences (admin) |
| PATCH | /api/users/{user_id}/roles | Update user functional roles |
7 operations
alerts
| Method | Path | Does |
|---|---|---|
| GET | /api/alerts | List alerts |
| GET | /api/alerts/blocking | List active blocking alerts |
| GET | /api/alerts/{alert_id} | Get alert by ID |
| POST | /api/alerts/{alert_id}/acknowledge | Acknowledge an alert |
| POST | /api/alerts/{alert_id}/assign | Assign an alert |
| POST | /api/alerts/{alert_id}/resolve | Resolve an alert |
6 operations
financials
| Method | Path | Does |
|---|---|---|
| GET | /api/financials/business/{business_id} | Get latest business financials |
| GET | /api/financials/business/{business_id}/history | Get business financial history |
| POST | /api/financials/business/{business_id}/record | Record manual financials |
| POST | /api/financials/business/{business_id}/regenerate | Regenerate financials from integration data |
| GET | /api/financials/portfolio | Get portfolio financial overview |
| GET | /api/financials/reconciliation | Rows whose financial invariants are broken (Pulse#576 Phase 4) |
6 operations
inbox
| Method | Path | Does |
|---|---|---|
| GET | /api/inbox | List inbox conversations |
| GET | /api/inbox/{conversation_id} | Get conversation with messages |
| POST | /api/inbox/{conversation_id}/ai-suggestion | Get AI reply suggestion |
| POST | /api/inbox/{conversation_id}/assign | Assign conversation to agent |
| POST | /api/inbox/{conversation_id}/reply | Reply to a conversation |
| POST | /api/inbox/{conversation_id}/status | Update conversation status |
6 operations
notifications
| Method | Path | Does |
|---|---|---|
| GET | /api/notifications | List notifications |
| GET | /api/notifications/preferences | Get notification preferences |
| PUT | /api/notifications/preferences | Update notification preferences |
| POST | /api/notifications/read-all | Mark all notifications as read |
| GET | /api/notifications/unread-count | Get unread count |
| POST | /api/notifications/{notification_id}/read | Mark notification as read |
6 operations
orders
| Method | Path | Does |
|---|---|---|
| GET | /api/orders | List orders |
| POST | /api/orders | Create a purchase order |
| GET | /api/orders/{order_id} | Get order by ID |
| POST | /api/orders/{order_id}/approve | Approve an order |
| POST | /api/orders/{order_id}/reject | Reject an order |
| PUT | /api/orders/{order_id}/status | Update order fulfillment status |
6 operations
overtime
| Method | Path | Does |
|---|---|---|
| GET | /api/overtime | List overtime requests |
| POST | /api/overtime | Create overtime request |
| POST | /api/overtime/{ot_id}/approve | Approve overtime request |
| POST | /api/overtime/{ot_id}/deny | Deny overtime request (reason required) |
| POST | /api/overtime/{ot_id}/remind | Send BoldSign reminder for an outstanding overtime request |
| POST | /api/overtime/{ot_id}/send | Send overtime request via E-signature |
6 operations
quickbooks
| Method | Path | Does |
|---|---|---|
| GET | /api/quickbooks/{business_id}/accounts | List synced QB accounts |
| GET | /api/quickbooks/{business_id}/mappings | List category mappings |
| POST | /api/quickbooks/{business_id}/mappings | Create category mapping |
| DELETE | /api/quickbooks/{business_id}/mappings/{mapping_id} | Delete category mapping |
| PATCH | /api/quickbooks/{business_id}/mappings/{mapping_id} | Update category mapping |
| GET | /api/quickbooks/{business_id}/pnl-comparison | P&L comparison: VIP vs QuickBooks |
6 operations
auth
| Method | Path | Does |
|---|---|---|
| POST | /api/auth/forgot-password | Request password reset |
| GET | /api/auth/me | Get current user profile |
| POST | /api/auth/refresh | Refresh access token |
| POST | /api/auth/reset-password | Complete password reset |
| POST | /api/auth/token | Login with email and password |
5 operations
commissions
| Method | Path | Does |
|---|---|---|
| GET | /api/commissions/configs | List commission configs |
| POST | /api/commissions/configs | Create commission config |
| GET | /api/commissions/configs/{config_id} | Get commission config |
| PUT | /api/commissions/configs/{config_id} | Update commission config |
| GET | /api/commissions/splits | List commission splits |
5 operations
brand-registry
| Method | Path | Does |
|---|---|---|
| GET | /api/brand-registry | List brand registry |
| DELETE | /api/brand-registry/{slug} | Delete a brand registry record |
| GET | /api/brand-registry/{slug} | Get a brand registry record |
| PUT | /api/brand-registry/{slug} | Upsert a brand registry record |
4 operations
events
| Method | Path | Does |
|---|---|---|
| GET | /api/events | List event cadences |
| POST | /api/events | Create event cadence with auto-generated campaign |
| PATCH | /api/events/{event_id} | Update event cadence |
| POST | /api/events/{event_id}/generate-campaign | Generate or regenerate campaign for event |
4 operations
incidents
| Method | Path | Does |
|---|---|---|
| GET | /api/incidents | List incidents |
| POST | /api/incidents | Create incident |
| PATCH | /api/incidents/{incident_id} | Update incident |
| POST | /api/incidents/{incident_id}/escalate | Escalate an incident into a draft write-up |
4 operations
logs
| Method | Path | Does |
|---|---|---|
| GET | /api/logs/audit | List audit logs |
| GET | /api/logs/audit/{log_id} | Get audit log entry |
| GET | /api/logs/manager | List manager logs |
| POST | /api/logs/manager | Create a manager log entry |
4 operations
portfolio
| Method | Path | Does |
|---|---|---|
| GET | /api/portfolio/ai-summary | Get AI summary with anomalies |
| GET | /api/portfolio/business-ranking | Get business ranking |
| GET | /api/portfolio/exceptions | Get exception feed |
| GET | /api/portfolio/flash-report | Get portfolio flash report |
4 operations
social
| Method | Path | Does |
|---|---|---|
| GET | /api/social/posts | List recorded pushed posts |
| POST | /api/social/posts | Record a post CB pushed to Vista |
| GET | /api/social/posts/{post_id} | Get one recorded post |
| POST | /api/social/validate | Validate a social post against the SysForge Loom guardrails |
4 operations
summaries
| Method | Path | Does |
|---|---|---|
| GET | /api/summaries/daily | Get latest daily summary |
| GET | /api/summaries/daily/{date} | Get daily summary by date |
| POST | /api/summaries/generate | Trigger summary generation |
| GET | /api/summaries/history | Get summary history |
4 operations
vehicles
| Method | Path | Does |
|---|---|---|
| GET | /api/vehicles | List vehicles |
| POST | /api/vehicles | Create a vehicle |
| GET | /api/vehicles/{vehicle_id} | Get vehicle detail |
| PATCH | /api/vehicles/{vehicle_id} | Update a vehicle |
4 operations
vendor-templates
| Method | Path | Does |
|---|---|---|
| GET | /api/vendor-templates | List Templates |
| POST | /api/vendor-templates | Create Template |
| GET | /api/vendor-templates/{vendor_name} | Get Template |
| PUT | /api/vendor-templates/{vendor_name} | Update Template |
4 operations
vista-profiles
| Method | Path | Does |
|---|---|---|
| GET | /api/vista-profiles | List Profiles |
| POST | /api/vista-profiles | Create Profile |
| DELETE | /api/vista-profiles/{profile_id} | Delete Profile |
| PATCH | /api/vista-profiles/{profile_id} | Update Profile |
4 operations
webhooks
| Method | Path | Does |
|---|---|---|
| POST | /api/webhooks/boldsign | Receive BoldSign webhook event |
| GET | /api/webhooks/boldsign/status | BoldSign webhook health check |
| GET | /api/webhooks/meta | Verify Meta webhook |
| POST | /api/webhooks/meta | Receive Meta webhook event |
4 operations
integrations
| Method | Path | Does |
|---|---|---|
| GET | /api/integrations/status | Get integration status |
| POST | /api/integrations/webrezpro/backfill | Re-read past WebRezPro nights |
| POST | /api/integrations/{source}/sync | Trigger manual sync |
3 operations
payables
| Method | Path | Does |
|---|---|---|
| GET | /api/payables/not-on-sheet | Emailed invoices that aren't on the payables sheet |
| GET | /api/payables/rows | Payables rows, filtered |
| GET | /api/payables/summary | Payables by business, stage and age |
3 operations
system
| Method | Path | Does |
|---|---|---|
| GET | /api/system/jobs | List job schedules |
| POST | /api/system/jobs/{job_name}/run | Run a job manually |
| POST | /api/system/tick | Execute system tick |
3 operations
datasets
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/datasets | List datasets exposed by this driver (Saint only) |
| GET | /api/v1/datasets/{dataset_id}/rows | Stream dataset rows as ndjson |
2 operations
health
| Method | Path | Does |
|---|---|---|
| GET | /health | Basic health check |
| GET | /health/detailed | Detailed health check |
2 operations
export
| Method | Path | Does |
|---|---|---|
| GET | /api/export/{report_type} | Export financial report |
1 operation
jobs
| Method | Path | Does |
|---|---|---|
| POST | /api/jobs/hr/notifications/scan | Scan for overdue HR events and emit notifications |
1 operation
labor
| Method | Path | Does |
|---|---|---|
| GET | /api/labor/ot-trends | Weekly OT hours per employee over time |
1 operation
marketing
| Method | Path | Does |
|---|---|---|
| GET | /api/marketing/overview | Marketing dashboard overview |
1 operation
opentable
| Method | Path | Does |
|---|---|---|
| POST | /api/opentable/ingest-gold | Ingest GuestCenter gold reservations |
1 operation
prime
| Method | Path | Does |
|---|---|---|
| GET | /prime | Prime application caches |
1 operation
status
| Method | Path | Does |
|---|---|---|
| GET | /status | Service status overview |
1 operation
All the partsLines of businessThe platform's own id for this service is cbpulse.
forge-catalog.json, generated Oct 30, 2026