{
  "app": "Offer Letter Automation API",
  "routes": [
    "/static/<path:filename> (GET) -> static",
    "/scheduler (GET) -> scheduler.get_scheduler_info",
    "/scheduler/pause (POST) -> scheduler.pause_scheduler",
    "/scheduler/resume (POST) -> scheduler.resume_scheduler",
    "/scheduler/start (POST) -> scheduler.start_scheduler",
    "/scheduler/shutdown (POST) -> scheduler.shutdown_scheduler",
    "/scheduler/jobs (POST) -> scheduler.add_job",
    "/scheduler/jobs/<job_id> (GET) -> scheduler.get_job",
    "/scheduler/jobs (GET) -> scheduler.get_jobs",
    "/scheduler/jobs/<job_id> (DELETE) -> scheduler.delete_job",
    "/scheduler/jobs/<job_id> (PATCH) -> scheduler.update_job",
    "/scheduler/jobs/<job_id>/pause (POST) -> scheduler.pause_job",
    "/scheduler/jobs/<job_id>/resume (POST) -> scheduler.resume_job",
    "/scheduler/jobs/<job_id>/run (POST) -> scheduler.run_job",
    "/onboarding/processes (GET) -> onboarding.get_processes",
    "/onboarding/processes (GET) -> onboarding.get_processes",
    "/candidate_types (GET) -> candidate_type.list_candidate_types",
    "/candidate_types/<int:type_id> (GET) -> candidate_type.get_candidate_type",
    "/candidate_types (POST) -> candidate_type.create_candidate_type",
    "/candidate_types/<int:type_id> (PUT) -> candidate_type.update_candidate_type",
    "/candidate_types/<int:type_id> (DELETE) -> candidate_type.delete_candidate_type",
    "/mask-aadhaar (POST) -> ocr_bp.mask_aadhaar",
    "/mask-aadhaar-batch (POST) -> ocr_bp.mask_aadhaar_batch",
    "/uploads/<filename> (GET) -> ocr_bp.serve_upload",
    "/ (GET) -> index",
    "/auth/login (POST) -> auth.login",
    "/auth/register (POST) -> auth.register",
    "/auth/logout (POST) -> auth.logout",
    "/auth/google/login (GET, POST) -> auth.google_login",
    "/auth/google/callback (GET, POST) -> auth.google_callback",
    "/auth/google/verify-token (POST) -> auth.google_verify_token",
    "/files/upload-zip (POST) -> files.upload_zip",
    "/files/employees (GET) -> files.get_employees",
    "/files/headers (GET) -> files.get_headers",
    "/files/dashboard-offerletter (GET) -> files.get_recruiter_employees",
    "/files/<filename> (GET) -> files.get_file",
    "/email/trigger-offers/<identifier> (POST) -> email.trigger_offers",
    "/email/trigger-offers (POST) -> email.trigger_offers_legacy",
    "/offer/accept/<token> (GET) -> offer.accept_offer",
    "/offer/reject/<token> (GET, POST) -> offer.reject_offer",
    "/offer/update-status (PUT) -> offer.update_offer_status",
    "/onboarding/processes/export (GET) -> onboarding.export_processes",
    "/onboarding/scheduler (GET) -> onboarding.get_schedulers",
    "/scheduler/export (GET) -> scheduling.export_schedulers",
    "/onboarding/doj (POST) -> onboarding.save_doj",
    "/onboarding/edit_doj (PUT) -> onboarding.edit_doj",
    "/onboarding/edit_candidate_details (PUT) -> onboarding.edit_candidate_details",
    "/employee/soft-delete (POST) -> employee.soft_delete",
    "/onboarding/add-processes (POST) -> scheduling.add_processes",
    "/scheduling/email-types (GET) -> scheduling.get_email_types",
    "/onboarding/create_scheduler (POST, PUT) -> scheduling.create_scheduler",
    "/onboarding/create_scheduler/<int:id> (PUT) -> scheduling.update_scheduler",
    "/onboarding/delete_scheduler/<int:id> (DELETE) -> scheduling.delete_scheduler",
    "/dashboard/stats (GET) -> dashboard.stats",
    "/dashboard/process-stats (GET) -> dashboard.process_stats",
    "/dashboard/process-distribution (GET) -> dashboard.process_distribution",
    "/users/list (GET) -> users.list_users",
    "/users/create (POST) -> users.create_user",
    "/users/<int:user_id>/assign-role (PUT) -> users.assign_role",
    "/users/<int:user_id>/assign-permissions (POST) -> users.assign_permissions",
    "/users/<int:user_id>/edit_user_rp (PUT) -> users.edit_user_rp",
    "/users/<int:user_id>/update-password (PUT) -> users.update_user_password",
    "/users/<int:user_id>/hierarchy (GET) -> users.get_user_hierarchy",
    "/users/roles/permissions/<int:role_id> (PUT) -> users.update_role_permissions",
    "/rbac/metadata (GET) -> rbac.get_rbac_metadata",
    "/rbac/roles (POST) -> rbac.create_role",
    "/rbac/permissions (POST) -> rbac.create_permission",
    "/employee/export (GET) -> employee_export.export_employee_data",
    "/face-recognition/upload-zip (POST) -> face_recognition.upload_zip",
    "/face-recognition (GET) -> face_recognition.get_records",
    "/face-recognition/live-capture/<int:import_kyc_data_id> (POST) -> face_recognition.live_capture",
    "/face-recognition/trigger-whatsapp (POST) -> face_recognition.trigger_whatsapp",
    "/face-recognition/verify-approver (POST) -> face_recognition.verify_approver",
    "/kyc/pan_verification (POST) -> kyc.pan_verification",
    "/kyc/pan_ocr (POST) -> kyc.pan_ocr",
    "/kyc/highest_qualification_ocr (POST) -> kyc.highest_qualification_ocr",
    "/kyc/profile_image_upload (POST) -> kyc.profile_image_upload",
    "/kyc/upload (POST) -> kyc.upload_excel",
    "/kyc/file-summary/<int:batch_id> (GET) -> kyc.file_summary",
    "/kyc/export/<int:batch_id> (GET) -> kyc.export",
    "/kyc/trigger-email/<identifier> (POST) -> kyc.trigger_email",
    "/kyc/trigger-email (POST) -> kyc.trigger_email_bulk",
    "/kyc/stepper-back (POST) -> kyc.stepper_back",
    "/kyc/diy/data/<int:import_kyc_data_id> (GET) -> kyc.get_diy_kyc_data",
    "/kyc/diy/workflow/<string:id> (POST) -> kyc.authorize_diy_workflow",
    "/batch/upload (POST) -> batch.upload",
    "/batch/list (GET) -> batch.list",
    "/batch/download/<int:batch_id> (GET) -> batch.download",
    "/batch/retry-stale (POST) -> batch.retry_stale",
    "/hierarchy/upload (POST) -> hierarchy.upload",
    "/candidate_types (GET) -> candidate_types.list",
    "/candidate_types (GET) -> candidate_types.list",
    "/kyc/data (GET) -> kyc.get_data",
    "/kyc/preview-data/<int:import_kyc_data_id> (GET, PATCH) -> kyc.update_and_get_data",
    "/kyc/document/<string:token> (GET) -> kyc.get_document",
    "/kyc/master-docs/<int:import_kyc_data_id> (GET) -> kyc.get_master_docs",
    "/candidate_types/<int:type_id> (GET) -> candidate_types.get",
    "/candidate_types (POST) -> candidate_types.create",
    "/candidate_types/<int:type_id> (PUT) -> candidate_types.update",
    "/candidate_types/<int:type_id> (DELETE) -> candidate_types.delete",
    "/candidate_type/edit-ct-mail-content (POST, PUT) -> candidate_type.edit_ct_mail_content",
    "/candidate_type/edit-ct-mail-content/<int:candidate_type_id> (POST, PUT) -> candidate_type.edit_ct_mail_content_by_id",
    "/designation/create (POST) -> designation.create",
    "/designation/export (GET) -> designation.export",
    "/fuzzy-match/name (POST) -> fuzzy_match.name",
    "/fuzzy-match/bulk (POST) -> fuzzy_match.bulk",
    "/fuzzy-match/history (GET) -> fuzzy_match.history",
    "/fuzzy-match/health (GET) -> fuzzy_health_check",
    "/ocr/health (GET) -> ocr.health",
    "/ocr/document-types (GET) -> ocr.document_types",
    "/ocr/extract (POST) -> ocr.extract",
    "/upload-docs (POST) -> ocr.upload_docs",
    "/ocr/upload-docs (POST) -> ocr.upload_docs_prefixed",
    "/batch/<int:batch_id> (GET) -> ocr.get_batch",
    "/batches (GET) -> ocr.list_batches",
    "/ocr/pan (POST) -> ocr.pan_ocr",
    "/ocr/highest_qualification (POST) -> ocr.highest_qualification_ocr",
    "/ocr/aadhaar_new (POST) -> ocr.aadhaar_new_ocr",
    "/ocr/bank (POST) -> ocr.bank_ocr",
    "/ocr/dl (POST) -> ocr.dl_ocr",
    "/ocr/10-marksheet (POST) -> ocr.marksheet_10th_ocr",
    "/ocr/12-marksheet (POST) -> ocr.marksheet_12th_ocr",
    "/ocr/re-upload (POST) -> ocr.re_upload",
    "/re-upload-image-only (POST) -> ocr.re_upload_image_only",
    "/kyc/encrypted/decrypt (POST) -> kyc.encrypted_decrypt",
    "/kyc/encrypted/<int:kyc_details_id> (GET) -> kyc.encrypted_get",
    "/audit/logs/<string:table_name>/<int:record_id> (GET) -> audit.get_record_logs"
  ],
  "version": "1.0.0"
}
