{"success":true,"message":"SHYNIT API.","data":{"name":"SHYNIT API","description":"Premium on-demand car care. Two mobile applications served from one API, namespaced by audience so authorization is enforceable at the router rather than per handler.","status":"ok","environment":"production","uptimeSeconds":129836,"startedAt":"2026-09-18T15:39:31.033Z","build":{"version":"1.0.0","build":"1","commit":"local"},"api":{"current":"v1","supported":["v1"],"baseUrl":"https://api.shynit.com/v1","versioning":"URI major versioning. Breaking changes ship as a new major prefix; /v1 is never mutated."},"documentation":{"reference":"https://api.shynit.com/v1/docs","swagger":"https://api.shynit.com/v1/docs/swagger","openapi":"https://api.shynit.com/v1/docs-json","openapiYaml":"https://api.shynit.com/v1/docs-yaml","markdown":"https://api.shynit.com/v1/docs/spec.md","postman":"https://api.shynit.com/v1/docs/postman.json"},"health":{"liveness":"https://api.shynit.com/v1/health","readiness":"https://api.shynit.com/v1/health/ready","version":"https://api.shynit.com/v1/version"},"endpoints":{"authentication":{"customer":"https://api.shynit.com/v1/auth/customer","provider":"https://api.shynit.com/v1/auth/provider"},"common":{"config":"https://api.shynit.com/v1/common/config","countries":"https://api.shynit.com/v1/common/countries","languages":"https://api.shynit.com/v1/common/languages","serviceCategories":"https://api.shynit.com/v1/common/service-categories","platformCharges":"https://api.shynit.com/v1/common/platform-charges","places":"https://api.shynit.com/v1/common/places/autocomplete","vehicleMakes":"https://api.shynit.com/v1/common/vehicle-makes","mediaUpload":"https://api.shynit.com/v1/common/media/upload"},"customer":{"onboarding":"https://api.shynit.com/v1/customer/onboarding","profile":"https://api.shynit.com/v1/customer/me","settings":"https://api.shynit.com/v1/customer/settings","addresses":"https://api.shynit.com/v1/customer/addresses","vehicles":"https://api.shynit.com/v1/customer/vehicles","services":"https://api.shynit.com/v1/customer/services","plans":"https://api.shynit.com/v1/customer/plans","subscription":"https://api.shynit.com/v1/customer/subscription","paymentMethods":"https://api.shynit.com/v1/customer/payment-methods","promos":"https://api.shynit.com/v1/customer/promos","providers":"https://api.shynit.com/v1/customer/providers","bookings":"https://api.shynit.com/v1/customer/bookings","favorites":"https://api.shynit.com/v1/customer/favorites","transactions":"https://api.shynit.com/v1/customer/transactions","notifications":"https://api.shynit.com/v1/customer/notifications","devices":"https://api.shynit.com/v1/customer/devices","account":"https://api.shynit.com/v1/customer/account","issues":"https://api.shynit.com/v1/customer/issues"},"provider":{"onboarding":"https://api.shynit.com/v1/provider/onboarding","certification":"https://api.shynit.com/v1/provider/certification","home":"https://api.shynit.com/v1/provider/home","availability":"https://api.shynit.com/v1/provider/availability","services":"https://api.shynit.com/v1/provider/services","jobs":"https://api.shynit.com/v1/provider/jobs","balance":"https://api.shynit.com/v1/provider/balance","payouts":"https://api.shynit.com/v1/provider/payouts","earnings":"https://api.shynit.com/v1/provider/earnings","performance":"https://api.shynit.com/v1/provider/performance","transactions":"https://api.shynit.com/v1/provider/transactions","profile":"https://api.shynit.com/v1/provider/profile","documents":"https://api.shynit.com/v1/provider/documents","settings":"https://api.shynit.com/v1/provider/settings/notifications","notifications":"https://api.shynit.com/v1/provider/notifications","devices":"https://api.shynit.com/v1/provider/devices","account":"https://api.shynit.com/v1/provider/account","issues":"https://api.shynit.com/v1/provider/issues"},"webhooks":{"stripe":"https://api.shynit.com/v1/webhooks/stripe","didit":"https://api.shynit.com/v1/webhooks/didit","cloudinary":"https://api.shynit.com/v1/webhooks/cloudinary"}},"realtime":{"transport":"socket.io","url":"https://api.shynit.com","namespaces":{"customer":"/customer","provider":"/provider"},"authentication":"Access token in the handshake `auth.token`, verified by the gateway’s own middleware."},"conventions":{"envelope":"Every response, success or failure, is enveloped as `{ success, message, data, meta }`. Collections are nested under a named key — never a bare array or scalar at the top level.","authentication":"Bearer RS256 access token, 15 minutes, refreshed against the session endpoints.","requiredHeaders":{"X-Client-Type":"customer | provider — required outside the exempt routes listed in `health` and `documentation`.","X-Client-Version":"Semver plus build, e.g. \"1.4.0 (241)\". Absent is treated as unknown rather than blocked.","X-Platform":"ios | android | web."},"idempotency":"Unsafe writes accept `Idempotency-Key`; a replay returns the original response with `X-Idempotent-Replay`.","pagination":"Keyset, on an explicit sort key with `id` as tie-breaker. Cursors are opaque.","rateLimits":"Per-IP and per-principal buckets. `X-RateLimit-*` on every response, `Retry-After` on a 429.","errors":"Stable machine-readable codes with a documentation URL. Unknown request body fields are rejected, not dropped."},"support":{"email":"support@shynit.com","website":"https://shynit.com","terms":"https://shynit.com/terms","errorReference":"https://docs.shynit.com/errors"}},"meta":{"requestId":"ad7ceaa5-3c02-4747-9c3c-6f7871498cc1","timestamp":"2026-09-20T03:43:27.193Z"}}