{"message":"SyndeoCare API Gateway","apiVersion":"v1","upstreamServices":["identity","profiles","clinics","scheduling","messaging","notifications"],"productSurfaces":["admin-web","clinic-web","clinic-mobile","professional-mobile"],"auth":{"mode":"strict","configured":true,"issuer":"http://keycloak:8080/realms/syndeocare","audience":"syndeocare-api","clientId":"syndeocare-api","realm":"syndeocare","jwksUri":"http://keycloak:8080/realms/syndeocare/protocol/openid-connect/certs"},"routes":[{"method":"GET","path":"/v1","summary":"Gateway metadata and platform contract overview","protected":false},{"method":"GET","path":"/v1/auth/config","summary":"Gateway authentication configuration metadata","protected":false},{"method":"POST","path":"/v1/auth/signin","summary":"Authenticate with email and password","protected":false},{"method":"POST","path":"/v1/auth/signup","summary":"Create a new professional or clinic account","protected":false},{"method":"POST","path":"/v1/auth/refresh","summary":"Refresh an authenticated session using a refresh token","protected":false},{"method":"POST","path":"/v1/auth/logout","summary":"Revoke a refresh token and terminate the session","protected":false},{"method":"POST","path":"/v1/auth/password-reset/request","summary":"Send a password reset link to the account email","protected":false},{"method":"POST","path":"/v1/auth/password-reset/confirm","summary":"Complete a password reset using a signed reset token","protected":false},{"method":"POST","path":"/v1/auth/email-verification/request","summary":"Send a verification link to the account email","protected":false},{"method":"POST","path":"/v1/auth/email-verification/confirm","summary":"Confirm an email verification token","protected":false},{"method":"POST","path":"/v1/auth/password","summary":"Update the authenticated actor password","protected":true},{"method":"DELETE","path":"/v1/auth/account","summary":"Delete the authenticated actor account","protected":true},{"method":"GET","path":"/v1/preferences/me","summary":"Read the authenticated actor preferences","protected":true},{"method":"PATCH","path":"/v1/preferences/me","summary":"Update the authenticated actor preferences","protected":true},{"method":"GET","path":"/v1/me","summary":"Authenticated subject context","protected":true},{"method":"PATCH","path":"/v1/me/external-id","summary":"Sync the authenticated actor external user id","protected":true},{"method":"GET","path":"/v1/notifications","summary":"List notifications for the authenticated actor","protected":true},{"method":"POST","path":"/v1/notifications","summary":"Create an in-app notification for a target external user id","protected":true},{"method":"PATCH","path":"/v1/notifications/read-all","summary":"Mark all notifications as read for the authenticated actor","protected":true},{"method":"PATCH","path":"/v1/notifications/:notificationId/read","summary":"Mark one notification as read for the authenticated actor","protected":true},{"method":"DELETE","path":"/v1/notifications","summary":"Delete all notifications for the authenticated actor","protected":true},{"method":"DELETE","path":"/v1/notifications/:notificationId","summary":"Delete one notification for the authenticated actor","protected":true},{"method":"GET","path":"/v1/admin/notifications/:externalUserId/count","summary":"Read notification count for a target external user id","protected":true},{"method":"GET","path":"/v1/onboarding/status","summary":"Authenticated onboarding progress","protected":true},{"method":"GET","path":"/v1/verification/status","summary":"Authenticated verification status","protected":true},{"method":"GET","path":"/v1/profiles","summary":"Browse verified professional profiles","protected":false},{"method":"GET","path":"/v1/profiles/:profileId","summary":"Read professional profile details","protected":false},{"method":"GET","path":"/v1/profiles/me","summary":"Current professional profile","protected":true},{"method":"PATCH","path":"/v1/profiles/me","summary":"Update the current professional profile","protected":true},{"method":"GET","path":"/v1/clinics","summary":"Browse clinic and facility profiles","protected":false},{"method":"GET","path":"/v1/clinics/:clinicId","summary":"Read clinic profile details","protected":false},{"method":"GET","path":"/v1/clinics/me","summary":"Current clinic profile","protected":true},{"method":"PATCH","path":"/v1/clinics/me","summary":"Update the current clinic profile","protected":true},{"method":"PATCH","path":"/v1/onboarding/status","summary":"Update onboarding document state and optionally submit for review","protected":true},{"method":"PATCH","path":"/v1/admin/verification/:subject","summary":"Review verification for a target actor","protected":true},{"method":"POST","path":"/v1/uploads/profile-image","summary":"Create a presigned upload for the current actor profile image","protected":true},{"method":"POST","path":"/v1/uploads/profile-image/complete","summary":"Persist the uploaded profile image or clinic logo","protected":true},{"method":"POST","path":"/v1/uploads/verification-document","summary":"Create a presigned upload for a verification document","protected":true},{"method":"POST","path":"/v1/uploads/verification-document/complete","summary":"Persist an uploaded verification document","protected":true},{"method":"POST","path":"/v1/uploads/verification-document/access","summary":"Create a signed access URL for a private verification document","protected":true},{"method":"GET","path":"/v1/jobs","summary":"Browse open jobs and shifts","protected":false},{"method":"POST","path":"/v1/jobs","summary":"Create a new job or shift as an authenticated clinic","protected":true},{"method":"GET","path":"/v1/jobs/:jobId","summary":"Read job or shift details","protected":false},{"method":"POST","path":"/v1/bookings","summary":"Request a booking for an authenticated professional","protected":true},{"method":"GET","path":"/v1/bookings","summary":"List bookings visible to the authenticated actor","protected":true},{"method":"GET","path":"/v1/bookings/:bookingId","summary":"Read booking details visible to the authenticated actor","protected":true}]}