{"name":"WPShake API","version":"v1","endpoints":{"GET /v1/sites":"List sites in the tenant fleet.","GET /v1/sites/:id":"Get site by id.","GET /v1/sites/:id/inventory":"Get the latest plugin/theme/db/orders snapshot for a site.","GET /v1/sites/:id/recommendations":"Per-site WP/PHP recommendation with reasoning.","GET /v1/sites/:id/health":"Composite 0-100 health score with breakdown.","POST /v1/sites/:id/handshake":"Trigger a live handshake (refreshes inventory). Requires write scope.","GET /v1/fleet/baseline":"Get fleet WP/PHP version floor.","PUT /v1/fleet/baseline":"Set fleet WP/PHP version floor. Requires write scope.","GET /v1/audit":"Audit feed for the tenant. Query: limit, since.","GET /v1/reports/schedules":"List the tenant's scheduled client-facing reports.","GET /v1/clients":"List clients in the tenant CRM.","POST /v1/clients":"Create a client. Requires write scope.","GET /v1/clients/:id":"Get a client with assigned sites and work log summary.","PUT /v1/clients/:id":"Update a client. Requires write scope.","DELETE /v1/clients/:id":"Delete a client. Requires write scope.","GET /v1/sites/:id/client":"Get the client assigned to a site.","PUT /v1/sites/:id/client":"Assign a client to a site. Requires write scope.","DELETE /v1/sites/:id/client":"Unassign a site from its client. Requires write scope.","GET /v1/work-log":"List work log entries. Query: site_id, client_id, since, until, billable, limit, offset.","POST /v1/work-log":"Create a work log entry. Requires write scope.","GET /v1/work-log/:id":"Get a work log entry.","PUT /v1/work-log/:id":"Update a work log entry. Requires write scope.","DELETE /v1/work-log/:id":"Delete a work log entry. Requires write scope.","GET /v1/work-log/summary":"Aggregate hours by category and month. Query: scope=tenant|site|client, scope_id, since, until."},"auth":"Bearer wps_<prefix>_<secret> in the Authorization header."}