/** * @fileoverview Comprehensive Laravel Healthcare MCP Server Endpoint Registry * Contains 800+ endpoints organized by authentication type and functionality * UPDATED: Added 184 new endpoints from api-docs.json * Reorganized for proper healthcare security and HIPAA compliance * * Authentication Organization: * - PUBLIC: Login, registration, password management, basic public data (35+ new endpoints) * - PROVIDER: Clinical data, EMR operations, patient management (HIPAA-compliant) (13+ new endpoints) * - PATIENT: Patient portal operations (1 new endpoint) * - PARTNER: Partner business operations * - AFFILIATE: Affiliate management (1 new endpoint) * - NETWORK: Network operations * - ADMIN: Super admin operations */ /** * Authentication configuration for different user roles */ export const AUTH_TYPES = { PUBLIC: "public", SANCTUM: "sanctum", ADMIN: "admin", AGENT: "agent", PATIENT: "patient", PRACTITIONER: "practitioner", AFFILIATE: "affiliate", PARTNER: "partner", NETWORK: "network", DOCTOR: "doctor", PROVIDER: "provider" }; /** * Authentication endpoints for each user role */ export const AUTH_ENDPOINTS = { [AUTH_TYPES.ADMIN]: { login: "/api/admin/login", method: "POST", controller: "Admin\\Api\\LoginController@loginApi" }, [AUTH_TYPES.AGENT]: { login: "/agent/login/post", method: "POST", controller: "Agent\\Auth\\LoginController@login" }, [AUTH_TYPES.PATIENT]: { login: "/api/frontend/login", method: "POST", controller: "PatientController@loginPatient" }, [AUTH_TYPES.PRACTITIONER]: { login: "/api/practitioner/login", method: "POST", controller: "Practitioner\\Auth\\LoginController@login" }, [AUTH_TYPES.AFFILIATE]: { login: "/api/affiliate/login", method: "POST", controller: "Affiliate\\Auth\\LoginController@login" }, [AUTH_TYPES.PARTNER]: { login: "/api/partner/login", method: "POST", controller: "Partner\\Auth\\LoginController@login" }, [AUTH_TYPES.NETWORK]: { login: "/api/network/login", method: "POST", controller: "Network\\Auth\\LoginController@login" }, [AUTH_TYPES.DOCTOR]: { login: "/api/doctor/login", method: "POST", controller: "Doctor\\Auth\\LoginController@login" }, [AUTH_TYPES.PROVIDER]: { login: "/api/login", method: "POST", controller: "Provider\\Auth\\LoginController@login" } }; /** * Endpoint categories for MCP tool organization */ export const ENDPOINT_CATEGORIES = { PATIENT_MANAGEMENT: "patient_management", APPOINTMENT_SCHEDULING: "appointment_scheduling", MEDICAL_RECORDS: "medical_records", PRESCRIPTION_MANAGEMENT: "prescription_management", DOCUMENT_MANAGEMENT: "document_management", MESSAGING: "messaging", BILLING_ORDERS: "billing_orders", ANALYTICS_REPORTS: "analytics_reports", USER_MANAGEMENT: "user_management", INVENTORY: "inventory", FORMS_QUESTIONNAIRES: "forms_questionnaires", AI_INTEGRATION: "ai_integration", PROVIDER_MANAGEMENT: "provider_management", BUSINESS_OPERATIONS: "business_operations", LOCATION_MANAGEMENT: "location_management" }; /** * Public endpoints (no authentication required) * Includes all login, registration, password management, and basic public data access * These endpoints are accessible without authentication for initial user access */ export const PUBLIC_ENDPOINTS = [ // ===== AUTHENTICATION & LOGIN ENDPOINTS ===== { path: "/api/login", method: "POST", controller: "AuthController@login", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "General login (uses username field)", parameters: { username: { type: "string", required: true, description: "Username" }, password: { type: "string", required: true, description: "Password" } } }, { path: "/api/patient-login-api", method: "POST", controller: "PatientController@loginApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Patient login API", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" } } }, { path: "/api/login-partner-api", method: "POST", controller: "PartnerController@loginApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Partner login", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, { path: "/api/affiliate-login-api", method: "POST", controller: "AffiliateController@loginApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Affiliate login", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, { path: "/api/network/login", method: "POST", controller: "NetworkController@login", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Network login", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, { path: "/api/admin/login", method: "POST", controller: "AdminController@login", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Super admin login", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, { path: "/api/frontend/login", method: "POST", controller: "FrontendController@login", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Patient portal login", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, // ===== REGISTRATION ENDPOINTS ===== { path: "/api/register-patients", method: "POST", controller: "PatientController@register", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Register patient with actual parameter names from patient/register.vue", parameters: { first_name: { type: "string", required: true, description: "First name" }, first_name: { type: "string", required: true, description: "first_name parameter" }, last_name: { type: "string", required: true, description: "last_name parameter" }, email: { type: "string", required: true, description: "email parameter" }, phone_no: { type: "string", required: true, description: "phone_no parameter" }, dob: { type: "string", required: true, description: "dob parameter" }, gender: { type: "string", required: true, description: "gender parameter" }, provider_id: { type: "integer", required: true, description: "provider_id parameter" }, username: { type: "string", required: false, description: "username parameter" }, isportalAccess: { type: "boolean", required: false, description: "isportalAccess parameter" }, last_name: { type: "string", required: true, description: "Last name" }, preferredPhone: { type: "string", required: true, description: "Preferred phone" }, email: { type: "string", required: true, description: "Email address" }, dob: { type: "string", required: true, description: "Date of birth" }, gender: { type: "string", required: true, description: "Gender" }, password: { type: "string", required: true, description: "Password" }, { path: "/api/partner-register-api", method: "POST", controller: "PartnerController@registerApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Partner registration with actual parameter names from partner/register.vue", parameters: { first_name: { type: "string", required: true, description: "First name" }, last_name: { type: "string", required: true, description: "Last name" }, phone_no: { type: "string", required: true, description: "Phone number" }, email: { type: "string", required: true, description: "Email address" }, dob: { type: "string", required: true, description: "Date of birth" }, gender: { type: "string", required: true, description: "Gender" }, password: { type: "string", required: true, description: "Password" }, { path: "/api/affiliate-register-api", method: "POST", controller: "AffiliateController@registerApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Affiliate registration with actual parameter names from affiliate/register.vue", parameters: { first_name: { type: "string", required: true, description: "First name" }, last_name: { type: "string", required: true, description: "Last name" }, phone_no: { type: "string", required: true, description: "Phone number" }, email: { type: "string", required: true, description: "Email address" }, dob: { type: "string", required: true, description: "Date of birth" }, gender: { type: "string", required: true, description: "Gender" }, partner_email: { type: "string", required: true, description: "Partner email" }, { path: "/api/network/register", method: "POST", controller: "NetworkController@register", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Network registration with actual parameter names from network/register.vue", parameters: { first_name: { type: "string", required: true, description: "First name" }, last_name: { type: "string", required: true, description: "Last name" }, phone_no: { type: "string", required: true, description: "Phone number" }, email: { type: "string", required: true, description: "Email address" }, dob: { type: "string", required: true, description: "Date of birth" }, gender: { type: "string", required: true, description: "Gender" }, password: { type: "string", required: true, description: "Password" }, partner_id: { type: "string", required: true, description: "Partner ID" }, { path: "/api/emr/provider-register", method: "POST", controller: "EMRAPI\\Provider\\ProviderController@register", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Provider registration (public access)", parameters: { firstName: { type: "string", required: true, description: "First name" }, lastName: { type: "string", required: true, description: "Last name" }, emailAddress: { type: "string", required: true, description: "Email address" }, textMessageNumber: { type: "string", required: false, description: "Text message number" }, accessRights: { type: "object", required: false, description: "Access rights object with admin/practitioner/patientPortal booleans" }, username: { type: "string", required: true, description: "Provider username for login" }, newUserPassword: { type: "string", required: true, description: "Provider password" }, confirm_password: { type: "string", required: true, description: "Password confirmation (must match newUserPassword)" }, company_name: { type: "string", required: false, description: "Company name" }, on_your_domain: { type: "boolean", required: false, description: "On your domain flag" }, dummy: { type: "string", required: false, description: "Dummy field" }, // ===== PASSWORD MANAGEMENT ENDPOINTS ===== { path: "/api/emr/set-password", method: "POST", controller: "EMRAPI\\AuthController@setPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Create password", parameters: { password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation" }, token: { type: "string", required: true, description: "Password reset token" }, { path: "/api/set-password", method: "POST", controller: "AuthController@setPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Save provider password", parameters: { password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation" }, token: { type: "string", required: true, description: "Password reset token" }, { path: "/api/affiliate/set-password", method: "POST", controller: "AffiliateController@setPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Save affiliate password", parameters: { password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation" }, token: { type: "string", required: true, description: "Password reset token" }, { path: "/api/frontend/forgot-password", method: "POST", controller: "FrontendController@forgotPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Patient forgot password", parameters: { email: { type: "string", required: true, description: "Email address" }, { path: "/api/frontend/reset-password", method: "POST", controller: "FrontendController@resetPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Patient reset password", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation" }, token: { type: "string", required: true, description: "Password reset token" }, { path: "/api/emr/provider/forgot-password", method: "POST", controller: "EMRAPI\\Provider\\AuthController@forgotPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Provider forgot password", parameters: { email: { type: "string", required: true, description: "Email address" }, { path: "/api/emr/provider/reset-password", method: "POST", controller: "EMRAPI\\Provider\\AuthController@resetPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Provider reset password", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation" }, token: { type: "string", required: true, description: "Password reset token" }, // ===== EMAIL VERIFICATION ENDPOINTS ===== { path: "/api/public-manage-verify-email", method: "POST", controller: "PublicController@verifyEmail", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Email verification", parameters: { token: { type: "string", required: true, description: "Verification token" }, email: { type: "string", required: true, description: "Email address" }, { path: "/api/public-manage-resend-verification", method: "POST", controller: "PublicController@resendVerification", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Resend verification email", parameters: { email: { type: "string", required: true, description: "Email address" }, // ===== PUBLIC DATA ACCESS ENDPOINTS ===== { path: "/api/get-pdf-url/{document_id}", method: "GET", controller: "DocumentController@getPdfUrl", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get PDF URL", parameters: { document_id: { type: "string", required: true, description: "Document ID" }, // ===== APPOINTMENT VERIFICATION (PUBLIC) ===== { path: "/api/appointment/verify/{appointmentId}", method: "GET", controller: "AppointmentAccessController@verifyAndRedirect", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Verify appointment access and redirect", parameters: { appointmentId: { type: "string", required: true, description: "Appointment ID" }, { path: "/api/appointment-participants/{appointmentId}", method: "GET", controller: "PatientController@getAppointmentParticipants", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment participants", parameters: { appointmentId: { type: "string", required: true, description: "Appointment ID" }, { path: "/api/user-list-profile-skipauth/{id}", method: "GET", controller: "PatientController@getUserProfileById", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get user profile by ID without authentication", parameters: { id: { type: "string", required: true, description: "User ID" }, { path: "/api/generate-permanent-token/{userId}", method: "GET", controller: "TokenController@generatePermanentToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Generate permanent token for user", parameters: { userId: { type: "string", required: true, description: "User ID" }, // ===== NEW ENDPOINTS FROM API-DOCS.JSON ===== // Added 35 new public endpoints from api-docs.json { path: "/room-joined/event", method: "POST", controller: "LiveKitController@webhook", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "LiveKit webhook handler", parameters: { event: { type: "string", required: false, description: "Event type" }, event: { type: "string", required: false, description: "event parameter" }, room: { type: "object", required: false, description: "room parameter" }, egressInfo: { type: "object", required: false, description: "egressInfo parameter" }, room: { type: "object", required: false, description: "Room data" }, egressInfo: { type: "object", required: false, description: "Egress information" }, { path: "/room-joined/event-transcription", method: "POST", controller: "LiveKitController@getRecordingUrl", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Get recording URL", parameters: { egressInfo: { type: "object", required: false, description: "Egress information", }, { path: "/api/check-user", method: "POST", controller: "ProviderController@checkUser", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Check if provider exists", parameters: { email: { type: "string", required: true, description: "Provider email" }, email: { type: "string", required: true, description: "email parameter" }, { path: "/api/get-patient-summary/{patientId}", method: "GET", controller: "PatientController@getPatientSummary", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient summary", parameters: { patientId: { type: "string", required: true, description: "Patient ID" }, { path: "/api/update-patient-summary/{patientId}", method: "POST", controller: "PatientController@updatePatientSummary", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient summary", parameters: { patientId: { type: "string", required: true, description: "Patient ID" }, summary: { type: "string", required: true, description: "Patient summary" }, { path: "/api/generate-patient-summary/{patientId}", method: "GET", controller: "PatientController@generatePatientSummary", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Generate AI summary for patient", parameters: { patientId: { type: "string", required: true, description: "Patient ID" }, { path: "/api/get-patient-full-details/{patientId}", method: "GET", controller: "PatientController@getPatientFullDetails", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get comprehensive patient details", parameters: { patientId: { type: "string", required: true, description: "Patient ID" }, { path: "/api/get-patient-forms-list/{patientId}", method: "GET", controller: "FormsController@getPatientFormsList", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get patient forms list", parameters: { patientId: { type: "string", required: true, description: "Patient ID" }, { path: "/api/download/pdf/{id}/{type}", method: "GET", controller: "DocumentController@downloadPdf", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Download or view PDF file", parameters: { id: { type: "string", required: true, description: "Document ID" }, type: { type: "string", required: true, description: "Document type" }, { path: "/emr-api/provider-register", method: "POST", controller: "EMRAPI\\ProviderController@register", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Register a new provider", parameters: { firstName: { type: "string", required: true, description: "First name" }, firstName: { type: "string", required: true, description: "firstName parameter" }, lastName: { type: "string", required: true, description: "lastName parameter" }, username: { type: "string", required: true, description: "username parameter" }, emailAddress: { type: "string", required: true, description: "emailAddress parameter" }, textMessageNumber: { type: "string", required: true, description: "textMessageNumber parameter" }, newUserPassword: { type: "string", required: true, description: "newUserPassword parameter" }, company_name: { type: "string", required: true, description: "company_name parameter" }, on_your_domain: { type: "boolean", required: false, description: "on_your_domain parameter" }, firstName: { type: "string", required: true, description: "firstName parameter" }, lastName: { type: "string", required: true, description: "lastName parameter" }, username: { type: "string", required: true, description: "username parameter" }, emailAddress: { type: "string", required: true, description: "emailAddress parameter" }, textMessageNumber: { type: "string", required: true, description: "textMessageNumber parameter" }, newUserPassword: { type: "string", required: true, description: "newUserPassword parameter" }, company_name: { type: "string", required: true, description: "company_name parameter" }, on_your_domain: { type: "boolean", required: false, description: "on_your_domain parameter" }, lastName: { type: "string", required: true, description: "Last name" }, emailAddress: { type: "string", required: true, description: "Email address" }, username: { type: "string", required: true, description: "Username" }, newUserPassword: { type: "string", required: true, description: "Password" }, { path: "/api/get/document/{userId}/{rowId}/{key}", method: "GET", controller: "DocumentController@getDocument", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Create a public link to access a document", parameters: { userId: { type: "string", required: true, description: "User ID" }, rowId: { type: "string", required: true, description: "Row ID" }, key: { type: "string", required: true, description: "Document key" }, { path: "/api/get-form-without-auth/{id}", method: "GET", controller: "FormsController@getFormWithoutAuth", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get form by ID without authentication", parameters: { id: { type: "string", required: true, description: "Form ID" }, { path: "/api/store-intake-form-data", method: "POST", controller: "FormsController@storeIntakeFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store intake form data", parameters: { form_data: { type: "object", required: true, description: "Form data" }, form_id: { type: "integer", required: true, description: "form_id parameter" }, pid: { type: "integer", required: true, description: "pid parameter" }, practitioner_id: { type: "integer", required: false, description: "practitioner_id parameter" }, schema: { type: "string", required: true, description: "JSON schema of the form" }, orginal_form_schema: { type: "string", required: true, description: "Original JSON schema of the form" }, signatureMetaData: { type: "string", required: false, description: "JSON metadata for signatures" }, file_field_name: { type: "file", required: false, description: "File upload fields (multiple can be included)" }, { path: "/api/update-intake-form-data/{id}", method: "POST", controller: "FormsController@updateIntakeFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update intake form data", parameters: { id: { type: "string", required: true, description: "Form data ID" }, form_data: { type: "object", required: true, description: "Form data" }, { path: "/api/get-signed-patient-data/{id}", method: "GET", controller: "PatientController@getSignedPatientData", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get signed patient form data", parameters: { id: { type: "string", required: true, description: "Patient data ID" }, { path: "/api/get-pdf-url/{id}", method: "GET", controller: "DocumentController@getPdfUrl", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get PDF URL", parameters: { id: { type: "string", required: true, description: "Document ID" }, { path: "/api/user-list-profile/{id}", method: "GET", controller: "UserController@getUserProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get user profile by ID", parameters: { id: { type: "string", required: true, description: "User ID" }, { path: "/api/user/set-password/{token}", method: "POST", controller: "UserController@setPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Set user password", parameters: { token: { type: "string", required: true, description: "Password reset token" }, password: { type: "string", required: true, description: "New password" }, { path: "/api/patient/refresh-token", method: "POST", controller: "PatientController@refreshToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Refresh patient authentication token", parameters: { refresh_token: { type: "string", required: true, description: "Refresh token", }, { path: "/api/register-patients", method: "POST", controller: "PatientController@registerPatients", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Register a new patient without authentication", parameters: { first_name: { type: "string", required: true, description: "First name" }, last_name: { type: "string", required: true, description: "Last name" }, email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, dob: { type: "string", required: true, description: "Date of birth" }, phone_no: { type: "string", required: true, description: "Phone number" }, gender: { type: "string", required: true, description: "Gender" }, { path: "/api/patient-login-api", method: "POST", controller: "PatientController@loginApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Patient login without authentication", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, { path: "/api/patient-order-create", method: "POST", controller: "OrderController@createPatientOrder", category: ENDPOINT_CATEGORIES.BILLING_ORDERS, description: "Create a patient order", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, patient_id: { type: "integer", required: true, description: "patient_id parameter" }, shipping_address1: { type: "string", required: true, description: "shipping_address1 parameter" }, shipping_address2: { type: "string", required: false, description: "shipping_address2 parameter" }, shipping_city: { type: "string", required: true, description: "shipping_city parameter" }, shipping_state: { type: "string", required: true, description: "shipping_state parameter" }, shipping_zipcode: { type: "string", required: true, description: "shipping_zipcode parameter" }, shipping_country: { type: "string", required: true, description: "shipping_country parameter" }, shipping_amount: { type: "number", required: true, description: "shipping_amount parameter" }, total_amount: { type: "number", required: true, description: "total_amount parameter" }, practitioner_fee: { type: "number", required: false, description: "practitioner_fee parameter" }, affiliate_email: { type: "string", required: false, description: "affiliate_email parameter" }, provider_id: { type: "integer", required: true, description: "provider_id parameter" }, appointment_id: { type: "integer", required: false, description: "appointment_id parameter" }, pending_task: { type: "boolean", required: false, description: "pending_task parameter" }, builder_id: { type: "integer", required: false, description: "builder_id parameter" }, discount_amount: { type: "number", required: false, description: "discount_amount parameter" }, coupon_code: { type: "string", required: false, description: "coupon_code parameter" }, items: { type: "array", required: true, description: "items parameter" }, order_items: { type: "array", required: true, description: "Order items" }, { path: "/api/patient-book-appointment", method: "POST", controller: "AppointmentController@bookPatientAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Book a patient appointment", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, start_time: { type: "string", required: true, description: "start_time parameter" }, end_time: { type: "string", required: true, description: "end_time parameter" }, practitioner_id: { type: "integer", required: true, description: "practitioner_id parameter" }, notes: { type: "string", required: false, description: "notes parameter" }, order_id: { type: "integer", required: false, description: "order_id parameter" }, affiliate_email: { type: "string", required: false, description: "affiliate_email parameter" }, practitioner_id: { type: "string", required: true, description: "Practitioner ID" }, appointment_date: { type: "string", required: true, description: "Appointment date" }, appointment_time: { type: "string", required: true, description: "Appointment time" }, { path: "/api/redirect-with-auth/{pid}", method: "GET", controller: "AuthController@redirectWithAuth", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get authentication token for redirect", parameters: { pid: { type: "string", required: true, description: "Patient ID" }, { path: "/api/patient/available-slots/{date}", method: "POST", controller: "AppointmentController@getAvailableSlots", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get available appointment slots for a specific date", parameters: { date: { type: "string", required: true, description: "Date (YYYY-MM-DD)" }, { path: "/api/check-email", method: "POST", controller: "AuthController@checkEmail", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Check email availability", parameters: { email: { type: "string", required: true, description: "Email address" }, email: { type: "string", required: true, description: "email parameter" }, { path: "/api/generate-permanent-token/{userId}", method: "GET", controller: "TokenController@generatePermanentToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Generate a permanent API token for a user", parameters: { userId: { type: "string", required: true, description: "User ID" }, // ===== NEW TOOLS FROM API DOCUMENTATION ===== { path: "/api/download/pdf/{id}/{type}", method: "GET", controller: "ApiController@downloadPdfFile", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Download or view PDF file", parameters: { id: { type: "integer", required: true, description: "Form ID" }, type: { type: "string", required: true, description: "Action type (download or view)" }, { path: "/api/forgot-password", method: "POST", controller: "ApiController@forgotPassword", category: ENDPOINT_CATEGORIES.GENERAL, description: "Forgot password functionality", parameters: { email: { type: "string", required: true, description: "email parameter" }, { path: "/api/generate-patient-summary/{patientId}", method: "GET", controller: "ApiController@generatePatientSummary", category: ENDPOINT_CATEGORIES.GENERAL, description: "Generate AI summary for patient", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/generate-permanent-token/{userId}", method: "GET", controller: "ApiController@generatePermanentToken", category: ENDPOINT_CATEGORIES.GENERAL, description: "Generate a permanent API token for a user", parameters: { userId: { type: "integer", required: true, description: "User ID" }, { path: "/api/get-form-without-auth/{id}", method: "GET", controller: "ApiController@getFormByIdwithouthAuth", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get form by ID without authentication", parameters: { id: { type: "integer", required: true, description: "Form ID" }, { path: "/api/get-patient-forms-list/{patientId}", method: "GET", controller: "ApiController@getPatientFormsList", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get patient forms list", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-patient-full-details/{patientId}", method: "GET", controller: "ApiController@getPatientFullDetails", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get comprehensive patient details", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-patient-summary/{patientId}", method: "GET", controller: "ApiController@getPatientSummary", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient summary", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-pdf-url/{id}", method: "GET", controller: "ApiController@getPdfUrl", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get PDF URL", parameters: { id: { type: "integer", required: true, description: "Form submission ID" }, { path: "/api/get-signed-patient-data/{id}", method: "GET", controller: "ApiController@getSignedData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get signed patient form data", parameters: { id: { type: "integer", required: true, description: "Form submission ID" }, signature: { type: "string", required: true, description: "URL signature for validation" }, expires: { type: "integer", required: true, description: "URL expiration timestamp" }, { path: "/api/get/document/{userId}/{rowId}/{key}", method: "GET", controller: "ApiController@createPublicLink", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Create a public link to access a document", parameters: { userId: { type: "integer", required: true, description: "User ID" }, rowId: { type: "integer", required: true, description: "ID of the intake form record" }, key: { type: "string", required: true, description: "Key identifier for the document in the form data" }, { path: "/api/login-patient", method: "POST", controller: "ApiController@loginPatient", category: ENDPOINT_CATEGORIES.GENERAL, description: "Patient login", parameters: { email: { type: "string", required: true, description: "email parameter" }, password: { type: "string", required: true, description: "password parameter" }, { path: "/api/password-reset", method: "POST", controller: "ApiController@resetPassword", category: ENDPOINT_CATEGORIES.GENERAL, description: "Reset password functionality", parameters: { token: { type: "string", required: true, description: "token parameter" }, email: { type: "string", required: true, description: "email parameter" }, password: { type: "string", required: true, description: "password parameter" }, password_confirmation: { type: "string", required: true, description: "password_confirmation parameter" }, { path: "/api/patient/available-slots/{date}", method: "POST", controller: "ApiController@availableSlotsForPatient", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get available appointment slots for a specific date", parameters: { date: { type: "string", required: true, description: "Date in YYYY-MM-DD format" }, { path: "/api/patient/login", method: "POST", controller: "ApiController@loginPatientWithoutAuthAuth", category: ENDPOINT_CATEGORIES.GENERAL, description: "Patient login without authentication middleware", parameters: { email: { type: "string", required: true, description: "email parameter" }, password: { type: "string", required: true, description: "password parameter" }, { path: "/api/redirect-with-auth/{pid}", method: "GET", controller: "ApiController@redirectWithAuth", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get authentication token for redirect", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/register-patient", method: "POST", controller: "ApiController@registerPatientWithoutAuthAuth", category: ENDPOINT_CATEGORIES.GENERAL, description: "Register patient without authentication", parameters: { firstName: { type: "string", required: true, description: "firstName parameter" }, lastName: { type: "string", required: true, description: "lastName parameter" }, email: { type: "string", required: true, description: "email parameter" }, password: { type: "string", required: true, description: "password parameter" }, dateOfBirth: { type: "string", required: true, description: "dateOfBirth parameter" }, gender: { type: "string", required: true, description: "gender parameter" }, phone: { type: "string", required: true, description: "phone parameter" }, username: { type: "string", required: true, description: "username parameter" }, provider_id: { type: "integer", required: false, description: "provider_id parameter" }, { path: "/api/set-password/{token}", method: "POST", controller: "ApiController@setPassword", category: ENDPOINT_CATEGORIES.GENERAL, description: "Set password for patient account", parameters: { token: { type: "string", required: true, description: "Password reset token" }, password: { type: "string", required: true, description: "password parameter" }, password_confirmation: { type: "string", required: true, description: "password_confirmation parameter" }, { path: "/api/update-intake-form-data/{id}", method: "POST", controller: "ApiController@updatesIntakeFormData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update intake form data", parameters: { id: { type: "integer", required: true, description: "Intake form record ID" }, form_id: { type: "integer", required: true, description: "form_id parameter" }, pid: { type: "integer", required: true, description: "pid parameter" }, practitioner_id: { type: "integer", required: false, description: "practitioner_id parameter" }, schema: { type: "string", required: true, description: "JSON schema of the form" }, orginal_form_schema: { type: "string", required: true, description: "Original JSON schema of the form" }, signatureMetaData: { type: "string", required: false, description: "JSON metadata for signatures" }, file_field_name: { type: "file", required: false, description: "File upload fields (multiple can be included)" }, { path: "/api/update-patient-summary/{patientId}", method: "POST", controller: "ApiController@updatePatientSummary", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update patient summary", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, summary: { type: "string", required: true, description: "summary parameter" }, { path: "/api/user-list-profile/{id}", method: "GET", controller: "ApiController@getUserProfileById", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get user profile by ID", parameters: { id: { type: "integer", required: true, description: "User ID" }, { path: "/api/user/set-password/{token}", method: "POST", controller: "ApiController@setUserPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Set user password", parameters: { token: { type: "string", required: true, description: "Password set token" }, password: { type: "string", required: true, description: "password parameter" } ]; /** * Provider endpoints (provider authentication required) * All clinical data management, EMR operations, and healthcare data requiring HIPAA compliance */ export const PROVIDER_ENDPOINTS = [ // ===== PATIENT MANAGEMENT (EMR) ===== { path: "/api/emr/patients-list", method: "GET", controller: "EMRAPI\\PatientController@patientsList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Patient datatable with DataTable server-side parameters", parameters: { draw: { type: "number", required: false, description: "DataTable draw parameter" }, columns: { type: "array", required: false, description: "DataTable columns" }, order: { type: "array", required: false, description: "DataTable order" }, start: { type: "number", required: false, description: "DataTable start" }, length: { type: "number", required: false, description: "DataTable length" }, search: { type: "object", required: false, description: "DataTable search" }, page: { type: "number", required: false, description: "Page number" }, itemsPerPage: { type: "number", required: false, description: "Items per page" }, sortBy: { type: "array", required: false, description: "Sort by fields" }, filters: { type: "object", required: false, description: "Filter parameters" }, { path: "/api/emr/patient-data/{patient_id}", method: "GET", controller: "EMRAPI\\PatientController@getPatientData", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get single patient by ID", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, { path: "/api/emr/get-patient-data/{patient_id}", method: "GET", controller: "EMRAPI\\PatientController@getPatientDataById", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get single patient data by ID", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, { path: "/api/emr/register-patients", method: "POST", controller: "EMRAPI\\PatientController@registerPatient", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Register patient (EMR) with complete demographic data", parameters: { firstName: { type: "string", required: true, description: "First name" }, lastName: { type: "string", required: true, description: "Last name" }, middleName: { type: "string", required: false, description: "Middle name" }, preferredName: { type: "string", required: false, description: "Preferred name" }, email: { type: "string", required: true, description: "Email address" }, contactMethod: { type: "string", required: false, description: "Contact method" }, personalID: { type: "string", required: false, description: "Personal ID" }, dateOfBirth: { type: "string", required: true, description: "Date of birth" }, sexatBirth: { type: "string", required: false, description: "Sex at birth" }, genderIdentity: { type: "string", required: false, description: "Gender identity" }, race: { type: "string", required: false, description: "Race" }, pronoun: { type: "string", required: false, description: "Pronoun" }, ageGroup: { type: "string", required: false, description: "Age group" }, timezone: { type: "string", required: false, description: "Timezone" }, preferredPhone: { type: "string", required: false, description: "Preferred phone" }, alternativePhone: { type: "string", required: false, description: "Alternative phone" }, textmsgNumber: { type: "string", required: false, description: "Text message number" }, address: { type: "string", required: false, description: "Address" }, city: { type: "string", required: false, description: "City" }, state: { type: "string", required: false, description: "State" }, zipcode: { type: "string", required: false, description: "ZIP code" }, primaryPractitioner: { type: "string", required: false, description: "Primary practitioner" }, primaryCarePhysician: { type: "string", required: false, description: "Primary care physician" }, guardian: { type: "string", required: false, description: "Guardian" }, emergencyContactNumber: { type: "string", required: false, description: "Emergency contact number" }, emergencyContactNameRelation: { type: "string", required: false, description: "Emergency contact name relation" }, patientMaritalStatus: { type: "string", required: false, description: "Patient marital status" }, occupation: { type: "string", required: false, description: "Occupation" }, referredBy: { type: "string", required: false, description: "Referred by" }, patientNote: { type: "string", required: false, description: "Patient note" }, password: { type: "string", required: false, description: "Patient portal password" }, status: { type: "string", required: false, description: "Patient status" }, isportalAccess: { type: "boolean", required: false, description: "Portal access flag" }, { path: "/api/emr/update-patient/{patient_id}", method: "POST", controller: "EMRAPI\\PatientController@updatePatient", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient with complete demographic data", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, firstName: { type: "string", required: false, description: "First name" }, lastName: { type: "string", required: false, description: "Last name" }, fullName: { type: "string", required: false, description: "Full name" }, middleName: { type: "string", required: false, description: "Middle name" }, preferredName: { type: "string", required: false, description: "Preferred name" }, email: { type: "string", required: false, description: "Email address" }, contactMethod: { type: "string", required: false, description: "Contact method" }, personalID: { type: "string", required: false, description: "Personal ID" }, dateOfBirth: { type: "string", required: false, description: "Date of birth" }, sexatBirth: { type: "string", required: false, description: "Sex at birth" }, genderIdentity: { type: "string", required: false, description: "Gender identity" }, race: { type: "string", required: false, description: "Race" }, pronoun: { type: "string", required: false, description: "Pronoun" }, ageGroup: { type: "string", required: false, description: "Age group" }, timezone: { type: "string", required: false, description: "Timezone" }, preferredPhone: { type: "string", required: false, description: "Preferred phone" }, alternativePhone: { type: "string", required: false, description: "Alternative phone" }, textmsgNumber: { type: "string", required: false, description: "Text message number" }, address: { type: "string", required: false, description: "Address" }, city: { type: "string", required: false, description: "City" }, state: { type: "string", required: false, description: "State" }, zipcode: { type: "string", required: false, description: "ZIP code" }, primaryPractitioner: { type: "string", required: false, description: "Primary practitioner" }, primaryCarePhysician: { type: "string", required: false, description: "Primary care physician" }, guardian: { type: "string", required: false, description: "Guardian" }, emergencyContactNumber: { type: "string", required: false, description: "Emergency contact number" }, emergencyContactNameRelation: { type: "string", required: false, description: "Emergency contact name relation" }, patientMaritalStatus: { type: "string", required: false, description: "Patient marital status" }, occupation: { type: "string", required: false, description: "Occupation" }, referredBy: { type: "string", required: false, description: "Referred by" }, patientNote: { type: "string", required: false, description: "Patient note" }, password: { type: "string", required: false, description: "Patient portal password" }, status: { type: "string", required: false, description: "Patient status" }, isportalAccess: { type: "boolean", required: false, description: "Portal access flag" }, profilePicture: { type: "file", required: false, description: "Profile picture file" }, avatar: { type: "file", required: false, description: "Avatar file" }, // ===== PRESCRIPTION MANAGEMENT ===== { path: "/api/emr/prescription/store/{patient_id}", method: "POST", controller: "EMRAPI\\PrescriptionController@store", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Store medication with actual API parameter names", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, medication_data: { type: "object", required: true, description: "Complete medication object from medicationService.js" }, { path: "/api/emr/prescriptions/{patient_id}", method: "GET", controller: "EMRAPI\\PrescriptionController@getPatientPrescriptions", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Get patient medication data with filters", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, src: { type: "string", required: false, description: "Source filter" }, status: { type: "string", required: false, description: "Status filter" }, { path: "/api/emr/prescriptions/update/{prescription_id}", method: "PUT", controller: "EMRAPI\\PrescriptionController@updatePrescription", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Update prescription status with actual API parameter names from medicationService.js", parameters: { prescription_id: { type: "string", required: true, description: "Prescription ID" }, status: { type: "string", required: false, description: "Prescription status" }, signature: { type: "string", required: false, description: "Signature" }, note: { type: "string", required: false, description: "Note" }, tracking_id: { type: "string", required: false, description: "Tracking ID" }, needs_followup: { type: "boolean", required: false, description: "Needs followup flag" }, followup_days: { type: "number", required: false, description: "Followup days" }, // ===== FORMS MANAGEMENT ===== { path: "/api/get-forms", method: "GET", controller: "FormController@getForms", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get forms", parameters: {}, { path: "/api/store-form", method: "POST", controller: "FormController@storeForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store form", parameters: { form_data: { type: "object", required: true, description: "Form data" }, type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)" }, data: { type: "object", required: true, description: "Form structure and fields" }, name: { type: "string", required: true, description: "name parameter" }, { path: "/api/update-form/{form_id}", method: "PUT", controller: "FormController@updateForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update form", parameters: { form_id: { type: "string", required: true, description: "Form ID" }, form_data: { type: "object", required: true, description: "Form data" }, { path: "/api/delete-form/{form_id}", method: "DELETE", controller: "FormController@deleteForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Delete form", parameters: { form_id: { type: "string", required: true, description: "Form ID" }, // ===== CONSENT FORMS ===== { path: "/api/emr/get-consent-forms", method: "GET", controller: "EMRAPI\\ConsentFormController@getConsentForms", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get consent forms", parameters: {}, { path: "/api/store-consent-form", method: "POST", controller: "ConsentFormController@storeConsentForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store consent form", parameters: { form_data: { type: "object", required: true, description: "Consent form data" }, { path: "/api/get-consent-form/{form_id}", method: "GET", controller: "ConsentFormController@getConsentForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get consent form by ID", parameters: { form_id: { type: "string", required: true, description: "Form ID" }, { path: "/api/update-consent-form/{form_id}", method: "PUT", controller: "ConsentFormController@updateConsentForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update consent form", parameters: { form_id: { type: "string", required: true, description: "Form ID" }, form_data: { type: "object", required: true, description: "Consent form data" }, { path: "/api/delete-consent-form/{form_id}", method: "DELETE", controller: "ConsentFormController@deleteConsentForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Delete consent form", parameters: { form_id: { type: "string", required: true, description: "Form ID" }, // ===== LAB MANAGEMENT ===== { path: "/api/get-labdiagonostics", method: "GET", controller: "LabController@getLabDiagnostics", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get lab diagnostics", parameters: {}, { path: "/api/store-labdiagonostics", method: "POST", controller: "LabController@storeLabDiagnostics", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Store lab diagnostics", parameters: { lab_data: { type: "object", required: true, description: "Lab diagnostic data" }, { path: "/api/labs/list", method: "GET", controller: "LabController@labsList", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get labs list", parameters: {}, { path: "/api/labs/create", method: "POST", controller: "LabController@createLab", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Create lab", parameters: { lab_data: { type: "object", required: true, description: "Lab data" }, // ===== MEDICINE MANAGEMENT ===== { path: "/api/emr/get-medicine-list", method: "GET", controller: "EMRAPI\\MedicineController@getMedicineList", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Get medicine list", parameters: {}, { path: "/api/emr/import-medicines", method: "POST", controller: "EMRAPI\\MedicineController@importMedicines", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Import medicines from Excel", parameters: { excel_file: { type: "file", required: true, description: "Excel file with medicines" }, { path: "/api/add_medicine_template", method: "POST", controller: "MedicineTemplateController@addTemplate", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Store medicine template", parameters: { template_data: { type: "object", required: true, description: "Medicine template data" }, { path: "/api/update_medicine_template/{template_id}", method: "PUT", controller: "MedicineTemplateController@updateTemplate", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Update medicine template", parameters: { template_id: { type: "string", required: true, description: "Template ID" }, template_data: { type: "object", required: true, description: "Medicine template data" }, // ===== BUILDER MANAGEMENT ===== { path: "/api/emr/get-themes-list", method: "GET", controller: "EMRAPI\\BuilderController@getThemesList", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get themes list", parameters: {}, { path: "/api/emr/store-builder", method: "POST", controller: "EMRAPI\\BuilderController@storeBuilder", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Store builder with complete configuration", parameters: { builder_name: { type: "string", required: true, description: "Builder name" }, practitioner_id: { type: "string", required: true, description: "Practitioner ID" }, intakes: { type: "array", required: false, description: "Intake forms" }, questionnaire: { type: "array", required: false, description: "Questionnaire forms" }, products: { type: "array", required: false, description: "Products" }, paymentOption: { type: "object", required: false, description: "Payment options" }, patientFlow: { type: "object", required: false, description: "Patient flow configuration" }, { path: "/api/emr/store-builder-config/{id}", method: "POST", controller: "EMRAPI\\BuilderController@storeBuilderConfig", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Store builder config with styling options", parameters: { id: { type: "string", required: true, description: "Builder ID" }, theme: { type: "string", required: false, description: "Theme" }, bgColor: { type: "string", required: false, description: "Background color" }, btncolor: { type: "string", required: false, description: "Button color" }, textColor: { type: "string", required: false, description: "Text color" }, practitioner_fee: { type: "number", required: false, description: "Practitioner fee" }, // ===== APPOINTMENT MANAGEMENT ===== { path: "/api/emr/appointments-list", method: "GET", controller: "EMRAPI\\AppointmentController@appointmentsList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointments list with DataTable parameters", parameters: { draw: { type: "number", required: false, description: "DataTable draw parameter" }, columns: { type: "array", required: false, description: "DataTable columns" }, order: { type: "array", required: false, description: "DataTable order" }, start: { type: "number", required: false, description: "DataTable start" }, length: { type: "number", required: false, description: "DataTable length" }, search: { type: "object", required: false, description: "DataTable search" }, { path: "/api/emr/create-appointment", method: "POST", controller: "EMRAPI\\AppointmentController@createAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Create appointment with complete scheduling data", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, practitioner_id: { type: "string", required: true, description: "Practitioner ID" }, appointment_date: { type: "string", required: true, description: "Appointment date" }, appointment_time: { type: "string", required: true, description: "Appointment time" }, duration: { type: "number", required: false, description: "Duration in minutes" }, appointment_type: { type: "string", required: false, description: "Appointment type" }, reason: { type: "string", required: false, description: "Appointment reason" }, notes: { type: "string", required: false, description: "Additional notes" }, location_id: { type: "string", required: false, description: "Location ID" }, status: { type: "string", required: false, description: "Appointment status" }, { path: "/api/emr/update-appointment/{appointment_id}", method: "PUT", controller: "EMRAPI\\AppointmentController@updateAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Update appointment", parameters: { appointment_id: { type: "string", required: true, description: "Appointment ID" }, appointment_date: { type: "string", required: false, description: "Appointment date" }, appointment_time: { type: "string", required: false, description: "Appointment time" }, duration: { type: "number", required: false, description: "Duration in minutes" }, status: { type: "string", required: false, description: "Appointment status" }, notes: { type: "string", required: false, description: "Additional notes" }, { path: "/api/emr/cancel-appointment/{appointment_id}", method: "DELETE", controller: "EMRAPI\\AppointmentController@cancelAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Cancel appointment", parameters: { appointment_id: { type: "string", required: true, description: "Appointment ID" }, cancellation_reason: { type: "string", required: false, description: "Cancellation reason" }, // ===== DOCUMENT MANAGEMENT ===== { path: "/api/emr/documents/upload", method: "POST", controller: "EMRAPI\\DocumentController@uploadDocument", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Upload patient document", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, document_file: { type: "file", required: true, description: "Document file" }, document_type: { type: "string", required: true, description: "Document type" }, document_name: { type: "string", required: false, description: "Document name" }, description: { type: "string", required: false, description: "Document description" }, { path: "/api/emr/documents/{patient_id}", method: "GET", controller: "EMRAPI\\DocumentController@getPatientDocuments", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get patient documents", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, { path: "/api/emr/documents/delete/{document_id}", method: "DELETE", controller: "EMRAPI\\DocumentController@deleteDocument", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Delete document", parameters: { document_id: { type: "string", required: true, description: "Document ID" }, // ===== MEDICAL RECORDS ===== { path: "/api/emr/medical-records/{patient_id}", method: "GET", controller: "EMRAPI\\MedicalRecordController@getPatientRecords", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get patient medical records", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, { path: "/api/emr/medical-records/create", method: "POST", controller: "EMRAPI\\MedicalRecordController@createRecord", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Create medical record", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, record_type: { type: "string", required: true, description: "Record type" }, diagnosis: { type: "string", required: false, description: "Diagnosis" }, treatment: { type: "string", required: false, description: "Treatment" }, notes: { type: "string", required: false, description: "Medical notes" }, vital_signs: { type: "object", required: false, description: "Vital signs data" }, allergies: { type: "array", required: false, description: "Patient allergies" }, medications: { type: "array", required: false, description: "Current medications" }, { path: "/api/emr/medical-records/update/{record_id}", method: "PUT", controller: "EMRAPI\\MedicalRecordController@updateRecord", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Update medical record", parameters: { record_id: { type: "string", required: true, description: "Record ID" }, diagnosis: { type: "string", required: false, description: "Diagnosis" }, treatment: { type: "string", required: false, description: "Treatment" }, notes: { type: "string", required: false, description: "Medical notes" }, vital_signs: { type: "object", required: false, description: "Vital signs data" }, // ===== PROVIDER MANAGEMENT ===== { path: "/api/emr/providers-list", method: "GET", controller: "EMRAPI\\ProviderController@providersList", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get providers list", parameters: {}, { path: "/api/emr/provider-profile", method: "GET", controller: "EMRAPI\\ProviderController@getProfile", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get provider profile", parameters: {}, { path: "/api/emr/update-provider-profile", method: "POST", controller: "EMRAPI\\ProviderController@updateProfile", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update provider profile", parameters: { firstName: { type: "string", required: false, description: "First name" }, lastName: { type: "string", required: false, description: "Last name" }, emailAddress: { type: "string", required: false, description: "Email address" }, textMessageNumber: { type: "string", required: false, description: "Text message number" }, specialties: { type: "array", required: false, description: "Medical specialties" }, license_number: { type: "string", required: false, description: "License number" }, npi_number: { type: "string", required: false, description: "NPI number" }, // ===== HEALTHCARE DATA ACCESS (MOVED FROM PUBLIC FOR HIPAA COMPLIANCE) ===== { path: "/api/practitioners-list", method: "GET", controller: "PractitionerController@practitionersList", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get practitioner list (requires provider authentication)", parameters: {}, { path: "/api/get-specialties", method: "GET", controller: "SpecialtyController@getSpecialties", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get medical specialties (requires provider authentication)", parameters: {}, { path: "/api/get-states", method: "GET", controller: "LocationController@getStates", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get states list (requires provider authentication)", parameters: {}, { path: "/api/get-cities/{state_id}", method: "GET", controller: "LocationController@getCities", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get cities by state (requires provider authentication)", parameters: { state_id: { type: "string", required: true, description: "State ID" }, { path: "/api/get-countries", method: "GET", controller: "LocationController@getCountries", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get countries list (requires provider authentication)", parameters: {}, { path: "/api/get-timezones", method: "GET", controller: "LocationController@getTimezones", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get timezones list (requires provider authentication)", parameters: {}, { path: "/api/locations", method: "GET", controller: "LocationController@index", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get locations (requires provider authentication)", parameters: { draw: { type: "integer", required: false, description: "DataTables draw counter" }, start: { type: "integer", required: false, description: "DataTables start offset" }, length: { type: "integer", required: false, description: "DataTables page length" }, "search[value]": { type: "string", required: false, description: "DataTables search value" , "order[0][column]": { type: "integer", required: false, description: "DataTables column index for ordering" , "order[0][dir]": { type: "string", required: false, description: "DataTables order direction (asc/desc)" }, { path: "/api/get-pdf-list", method: "GET", controller: "DocumentController@getPdfList", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get PDF list (requires provider authentication for patient data protection)", parameters: {}, { path: "/api/store-questioner-form-data", method: "POST", controller: "PatientController@storeQuestionerFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store questioner form data (requires provider authentication for patient data protection)", parameters: { form_data: { type: "object", required: true, description: "Form data object" }, { path: "/api/store-patient-questionnaire-data", method: "POST", controller: "PatientController@storeQuestionQuestioner", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store patient questionnaire data (requires provider authentication for patient data protection)", parameters: { questionnaire_data: { type: "object", required: true, description: "Questionnaire data" }, { path: "/api/get-available-slots-data/{practitionerId}", method: "GET", controller: "AppointmentController@getAvailableSlots", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get available appointment slots (requires provider authentication for practitioner data protection)", parameters: { practitionerId: { type: "string", required: true, description: "Practitioner ID" }, // ===== NEW ENDPOINTS FROM API-DOCS.JSON ===== // Added key provider endpoints from api-docs.json (sample of 147 total) { path: "/get-asseblyai-token", method: "POST", controller: "MeetingController@getAssemblyAiToken", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Get AssemblyAI token", parameters: {}, { path: "/create-meeting/{meeting_id}", method: "GET", controller: "MeetingController@showMeeting", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Show meeting details", parameters: { meeting_id: { type: "string", required: true, description: "Meeting ID" }, { path: "/join-meeting/{meeting_id}", method: "GET", controller: "MeetingController@joinMeeting", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Join a meeting", parameters: { meeting_id: { type: "string", required: true, description: "Meeting ID" }, { path: "/api/start-call/{patient_id}/{agent_id}/{appointment_id}", method: "POST", controller: "MeetingController@startCall", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Start a call", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID" }, agent_id: { type: "integer", required: true, description: "Agent ID" }, appointment_id: { type: "integer", required: true, description: "Appointment ID" }, title: { type: "string", required: false, description: "Call title" }, { path: "/get-realtime-questions/{appointmentId}", method: "GET", controller: "MeetingController@getRealtimeQuestions", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Get real-time questions", parameters: { appointmentId: { type: "integer", required: true, description: "Appointment ID" }, { path: "/api/end-call/{patient_id}/{appointment_id}", method: "POST", controller: "MeetingController@endCall", category: ENDPOINT_CATEGORIES.MEETINGS, description: "End a call", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID" }, appointment_id: { type: "integer", required: true, description: "Appointment ID" }, { path: "/api/labs/search", method: "POST", controller: "LabController@searchLabsByAddress", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Search labs by address", parameters: { address: { type: "string", required: true, description: "Search address", }, { path: "/api/book-appointment", method: "POST", controller: "AppointmentController@bookAgentAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Book an appointment", parameters: { telemed_pros_id: { type: "integer", required: true, description: "Telemed pros ID", }, patient_id: { type: "integer", required: true, description: "patient_id parameter" }, doctor_id: { type: "integer", required: true, description: "doctor_id parameter" }, appointment_id: { type: "integer", required: true, description: "appointment_id parameter" }, appointment_time: { type: "string", required: true, description: "appointment_time parameter" }, patient_id: { type: "integer", required: true, description: "Patient ID" }, doctor_id: { type: "integer", required: true, description: "Doctor ID" }, appointment_id: { type: "integer", required: true, description: "Appointment ID" }, appointment_time: { type: "string", required: true, description: "Appointment time" }, { path: "/api/update-patient-info/{patientId}", method: "POST", controller: "PatientController@updateInfo", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient information", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, city: { type: "string", required: false, description: "City" }, state: { type: "string", required: false, description: "State" }, address: { type: "string", required: false, description: "Address" }, zip_code: { type: "string", required: false, description: "Zip code" }, dob: { type: "string", required: false, description: "Date of birth" }, country: { type: "string", required: false, description: "Country" }, { path: "/api/get-patient-info/{patientId}", method: "POST", controller: "PatientController@getInfo", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient information", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-doctors-list", method: "POST", controller: "DoctorController@getDoctorList", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get doctors list", parameters: {}, { path: "/api/add-note-patient", method: "POST", controller: "NoteController@addNotePatient", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Add a note for patient", parameters: { note: { type: "string", required: true, description: "Note content" }, note: { type: "string", required: true, description: "note parameter" }, note_type: { type: "string", required: true, description: "note_type parameter" }, note_type: { type: "string", required: true, description: "Note type" }, { path: "/api/get-note-patient", method: "GET", controller: "NoteController@getNotePatient", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get patient notes", parameters: {}, // ===== NEW TOOLS FROM API DOCUMENTATION ===== { path: "/add-inventory", method: "POST", controller: "ApiController@createInventoryItem", category: ENDPOINT_CATEGORIES.INVENTORY, description: "Add new inventory item", parameters: { inventoryType: { type: "string", required: false, description: "inventoryType parameter" }, item_name: { type: "string", required: false, description: "item_name parameter" }, price: { type: "number", required: false, description: "price parameter" }, expirationDate: { type: "string", required: false, description: "expirationDate parameter" }, { path: "/add-phone-log/{patient_id}", method: "POST", controller: "ApiController@addPhoneLog", category: ENDPOINT_CATEGORIES.MESSAGING, description: "Add a new phone log for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient" }, provider: { type: "string", required: true, description: "Name of the provider who made/received the call" }, message: { type: "string", required: true, description: "Details about the phone call" }, user_id: { type: "integer", required: true, description: "ID of the user who logged the call" }, { path: "/api/add-email/{patient_id}", method: "POST", controller: "ApiController@addEmail", category: ENDPOINT_CATEGORIES.MESSAGING, description: "Add a new email for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient" }, practitioner: { type: "integer", required: false, description: "User ID of the practitioner" }, messageText: { type: "string", required: true, description: "messageText parameter" }, to_email: { type: "string", required: true, description: "to_email parameter" }, from_email: { type: "string", required: false, description: "from_email parameter" }, emailTemplate: { type: "string", required: false, description: "Template name used for the email" }, subject: { type: "string", required: true, description: "subject parameter" }, { path: "/api/add-location", method: "POST", controller: "ApiController@addLocation", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Add a new location", parameters: { name: { type: "string", required: true, description: "name parameter" }, npiNumber: { type: "string", required: true, description: "npiNumber parameter" }, phoneNumber: { type: "string", required: true, description: "phoneNumber parameter" }, address: { type: "string", required: true, description: "address parameter" }, city: { type: "string", required: true, description: "city parameter" }, state: { type: "string", required: true, description: "state parameter" }, zipcode: { type: "string", required: true, description: "zipcode parameter" }, country: { type: "string", required: true, description: "country parameter" }, { path: "/api/add-task/{patient_id}", method: "POST", controller: "ApiController@addTask", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Add a new task for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient" }, task_title: { type: "string", required: true, description: "task_title parameter" }, task_body: { type: "string", required: true, description: "task_body parameter" }, task_due_date: { type: "string", required: true, description: "task_due_date parameter" }, task_assigned_to: { type: "integer", required: true, description: "task_assigned_to parameter" }, task_watchers: { type: "array", required: false, description: "task_watchers parameter" }, sendEmailtoPatientApplicationForTask: { type: "boolean", required: false, description: "sendEmailtoPatientApplicationForTask parameter" }, task_priority: { type: "string", required: false, description: "task_priority parameter" }, task_status: { type: "string", required: false, description: "task_status parameter" }, { path: "/api/add-user", method: "POST", controller: "ApiController@addUser", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Add new user (legacy method)", parameters: { firstName: { type: "string", required: true, description: "firstName parameter" }, lastName: { type: "string", required: true, description: "lastName parameter" }, username: { type: "string", required: true, description: "username parameter" }, emailAddress: { type: "string", required: true, description: "emailAddress parameter" }, textMessageNumber: { type: "string", required: true, description: "textMessageNumber parameter" }, dateOfBirth: { type: "string", required: false, description: "dateOfBirth parameter" }, gender: { type: "string", required: false, description: "gender parameter" }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter" }, zipcode: { type: "string", required: false, description: "zipcode parameter" }, role_id: { type: "string", required: true, description: "role_id parameter" }, newUserPassword: { type: "string", required: true, description: "newUserPassword parameter" }, type: { type: "string", required: true, description: "type parameter" }, avatarImg: { type: "file", required: false, description: "User profile image" }, { path: "/api/add-vital/{patientId}", method: "POST", controller: "ApiController@addVital", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Add vital signs for a patient", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, provider_id: { type: "integer", required: true, description: "provider_id parameter" }, blood_presssure: { type: "string", required: false, description: "blood_presssure parameter" }, diastolic: { type: "string", required: false, description: "diastolic parameter" }, weight_lbs: { type: "number", required: false, description: "weight_lbs parameter" }, height_ft: { type: "integer", required: false, description: "height_ft parameter" }, height_in: { type: "integer", required: false, description: "height_in parameter" }, temperature: { type: "number", required: false, description: "temperature parameter" }, pulse: { type: "integer", required: false, description: "pulse parameter" }, respiratory_rate: { type: "integer", required: false, description: "respiratory_rate parameter" }, saturation: { type: "integer", required: false, description: "saturation parameter" }, waist_in: { type: "number", required: false, description: "waist_in parameter" }, headCircumference_in: { type: "number", required: false, description: "headCircumference_in parameter" }, note: { type: "string", required: false, description: "note parameter" }, provider: { type: "string", required: false, description: "provider parameter" }, weight_oz: { type: "number", required: false, description: "weight_oz parameter" }, bmi: { type: "number", required: false, description: "bmi parameter" }, bloodSugar: { type: "number", required: false, description: "bloodSugar parameter" }, fasting: { type: "boolean", required: false, description: "fasting parameter" }, neck_in: { type: "number", required: false, description: "neck_in parameter" }, shoulders_in: { type: "number", required: false, description: "shoulders_in parameter" }, chest_in: { type: "number", required: false, description: "chest_in parameter" }, hips_in: { type: "number", required: false, description: "hips_in parameter" }, lean_body_mass_lbs: { type: "number", required: false, description: "lean_body_mass_lbs parameter" }, body_fat: { type: "number", required: false, description: "body_fat parameter" }, notes: { type: "string", required: false, description: "notes parameter" }, subjective_notes: { type: "string", required: false, description: "subjective_notes parameter" }, { path: "/api/appointment-detail/{appointment}", method: "POST", controller: "ApiController@appointmentDetail", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment details", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID" }, { path: "/api/assistant/practitioners-list", method: "GET", controller: "ApiController@assistantPractitioner", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get practitioners list via assistant" }, { path: "/api/assistant/save-signature", method: "POST", controller: "ApiController@assistantStoreSignature", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Store signature", parameters: { signature_data: { type: "string", required: true, description: "Base64 encoded signature image" }, provider_id: { type: "integer", required: false, description: "provider_id parameter" }, { path: "/api/assistant/store-form", method: "POST", controller: "ApiController@assistantFormDataStore", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store form data", parameters: { type: { type: "string", required: true, description: "type parameter" }, data: { type: "object", required: true, description: "Form structure and fields" }, name: { type: "string", required: true, description: "name parameter" }, { path: "/api/assistant/store-intake-form-data", method: "POST", controller: "ApiController@storeAssistantIntakeFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store intake form data", parameters: { form_id: { type: "integer", required: true, description: "form_id parameter" }, pid: { type: "integer", required: true, description: "pid parameter" }, practitioner_id: { type: "integer", required: false, description: "practitioner_id parameter" }, schema: { type: "string", required: true, description: "JSON schema of the form" }, orginal_form_schema: { type: "string", required: true, description: "Original form schema" }, signatureMetaData: { type: "string", required: false, description: "Signature metadata" }, file_field_name: { type: "file", required: false, description: "File upload fields (multiple can be included)" }, { path: "/api/assistant/update-form/{id}", method: "PUT", controller: "ApiController@updateAssistantForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update form", parameters: { id: { type: "integer", required: true, description: "Form ID" }, type: { type: "string", required: true, description: "type parameter" }, data: { type: "object", required: true, description: "Form structure and fields" }, name: { type: "string", required: true, description: "name parameter" }, { path: "/api/available-slots/{date}", method: "POST", controller: "ApiController@availableSlots", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get available appointment slots", parameters: { date: { type: "string", required: true, description: "Date (YYYY-MM-DD)" }, { path: "/api/company/complete/setup/{status}", method: "PUT", controller: "ApiController@completeSetupAssistant", category: ENDPOINT_CATEGORIES.GENERAL, description: "Complete company setup", parameters: { status: { type: "string", required: true, description: "Setup status (complete or incomplete)" }, { path: "/api/delete-form/{id}", method: "DELETE", controller: "ApiController@deleteForm", category: ENDPOINT_CATEGORIES.GENERAL, description: "Delete form", parameters: { id: { type: "integer", required: true, description: "Form ID" }, { path: "/api/delete-intake-question/{form_id}", method: "DELETE", controller: "ApiController@deleteIntakeQuestionById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Delete intake question", parameters: { form_id: { type: "integer", required: true, description: "Intake question ID" }, { path: "/api/document/download/{rowId}/{key}", method: "GET", controller: "ApiController@downloadDocument", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Download a patient document", parameters: { rowId: { type: "integer", required: true, description: "ID of the intake form record" }, key: { type: "string", required: true, description: "Key identifier for the document in the form data" }, { path: "/api/emr/appointment/{appointment_id}/order", method: "GET", controller: "ApiController@getAppointmentOrder", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment order details", parameters: { appointment_id: { type: "integer", required: true, description: "Appointment ID" }, { path: "/api/emr/appointment/{appointment}/detail", method: "GET", controller: "ApiController@getAppointmentDetailUnique", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment details", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID" }, { path: "/api/emr/appointment/{appointment}/update-meeting-analysis", method: "POST", controller: "ApiController@updateMeetingAnalysis", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Update meeting analysis", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID" }, data: { type: "object", required: false, description: "Meeting analytics data" }, { path: "/api/emr/appointment/{id}/cancel", method: "POST", controller: "ApiController@cancelAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Cancel an appointment", parameters: { id: { type: "integer", required: true, description: "Appointment ID" }, { path: "/api/emr/appointment/agent/{appointment}", method: "GET", controller: "ApiController@getAgentAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get agent appointment details", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID" }, { path: "/api/emr/appointment/list-by-date", method: "GET", controller: "ApiController@getAppointmentListByDateProvider", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointments by date range", parameters: { start_date: { type: "string", required: true, description: "Start date (YYYY-MM-DD)" }, end_date: { type: "string", required: true, description: "End date (YYYY-MM-DD)" }, { path: "/api/emr/appointment/queue/{patientId}", method: "POST", controller: "ApiController@addPatientToQueue", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Add patient to queue", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/emr/appointment/report/last-30-days", method: "GET", controller: "ApiController@last30DaysAppointmentsData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get appointment data for last 30 days", parameters: { start_date: { type: "string", required: true, description: "Start date (YYYY-MM-DD)" }, end_date: { type: "string", required: true, description: "End date (YYYY-MM-DD)" }, provider: { type: "string", required: false, description: "Provider ID or 'all' for all providers" }, { path: "/api/emr/appointment/transcribe/{patient_id}", method: "GET", controller: "ApiController@getAppointmentTranscribe", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment transcriptions", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/end-call/{patient_id}/{appointment_id}", method: "POST", controller: "ApiController@endCall", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "End a call", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID" }, appointment_id: { type: "integer", required: true, description: "Appointment ID" }, { path: "/api/form-pdf-save", method: "POST", controller: "ApiController@saveFormFile", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Save form file", parameters: { form_id: { type: "integer", required: true, description: "form_id parameter" }, pdf_data: { type: "string", required: true, description: "Base64 encoded PDF data" }, { path: "/api/get-all-forms", method: "GET", controller: "ApiController@getAllForms", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get all forms" }, { path: "/api/get-appointment-by-id", method: "POST", controller: "ApiController@getAppointmentByID", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment by ID", parameters: { appointment_id: { type: "integer", required: true, description: "appointment_id parameter" }, { path: "/api/get-appointment-list", method: "POST", controller: "ApiController@getAppointmentList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointments list" }, { path: "/api/get-appointment-list-date", method: "POST", controller: "ApiController@getAppointmentListByDate", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment list by date", parameters: { date: { type: "string", required: false, description: "date parameter" }, practitioner_id: { type: "integer", required: false, description: "practitioner_id parameter" }, { path: "/api/get-doctors-appointment-list", method: "POST", controller: "ApiController@getDoctorAppointmentList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get doctor appointments list" }, { path: "/api/get-doctors-appointment-list", method: "POST", controller: "ApiController@getDoctorAppointmentList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get doctor appointments list" }, { path: "/api/get-document-by-id/{patientId}/{did}", method: "GET", controller: "ApiController@getDocumentsById", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get a specific patient document by ID", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, did: { type: "integer", required: true, description: "Document ID" }, { path: "/api/get-document-vue/{patient_id}", method: "GET", controller: "ApiController@getDocumentVue", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get documents for Vue component", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-document/{patientId}", method: "GET", controller: "ApiController@getDocuments", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get patient documents", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-email-list/{patient_id}", method: "GET", controller: "ApiController@getEmailList", category: ENDPOINT_CATEGORIES.MESSAGING, description: "Get email list for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient" }, draw: { type: "integer", required: false, description: "DataTables draw counter" }, start: { type: "integer", required: false, description: "DataTables start offset" }, length: { type: "integer", required: false, description: "DataTables page length" }, "search[value]": { type: "string", required: false, description: "DataTables search value" }, "order[0][column]": { type: "integer", required: false, description: "DataTables column index for ordering" }, "order[0][dir]": { type: "string", required: false, description: "DataTables order direction (asc/desc)" }, { path: "/api/get-email/{id}", method: "GET", controller: "ApiController@getEmailById", category: ENDPOINT_CATEGORIES.MESSAGING, description: "Get an email by ID", parameters: { id: { type: "integer", required: true, description: "ID of the email to retrieve" }, { path: "/api/get-form/{id}", method: "GET", controller: "ApiController@getFormById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get form by ID", parameters: { id: { type: "integer", required: true, description: "Form ID" }, { path: "/api/get-forms/{type}", method: "GET", controller: "ApiController@getForms", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get forms by type", parameters: { type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)" }, { path: "/api/get-intake-forms-data/{form_id}", method: "GET", controller: "ApiController@getQuestionFormIntakeById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get intake form data by ID", parameters: { form_id: { type: "integer", required: true, description: "Form ID" }, { path: "/api/get-intake-forms-list", method: "GET", controller: "ApiController@getIntakeFormList", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get intake forms list" }, { path: "/api/get-location/{uuid}", method: "GET", controller: "ApiController@getLocationByUuid", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get a location by UUID", parameters: { uuid: { type: "string", required: true, description: "UUID of the location to retrieve" }, { path: "/api/get-patient-forms-list/{pid}", method: "GET", controller: "ApiController@getPatientIntakeSimpleFormList", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get patient intake simple forms list", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-patient-forms/{pid}", method: "GET", controller: "ApiController@getPatientFormList", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get all forms for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-patient-info/{patientId}", method: "POST", controller: "ApiController@getInfo", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient information", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-patient-intake-form-data/{form_id}/{pid}/{rowId}", method: "GET", controller: "ApiController@getIntakeFormData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient intake form data", parameters: { form_id: { type: "integer", required: true, description: "Form ID" }, pid: { type: "integer", required: true, description: "Patient ID" }, rowId: { type: "integer", required: true, description: "Row ID of the specific form submission" }, { path: "/api/get-patient-intake-form-latest-data/{form_id}/{pid}", method: "GET", controller: "ApiController@getIntakeFormLatestData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get latest intake form data", parameters: { form_id: { type: "integer", required: true, description: "Form ID" }, pid: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-patient-intake-form-list/{type}/{pid}", method: "GET", controller: "ApiController@getPatientIntakeFormList", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient intake forms by type", parameters: { type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)" }, pid: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-patient-questionnaire-form-list/{pid}", method: "GET", controller: "ApiController@getPatientQuestionairForm", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient questionnaire forms", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-patient-submitted-intake-forms/{pid}", method: "GET", controller: "ApiController@getMergedFormData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get all submitted forms for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-prescription-list/{patient_id}", method: "GET", controller: "ApiController@getPrescriptionList", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient prescription list", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/get-questioner-forms-data/{form_id}", method: "GET", controller: "ApiController@getQuestionFormQuestionerById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get questionnaire form data", parameters: { form_id: { type: "integer", required: true, description: "Form ID" }, { path: "/api/get-questioner-question/{id}", method: "GET", controller: "ApiController@getQuestionQuestionerById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get questionnaire question by ID", parameters: { id: { type: "integer", required: true, description: "Question ID" }, { path: "/api/get-stored-methods/{id}", method: "GET", controller: "ApiController@getStoredMethods", category: ENDPOINT_CATEGORIES.BILLING_ORDERS, description: "Get stored payment methods", parameters: { id: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/lab-detail/{appointment}", method: "GET", controller: "ApiController@labDetail", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get lab details for an appointment", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID" }, { path: "/api/lab-detail/{appointment}", method: "GET", controller: "ApiController@labDetail", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get lab details for an appointment", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID" }, { path: "/api/location/{id}", method: "GET", controller: "ApiController@getLocationById", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get a location by ID", parameters: { id: { type: "integer", required: true, description: "ID of the location to retrieve" }, { path: "/api/medical-problem/{id}", method: "GET", controller: "ApiController@getMedicalProblemById", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get a medical problem by ID", parameters: { id: { type: "integer", required: true, description: "ID of the medical problem to retrieve" }, { path: "/api/medical-problems-store/{pid}", method: "POST", controller: "ApiController@storeMedicalProblem", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Add a new medical problem for a patient", parameters: { pid: { type: "integer", required: true, description: "ID of the patient" }, name: { type: "string", required: true, description: "name parameter" }, lastDate: { type: "string", required: true, description: "lastDate parameter" }, nextDate: { type: "string", required: true, description: "nextDate parameter" }, screeningDetails: { type: "string", required: true, description: "screeningDetails parameter" }, flag: { type: "string", required: true, description: "Status flag for the medical problem" }, typeOfItem: { type: "string", required: true, description: "Type of medical problem" }, { path: "/api/medical-problems-update/{id}", method: "PUT", controller: "ApiController@updateMedicalProblemRecord", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Update an existing medical problem", parameters: { id: { type: "integer", required: true, description: "ID of the medical problem to update" }, name: { type: "string", required: true, description: "name parameter" }, lastDate: { type: "string", required: true, description: "lastDate parameter" }, nextDate: { type: "string", required: true, description: "nextDate parameter" }, screeningDetails: { type: "string", required: true, description: "screeningDetails parameter" }, flag: { type: "string", required: true, description: "Status flag for the medical problem" }, typeOfItem: { type: "string", required: true, description: "Type of medical problem" }, medical_problem_id: { type: "integer", required: true, description: "ID of the medical problem" }, { path: "/api/patient-data/{id}", method: "GET", controller: "ApiController@getAssistantPatientData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient data", parameters: { id: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/patients", method: "GET", controller: "ApiController@getPatientList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get a list of patients", parameters: { firstName: { type: "string", required: false, description: "Filter by patient's first name" }, lastName: { type: "string", required: false, description: "Filter by patient's last name" }, dateOfBirth: { type: "string", required: false, description: "Filter by patient's date of birth (YYYY-MM-DD)" }, email: { type: "string", required: false, description: "Filter by patient's email" }, { path: "/api/plans-product-sync", method: "POST", controller: "ApiController@syncProducts", category: ENDPOINT_CATEGORIES.GENERAL, description: "Save multiple products", parameters: { builder_id: { type: "string", required: true, description: "Base64 encoded builder ID" }, products: { type: "array", required: true, description: "products parameter" }, { path: "/api/plans-product-update", method: "POST", controller: "ApiController@updateOnPublish", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update product on publish", parameters: { builder_id: { type: "string", required: true, description: "Base64 encoded builder ID" }, product_id: { type: "integer", required: true, description: "product_id parameter" }, product_name: { type: "string", required: true, description: "product_name parameter" }, product_price: { type: "number", required: true, description: "product_price parameter" }, product_slug: { type: "string", required: true, description: "product_slug parameter" }, product_category: { type: "object", required: true, description: "product_category parameter" }, product_variation: { type: "array", required: false, description: "product_variation parameter" }, { path: "/api/provider-add-availability", method: "POST", controller: "ApiController@storeProviderAvailability", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Store provider availability", parameters: { title: { type: "string", required: true, description: "title parameter" }, start: { type: "string", required: true, description: "start parameter" }, end: { type: "string", required: true, description: "end parameter" }, type: { type: "string", required: true, description: "availability or event" }, comment: { type: "string", required: false, description: "comment parameter" }, practitioner_id: { type: "integer", required: false, description: "practitioner_id parameter" }, { path: "/api/provider/auth/logout", method: "POST", controller: "ApiController@logout", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Logout provider" }, { path: "/api/provider/practitioners-list", method: "GET", controller: "ApiController@providerPractitioner", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get practitioners list" }, { path: "/api/render/pdf/{rowId}", method: "GET", controller: "ApiController@renderPdf", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Render a PDF document", parameters: { rowId: { type: "integer", required: true, description: "ID of the intake form record" }, { path: "/api/save-category", method: "POST", controller: "ApiController@storeCategory", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Store product category", parameters: { name: { type: "string", required: true, description: "name parameter" }, description: { type: "string", required: false, description: "description parameter" }, { path: "/api/save-payment-method", method: "POST", controller: "ApiController@storePaymentMethodConfigAssistant", category: ENDPOINT_CATEGORIES.GENERAL, description: "Store payment method configuration", parameters: { payment_method: { type: "string", required: true, description: "payment_method parameter" }, api_key: { type: "string", required: false, description: "api_key parameter" }, secret_key: { type: "string", required: false, description: "secret_key parameter" }, is_active: { type: "boolean", required: false, description: "is_active parameter" }, { path: "/api/save-product", method: "POST", controller: "ApiController@assistantSaveProduct", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Save product", parameters: { name: { type: "string", required: true, description: "name parameter" }, description: { type: "string", required: false, description: "description parameter" }, price: { type: "number", required: true, description: "price parameter" }, category_id: { type: "integer", required: true, description: "category_id parameter" }, sku: { type: "string", required: false, description: "sku parameter" }, stock_quantity: { type: "integer", required: false, description: "stock_quantity parameter" }, { path: "/api/save-signature", method: "POST", controller: "ApiController@storeSignature", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Save provider signature", parameters: { signature: { type: "string", required: true, description: "signature parameter" }, { path: "/api/start-call/{patient_id}/{agent_id}/{appointment_id}", method: "POST", controller: "ApiController@startCall", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Start a call", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID" }, agent_id: { type: "integer", required: true, description: "Agent ID" }, appointment_id: { type: "integer", required: true, description: "Appointment ID" }, title: { type: "string", required: false, description: "title parameter" }, { path: "/api/store-company", method: "POST", controller: "ApiController@updateCompanyAssistant", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update company information", parameters: { name: { type: "string", required: true, description: "name parameter" }, address: { type: "string", required: false, description: "address parameter" }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter" }, zip: { type: "string", required: false, description: "zip parameter" }, phone: { type: "string", required: false, description: "phone parameter" }, email: { type: "string", required: false, description: "email parameter" }, website: { type: "string", required: false, description: "website parameter" }, logo: { type: "file", required: false, description: "Company logo" }, { path: "/api/store-document/{patientId}", method: "POST", controller: "ApiController@storeDocuments", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Store patient documents", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, files[]: { type: "array", required: false, description: "Document files to upload" }, document_type: { type: "string", required: false, description: "document_type parameter" }, notes: { type: "string", required: false, description: "notes parameter" }, { path: "/api/store-patient-consent-form", method: "POST", controller: "ApiController@storePatientConsentForm", category: ENDPOINT_CATEGORIES.GENERAL, description: "Store patient consent form", parameters: { form_id: { type: "integer", required: true, description: "form_id parameter" }, pid: { type: "integer", required: true, description: "pid parameter" }, data: { type: "object", required: true, description: "data parameter" }, name: { type: "string", required: true, description: "name parameter" }, signature: { type: "string", required: true, description: "signature parameter" }, { path: "/api/task/{id}", method: "GET", controller: "ApiController@getOneTaskById", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get a task by ID", parameters: { id: { type: "integer", required: true, description: "ID of the task to retrieve" }, { path: "/api/tasks/{patient_id}", method: "GET", controller: "ApiController@getTasks", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get all tasks for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient" }, draw: { type: "integer", required: false, description: "DataTables draw counter" }, start: { type: "integer", required: false, description: "DataTables start offset" }, length: { type: "integer", required: false, description: "DataTables page length" }, "search[value]": { type: "string", required: false, description: "DataTables search value" }, "order[0][column]": { type: "integer", required: false, description: "DataTables column index for ordering" }, "order[0][dir]": { type: "string", required: false, description: "DataTables order direction (asc/desc)" }, { path: "/api/token/create-with-abilities", method: "POST", controller: "ApiController@createTokenWithAbilities", category: ENDPOINT_CATEGORIES.GENERAL, description: "Create a token with specific abilities", parameters: { user_id: { type: "integer", required: true, description: "user_id parameter" }, token_name: { type: "string", required: true, description: "token_name parameter" }, abilities: { type: "array", required: true, description: "abilities parameter" }, expires_in_hours: { type: "integer", required: false, description: "expires_in_hours parameter" }, { path: "/api/token/generate-temporary", method: "POST", controller: "ApiController@generateTemporaryToken", category: ENDPOINT_CATEGORIES.GENERAL, description: "Generate a temporary API token", parameters: { user_id: { type: "integer", required: true, description: "user_id parameter" }, expires_in_hours: { type: "integer", required: true, description: "expires_in_hours parameter" }, abilities: { type: "array", required: false, description: "abilities parameter" }, { path: "/api/token/list/{userId}", method: "GET", controller: "ApiController@listUserTokens", category: ENDPOINT_CATEGORIES.GENERAL, description: "List all tokens for a user", parameters: { userId: { type: "integer", required: true, description: "User ID" }, { path: "/api/token/refresh", method: "POST", controller: "ApiController@refreshCurrentToken", category: ENDPOINT_CATEGORIES.GENERAL, description: "Refresh current token" }, { path: "/api/token/revoke", method: "DELETE", controller: "ApiController@revokeToken", category: ENDPOINT_CATEGORIES.GENERAL, description: "Revoke a specific token", parameters: { token_id: { type: "integer", required: true, description: "token_id parameter" }, { path: "/api/token/revoke-all/{userId}", method: "DELETE", controller: "ApiController@revokeAllUserTokens", category: ENDPOINT_CATEGORIES.GENERAL, description: "Revoke all tokens for a user", parameters: { userId: { type: "integer", required: true, description: "User ID" }, { path: "/api/update-category/{id}", method: "POST", controller: "ApiController@updateCategory", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Update product category", parameters: { id: { type: "integer", required: true, description: "Category ID" }, name: { type: "string", required: true, description: "name parameter" }, description: { type: "string", required: false, description: "description parameter" }, { path: "/api/update-form-status", method: "PUT", controller: "ApiController@updateFormRequestStatus", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update form request status", parameters: { form_id: { type: "integer", required: true, description: "form_id parameter" }, patient_id: { type: "integer", required: true, description: "patient_id parameter" }, status: { type: "string", required: true, description: "status parameter" }, { path: "/api/update-form/{id}", method: "PUT", controller: "ApiController@updateForm", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update form", parameters: { id: { type: "integer", required: true, description: "Form ID" }, type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)" }, data: { type: "object", required: true, description: "Form structure and fields" }, name: { type: "string", required: true, description: "name parameter" }, { path: "/api/update-intake-form-data", method: "POST", controller: "ApiController@updateIntakeFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update intake form data", parameters: { form_id: { type: "integer", required: true, description: "form_id parameter" }, pid: { type: "integer", required: true, description: "pid parameter" }, data: { type: "object", required: true, description: "data parameter" }, { path: "/api/update-location/{id}", method: "PUT", controller: "ApiController@updateLocation", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Update a location by ID", parameters: { id: { type: "integer", required: true, description: "ID of the location to update" }, name: { type: "string", required: true, description: "name parameter" }, npiNumber: { type: "string", required: true, description: "npiNumber parameter" }, phoneNumber: { type: "string", required: true, description: "phoneNumber parameter" }, address: { type: "string", required: true, description: "address parameter" }, city: { type: "string", required: true, description: "city parameter" }, state: { type: "string", required: true, description: "state parameter" }, zipcode: { type: "string", required: true, description: "zipcode parameter" }, country: { type: "string", required: true, description: "country parameter" }, { path: "/api/update-location/{uuid}", method: "PUT", controller: "ApiController@updateLocationByUuid", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Update a location by UUID", parameters: { uuid: { type: "string", required: true, description: "UUID of the location to update" }, name: { type: "string", required: true, description: "name parameter" }, npiNumber: { type: "string", required: true, description: "npiNumber parameter" }, phoneNumber: { type: "string", required: true, description: "phoneNumber parameter" }, address: { type: "string", required: true, description: "address parameter" }, city: { type: "string", required: true, description: "city parameter" }, state: { type: "string", required: true, description: "state parameter" }, zipcode: { type: "string", required: true, description: "zipcode parameter" }, country: { type: "string", required: true, description: "country parameter" }, { path: "/api/update-password", method: "POST", controller: "ApiController@updatePasswordPatient", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update patient password", parameters: { new_password: { type: "string", required: true, description: "new_password parameter" }, { path: "/api/update-patient-info/{patientId}", method: "POST", controller: "ApiController@updateInfo", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient information", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter" }, address: { type: "string", required: false, description: "address parameter" }, zip_code: { type: "string", required: false, description: "zip_code parameter" }, dob: { type: "string", required: false, description: "dob parameter" }, country: { type: "string", required: false, description: "country parameter" }, { path: "/api/update-product/{id}", method: "POST", controller: "ApiController@updateProduct", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Update product", parameters: { id: { type: "integer", required: true, description: "Product ID" }, name: { type: "string", required: true, description: "name parameter" }, description: { type: "string", required: false, description: "description parameter" }, price: { type: "number", required: true, description: "price parameter" }, category_id: { type: "integer", required: true, description: "category_id parameter" }, sku: { type: "string", required: false, description: "sku parameter" }, stock_quantity: { type: "integer", required: false, description: "stock_quantity parameter" }, { path: "/api/update-task/{task_id}", method: "PUT", controller: "ApiController@updateTask", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update an existing task", parameters: { task_id: { type: "integer", required: true, description: "ID of the task to update" }, task_title: { type: "string", required: false, description: "task_title parameter" }, task_body: { type: "string", required: false, description: "task_body parameter" }, task_due_date: { type: "string", required: false, description: "task_due_date parameter" }, task_assigned_to: { type: "integer", required: false, description: "task_assigned_to parameter" }, task_watchers: { type: "array", required: false, description: "task_watchers parameter" }, sendEmailtoPatientApplicationForTask: { type: "boolean", required: false, description: "sendEmailtoPatientApplicationForTask parameter" }, task_priority: { type: "string", required: false, description: "task_priority parameter" }, task_status: { type: "string", required: false, description: "task_status parameter" }, { path: "/api/update-user/{id}", method: "POST", controller: "ApiController@updateUser", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update user", parameters: { id: { type: "integer", required: true, description: "User ID" }, firstName: { type: "string", required: true, description: "firstName parameter" }, lastName: { type: "string", required: true, description: "lastName parameter" }, textMessageNumber: { type: "string", required: true, description: "textMessageNumber parameter" }, timezone: { type: "string", required: true, description: "timezone parameter" }, dateOfBirth: { type: "string", required: false, description: "dateOfBirth parameter" }, gender: { type: "string", required: false, description: "gender parameter" }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter" }, zipcode: { type: "string", required: false, description: "zipcode parameter" }, type: { type: "string", required: false, description: "type parameter" }, role_id: { type: "string", required: true, description: "role_id parameter" }, username: { type: "string", required: false, description: "username parameter" }, newUserPassword: { type: "string", required: false, description: "newUserPassword parameter" }, { path: "/api/user-list", method: "GET", controller: "ApiController@getUserList", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get list of users" }, { path: "/api/user-list/{id}", method: "GET", controller: "ApiController@getUserById", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get user by ID", parameters: { id: { type: "integer", required: true, description: "User ID" }, { path: "/api/user/create", method: "POST", controller: "ApiController@createUserFromAdmin", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Create new user from admin", parameters: { firstName: { type: "string", required: true, description: "firstName parameter" }, lastName: { type: "string", required: true, description: "lastName parameter" }, username: { type: "string", required: true, description: "username parameter" }, emailAddress: { type: "string", required: true, description: "emailAddress parameter" }, textMessageNumber: { type: "string", required: true, description: "textMessageNumber parameter" }, dateOfBirth: { type: "string", required: false, description: "dateOfBirth parameter" }, gender: { type: "string", required: false, description: "gender parameter" }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter" }, zipcode: { type: "string", required: false, description: "zipcode parameter" }, role_id: { type: "string", required: true, description: "role_id parameter" }, newUserPassword: { type: "string", required: true, description: "newUserPassword parameter" }, type: { type: "string", required: true, description: "type parameter" }, avatarImg: { type: "file", required: false, description: "User profile image" }, { path: "/appointment-status/{id}/{status}", method: "PUT", controller: "ApiController@updateAppointmentStatus", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Update appointment status", parameters: { id: { type: "integer", required: true, description: "Appointment ID" }, status: { type: "string", required: true, description: "New status for the appointment" }, { path: "/create-meeting/{meeting_id}", method: "GET", controller: "ApiController@showMeeting", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Show meeting details", parameters: { meeting_id: { type: "string", required: true, description: "Meeting ID" }, { path: "/delete-inventory/{id}", method: "DELETE", controller: "ApiController@deleteInventoryItem", category: ENDPOINT_CATEGORIES.INVENTORY, description: "Delete inventory item", parameters: { id: { type: "integer", required: true, description: "ID of the inventory item to delete" }, { path: "/emr-api/company/complete/setup/{status}", method: "PUT", controller: "ApiController@completeSetup", category: ENDPOINT_CATEGORIES.GENERAL, description: "Complete provider setup", parameters: { status: { type: "integer", required: true, description: "Setup status (1 for complete, 0 for incomplete)" }, { path: "/emr-api/company/status", method: "GET", controller: "ApiController@getCompanyStatus", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get company status" }, { path: "/emr-api/get-company", method: "GET", controller: "ApiController@getCompany", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get company information" }, { path: "/emr-api/provider-wizard-setup", method: "GET", controller: "ApiController@getCounts", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get provider setup counts" }, { path: "/emr-api/store-company", method: "POST", controller: "ApiController@updateCompany", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update company information", parameters: { id: { type: "integer", required: true, description: "id parameter" }, company_name: { type: "string", required: true, description: "company_name parameter" }, company_phone: { type: "string", required: false, description: "company_phone parameter" }, company_email: { type: "string", required: true, description: "company_email parameter" }, address: { type: "string", required: false, description: "address parameter" }, domain_name: { type: "string", required: false, description: "domain_name parameter" }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter" }, zip: { type: "string", required: false, description: "zip parameter" }, header_scripts: { type: "string", required: false, description: "header_scripts parameter" }, footer_scripts: { type: "string", required: false, description: "footer_scripts parameter" }, logo: { type: "string", required: false, description: "logo parameter" }, { path: "/get-insurance/{patientId}", method: "GET", controller: "ApiController@getInsurance", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get insurance information for a patient", parameters: { patientId: { type: "integer", required: true, description: "ID of the patient" }, { path: "/get-inventory/{id}", method: "GET", controller: "ApiController@getInventoryItemById", category: ENDPOINT_CATEGORIES.INVENTORY, description: "Get inventory item by ID", parameters: { id: { type: "integer", required: true, description: "ID of the inventory item" }, { path: "/get-realtime-questions/{appointmentId}", method: "GET", controller: "ApiController@getRealtimeQuestions", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Get real-time questions", parameters: { appointmentId: { type: "integer", required: true, description: "Appointment ID" }, { path: "/inventory", method: "GET", controller: "ApiController@listInventoryItems", category: ENDPOINT_CATEGORIES.INVENTORY, description: "Get inventory list" }, { path: "/join-meeting/{meeting_id}", method: "GET", controller: "ApiController@joinMeeting", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Join a meeting", parameters: { meeting_id: { type: "string", required: true, description: "Meeting ID" }, { path: "/phone-log-list/{patient_id}", method: "GET", controller: "ApiController@getPhoneLogList", category: ENDPOINT_CATEGORIES.MESSAGING, description: "Get phone logs for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient" }, draw: { type: "integer", required: false, description: "Draw counter for DataTables" }, start: { type: "integer", required: false, description: "Paging first record indicator for DataTables" }, length: { type: "integer", required: false, description: "Number of records per page for DataTables" }, { path: "/provider/me", method: "GET", controller: "ApiController@getProviderDetailsByAccessToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get provider details by access token" }, { path: "/save-payment-method", method: "POST", controller: "ApiController@storePaymentMethodConfigProvider", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Save payment method configuration", parameters: { name: { type: "string", required: true, description: "name parameter" }, config: { type: "object", required: true, description: "config parameter" }, { path: "/store-insurance/{patientId}", method: "POST", controller: "ApiController@insuranceStore", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Store insurance information for a patient", parameters: { patientId: { type: "integer", required: true, description: "ID of the patient" }, insurance: { type: "string", required: false, description: "insurance parameter" }, insuredPlanOrProgramName: { type: "string", required: true, description: "insuredPlanOrProgramName parameter" }, insuredIDNumber: { type: "string", required: true, description: "insuredIDNumber parameter" }, insuredGroupNameNo: { type: "string", required: false, description: "insuredGroupNameNo parameter" }, employersSchoolName: { type: "string", required: false, description: "employersSchoolName parameter" }, relationshiptoInsured: { type: "string", required: true, description: "relationshiptoInsured parameter" }, insuredName: { type: "string", required: false, description: "insuredName parameter" }, insuredDateOfBirth: { type: "string", required: true, description: "insuredDateOfBirth parameter" }, insuredGender: { type: "string", required: false, description: "insuredGender parameter" }, coPayment: { type: "number", required: false, description: "coPayment parameter" }, coInsurance: { type: "number", required: false, description: "coInsurance parameter" }, insuranceDeductible: { type: "number", required: false, description: "insuranceDeductible parameter" }, insuredAddress: { type: "string", required: true, description: "insuredAddress parameter" }, insuredCity: { type: "string", required: true, description: "insuredCity parameter" }, insuredState: { type: "string", required: true, description: "insuredState parameter" }, insuredZip: { type: "string", required: true, description: "insuredZip parameter" }, insuredPhone: { type: "string", required: true, description: "insuredPhone parameter" }, payerName: { type: "string", required: true, description: "payerName parameter" }, payerID: { type: "string", required: true, description: "payerID parameter" }, payerAddress: { type: "string", required: true, description: "payerAddress parameter" }, payerCity: { type: "string", required: true, description: "payerCity parameter" }, payerState: { type: "string", required: true, description: "payerState parameter" }, payerZip: { type: "string", required: true, description: "payerZip parameter" }, referringProviderName: { type: "string", required: false, description: "referringProviderName parameter" }, referringProviderNPI: { type: "string", required: false, description: "referringProviderNPI parameter" }, referringProviderTaxonomy: { type: "string", required: false, description: "referringProviderTaxonomy parameter" }, type: { type: "string", required: true, description: "type parameter" }, { path: "/store-tags/{patientId}", method: "POST", controller: "ApiController@storeTagsAlternate", category: ENDPOINT_CATEGORIES.GENERAL, description: "Store tags for a patient (alternate endpoint)", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, tags: { type: "array", required: true, description: "Array of tag names to be associated with the patient" }, { path: "/tags/list/{pid}", method: "GET", controller: "ApiController@getTags", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get tags for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, { path: "/tags/store/{pid}", method: "POST", controller: "ApiController@storeTags", category: ENDPOINT_CATEGORIES.GENERAL, description: "Store tags for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, tags: { type: "array", required: true, description: "Array of tag names to be associated with the patient" }, { path: "/update-insurance/{patientId}", method: "PUT", controller: "ApiController@updateInsurance", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update insurance information for a patient", parameters: { patientId: { type: "integer", required: true, description: "ID of the patient" }, insuredPlanOrProgramName: { type: "string", required: true, description: "insuredPlanOrProgramName parameter" }, insuredIDNumber: { type: "string", required: true, description: "insuredIDNumber parameter" }, insuredGroupNameNo: { type: "string", required: false, description: "insuredGroupNameNo parameter" }, relationshiptoInsured: { type: "string", required: true, description: "relationshiptoInsured parameter" }, insuredDateOfBirth: { type: "string", required: true, description: "insuredDateOfBirth parameter" }, insuredAddress: { type: "string", required: true, description: "insuredAddress parameter" }, insuredCity: { type: "string", required: true, description: "insuredCity parameter" }, insuredState: { type: "string", required: true, description: "insuredState parameter" }, insuredZip: { type: "string", required: true, description: "insuredZip parameter" }, insuredPhone: { type: "string", required: true, description: "insuredPhone parameter" }, payerName: { type: "string", required: true, description: "payerName parameter" }, coPayment: { type: "number", required: false, description: "coPayment parameter" }, type: { type: "string", required: true, description: "type parameter" }, { path: "/update-inventory/{id}", method: "PUT", controller: "ApiController@updateInventoryItem", category: ENDPOINT_CATEGORIES.INVENTORY, description: "Update inventory item", parameters: { id: { type: "integer", required: true, description: "ID of the inventory item to update" }, inventoryType: { type: "string", required: false, description: "inventoryType parameter" }, item_name: { type: "string", required: false, description: "item_name parameter" }, price: { type: "number", required: false, description: "price parameter" }, expirationDate: { type: "string", required: false, description: "expirationDate parameter" } ]; /** * Patient endpoints (patient authentication required) * Patient portal operations and personal health data access */ export const PATIENT_ENDPOINTS = [ // ===== PATIENT PORTAL OPERATIONS ===== { path: "/api/frontend/patient-dashboard", method: "GET", controller: "FrontendController@patientDashboard", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient dashboard data", parameters: {}, { path: "/api/frontend/patient-profile", method: "GET", controller: "FrontendController@getPatientProfile", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient profile", parameters: {}, { path: "/api/frontend/update-patient-profile", method: "POST", controller: "FrontendController@updatePatientProfile", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient profile", parameters: { first_name: { type: "string", required: false, description: "First name" }, last_name: { type: "string", required: false, description: "Last name" }, email: { type: "string", required: false, description: "Email address" }, phone: { type: "string", required: false, description: "Phone number" }, address: { type: "string", required: false, description: "Address" }, city: { type: "string", required: false, description: "City" }, state: { type: "string", required: false, description: "State" }, zipcode: { type: "string", required: false, description: "ZIP code" }, { path: "/api/frontend/patient-appointments", method: "GET", controller: "FrontendController@getPatientAppointments", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get patient appointments", parameters: {}, { path: "/api/frontend/book-appointment", method: "POST", controller: "FrontendController@bookAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Book appointment from patient portal", parameters: { practitioner_id: { type: "string", required: true, description: "Practitioner ID" }, appointment_date: { type: "string", required: true, description: "Appointment date" }, appointment_time: { type: "string", required: true, description: "Appointment time" }, reason: { type: "string", required: false, description: "Appointment reason" }, { path: "/api/frontend/patient-prescriptions", method: "GET", controller: "FrontendController@getPatientPrescriptions", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Get patient prescriptions", parameters: {}, { path: "/api/frontend/patient-documents", method: "GET", controller: "FrontendController@getPatientDocuments", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get patient documents", parameters: {}, // ===== NEW ENDPOINTS FROM API-DOCS.JSON ===== // Added 1 new patient endpoint from api-docs.json { path: "/api/change-password", method: "POST", controller: "PatientController@changePassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update patient password", parameters: { current_password: { type: "string", required: true, description: "Current password", }, new_password: { type: "string", required: true, description: "new_password parameter" }, new_password: { type: "string", required: true, description: "New password" }, confirm_password: { type: "string", required: true, description: "Confirm new password" }, // ===== NEW TOOLS FROM API DOCUMENTATION ===== { path: "/api/emr/appointment/doctor/patient/{patientId}", method: "GET", controller: "ApiController@getDoctorAppointmentsByPatientId", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get doctor appointments by patient ID", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/emr/appointment/patient/{patient_id}/list", method: "GET", controller: "ApiController@getPatientApptList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get patient appointment list", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/emr/appointment/patient/carts-items", method: "GET", controller: "ApiController@getPatientAppointmentsWithCartsAndItems", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get patient appointments with carts and items" }, { path: "/api/patient/data", method: "GET", controller: "ApiController@getPatientData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient data" }, { path: "/api/patient/history/{patientId}", method: "GET", controller: "ApiController@patientHistory", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient history", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, { path: "/api/patient/medical-problem/{id}", method: "GET", controller: "ApiController@getPatientMedicalProblemById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get medical problem by ID", parameters: { id: { type: "integer", required: true, description: "Medical problem ID" }, { path: "/api/patient/medical-problem/{id}", method: "PUT", controller: "ApiController@updatePatientMedicalProblem", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update medical problem", parameters: { id: { type: "integer", required: true, description: "Medical problem ID" }, description: { type: "string", required: false, description: "description parameter" }, date_of_onset: { type: "string", required: false, description: "date_of_onset parameter" }, status: { type: "string", required: false, description: "status parameter" }, { path: "/api/patient/medical-problem/{pid}", method: "POST", controller: "ApiController@storePatientMedicalProblem", category: ENDPOINT_CATEGORIES.GENERAL, description: "Store medical problem", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, description: { type: "string", required: false, description: "description parameter" }, date_of_onset: { type: "string", required: false, description: "date_of_onset parameter" }, status: { type: "string", required: false, description: "status parameter" }, { path: "/api/patient/notifications", method: "GET", controller: "ApiController@getNotification", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient notifications" }, { path: "/api/patient/prescription", method: "GET", controller: "ApiController@getPatientPrescriptions", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient prescriptions" }, { path: "/api/patient/process-payment", method: "POST", controller: "ApiController@processPayment", category: ENDPOINT_CATEGORIES.GENERAL, description: "Process payment", parameters: { amount: { type: "number", required: true, description: "amount parameter" }, payment_method: { type: "string", required: true, description: "payment_method parameter" }, currency: { type: "string", required: true, description: "currency parameter" }, payment_method_id: { type: "string", required: false, description: "payment_method_id parameter" }, description: { type: "string", required: false, description: "description parameter" }, { path: "/api/patient/profile-picture", method: "POST", controller: "ApiController@uploadProfilePicture", category: ENDPOINT_CATEGORIES.GENERAL, description: "Upload profile picture", parameters: { profile_picture: { type: "string", required: false, description: "Profile picture file (JPEG, PNG)" }, { path: "/api/patient/register-patient", method: "POST", controller: "ApiController@registerPatientForPatient", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Register a new patient", parameters: { first_name: { type: "string", required: true, description: "first_name parameter" }, last_name: { type: "string", required: true, description: "last_name parameter" }, email: { type: "string", required: true, description: "email parameter" }, phone_no: { type: "string", required: true, description: "phone_no parameter" }, dob: { type: "string", required: true, description: "dob parameter" }, gender: { type: "string", required: true, description: "gender parameter" }, { path: "/api/patient/session-history", method: "GET", controller: "ApiController@sessionHistory", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient session history" }, { path: "/api/patient/subscription/{subscription}/cancel", method: "POST", controller: "ApiController@cancelSubscription", category: ENDPOINT_CATEGORIES.GENERAL, description: "Cancel subscription", parameters: { subscription: { type: "integer", required: true, description: "Subscription ID" }, reason: { type: "string", required: false, description: "reason parameter" }, feedback: { type: "string", required: false, description: "feedback parameter" }, { path: "/api/patient/subscriptions", method: "GET", controller: "ApiController@getSubscriptionList", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient subscription list" }, { path: "/patient/me", method: "GET", controller: "ApiController@getPatientDetailsByAccessToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get patient details by access token" } ]; /** * Partner endpoints (partner authentication required) * Partner business operations and management */ export const PARTNER_ENDPOINTS = [ // ===== PARTNER MANAGEMENT ===== { path: "/api/partner/dashboard", method: "GET", controller: "PartnerController@dashboard", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get partner dashboard", parameters: {}, { path: "/api/partner/profile", method: "GET", controller: "PartnerController@getProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get partner profile", parameters: {}, { path: "/api/partner/update-profile", method: "POST", controller: "PartnerController@updateProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update partner profile", parameters: { first_name: { type: "string", required: false, description: "First name" }, last_name: { type: "string", required: false, description: "Last name" }, email: { type: "string", required: false, description: "Email address" }, phone_no: { type: "string", required: false, description: "Phone number" }, company_name: { type: "string", required: false, description: "Company name" }, business_type: { type: "string", required: false, description: "Business type" }, { path: "/api/partner/patients", method: "GET", controller: "PartnerController@getPatients", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get partner patients", parameters: {}, { path: "/api/partner/referrals", method: "GET", controller: "PartnerController@getReferrals", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get partner referrals", parameters: {}, { path: "/api/partner/create-referral", method: "POST", controller: "PartnerController@createReferral", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Create referral", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, practitioner_id: { type: "string", required: true, description: "Practitioner ID" }, referral_reason: { type: "string", required: false, description: "Referral reason" }, notes: { type: "string", required: false, description: "Additional notes" }, ]; /** * Affiliate endpoints (affiliate authentication required) * Affiliate management and commission tracking */ export const AFFILIATE_ENDPOINTS = [ // ===== AFFILIATE MANAGEMENT ===== { path: "/api/affiliate/dashboard", method: "GET", controller: "AffiliateController@dashboard", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get affiliate dashboard", parameters: {}, { path: "/api/affiliate/profile", method: "GET", controller: "AffiliateController@getProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get affiliate profile", parameters: {}, { path: "/api/affiliate/update-profile", method: "POST", controller: "AffiliateController@updateProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update affiliate profile", parameters: { first_name: { type: "string", required: false, description: "First name" }, last_name: { type: "string", required: false, description: "Last name" }, email: { type: "string", required: false, description: "Email address" }, phone_no: { type: "string", required: false, description: "Phone number" }, partner_email: { type: "string", required: false, description: "Partner email" }, { path: "/api/affiliate/commissions", method: "GET", controller: "AffiliateController@getCommissions", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get affiliate commissions", parameters: {}, { path: "/api/affiliate/referrals", method: "GET", controller: "AffiliateController@getReferrals", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get affiliate referrals", parameters: {}, // ===== NEW ENDPOINTS FROM API-DOCS.JSON ===== // Added 1 new affiliate endpoint from api-docs.json { path: "/affiliate/me", method: "GET", controller: "AffiliateController@getMe", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get affiliate details by access token", parameters: {}, ]; /** * Network endpoints (network authentication required) * Network operations and multi-partner management */ export const NETWORK_ENDPOINTS = [ // ===== NETWORK MANAGEMENT ===== { path: "/api/network/dashboard", method: "GET", controller: "NetworkController@dashboard", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get network dashboard", parameters: {}, { path: "/api/network/profile", method: "GET", controller: "NetworkController@getProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get network profile", parameters: {}, { path: "/api/network/update-profile", method: "POST", controller: "NetworkController@updateProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update network profile", parameters: { first_name: { type: "string", required: false, description: "First name" }, last_name: { type: "string", required: false, description: "Last name" }, email: { type: "string", required: false, description: "Email address" }, phone_no: { type: "string", required: false, description: "Phone number" }, partner_id: { type: "string", required: false, description: "Partner ID" }, { path: "/api/network/partners", method: "GET", controller: "NetworkController@getPartners", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get network partners", parameters: {}, { path: "/api/network/analytics", method: "GET", controller: "NetworkController@getAnalytics", category: ENDPOINT_CATEGORIES.ANALYTICS_REPORTS, description: "Get network analytics", parameters: {}, ]; /** * Get endpoints by authentication type * @param {string} authType - Authentication type * @returns {Array} Array of endpoints for the specified auth type */ export function getEndpointsByAuthType(authType) { switch (authType) { case AUTH_TYPES.PUBLIC: return PUBLIC_ENDPOINTS; case AUTH_TYPES.PROVIDER: return PROVIDER_ENDPOINTS; case AUTH_TYPES.PATIENT: return PATIENT_ENDPOINTS; case AUTH_TYPES.PARTNER: return PARTNER_ENDPOINTS; case AUTH_TYPES.AFFILIATE: return AFFILIATE_ENDPOINTS; case AUTH_TYPES.NETWORK: return NETWORK_ENDPOINTS; default: return []; } /** * Get all endpoints organized by authentication type * @returns {Object} Object with auth types as keys and endpoint arrays as values */ export function getAllEndpointsByAuthType() { return { [AUTH_TYPES.PUBLIC]: PUBLIC_ENDPOINTS, [AUTH_TYPES.PROVIDER]: PROVIDER_ENDPOINTS, [AUTH_TYPES.PATIENT]: PATIENT_ENDPOINTS, [AUTH_TYPES.PARTNER]: PARTNER_ENDPOINTS, [AUTH_TYPES.AFFILIATE]: AFFILIATE_ENDPOINTS, [AUTH_TYPES.NETWORK]: NETWORK_ENDPOINTS }; } /** * Get total endpoint count * @returns {number} Total number of endpoints */ export function getTotalEndpointCount() { return ( PUBLIC_ENDPOINTS.length + PROVIDER_ENDPOINTS.length + PATIENT_ENDPOINTS.length + PARTNER_ENDPOINTS.length + AFFILIATE_ENDPOINTS.length + NETWORK_ENDPOINTS.length ); } /** * Get endpoint statistics * @returns {Object} Statistics about endpoints by auth type and category */ export function getEndpointStatistics() { const stats = { total: getTotalEndpointCount(), byAuthType: { [AUTH_TYPES.PUBLIC]: PUBLIC_ENDPOINTS.length, [AUTH_TYPES.PROVIDER]: PROVIDER_ENDPOINTS.length, [AUTH_TYPES.PATIENT]: PATIENT_ENDPOINTS.length, [AUTH_TYPES.PARTNER]: PARTNER_ENDPOINTS.length, [AUTH_TYPES.AFFILIATE]: AFFILIATE_ENDPOINTS.length, [AUTH_TYPES.NETWORK]: NETWORK_ENDPOINTS.length }, byCategory: {}; // Count by category across all auth types const allEndpoints = [ ...PUBLIC_ENDPOINTS, ...PROVIDER_ENDPOINTS, ...PATIENT_ENDPOINTS, ...PARTNER_ENDPOINTS, ...AFFILIATE_ENDPOINTS, ...NETWORK_ENDPOINTS, ]; allEndpoints.forEach((endpoint) => { const category = endpoint.category || "undefined"; stats.byCategory[category] = (stats.byCategory[category] || 0) + 1; }); return stats; }