{"text_format":"2","workbook":"xlsx","n_sheets":30,"sheets":["Cover","Record Of Change","Summary","Common Definition","API Registration","API Authentication","API Password","API Voucher Management","API Terms and Conditions","API AV Group Management","API Operator Management","API Passenger Management","API Driver Management","API Role Management","API Platform Management","API Dynamic Pricing","API Promotion Management","API Issue Management","API Maintenance Management","API Heartbeat","API Point Management","API Depot Management","API Vehicle Types","API Ride Management","API Statistic","API RoutePlan","API MapBox","API Vehicle Management","API Notifications","API Get Log Management"],"not_rendered":{"charts":0,"images":4,"macros":0,"external_links":0,"defined_names":2501,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"run_cost":"one","rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":1,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"Cover","index":0,"n_rows":18,"n_cols":10,"rows_kept":18,"cut":false,"hidden":false,"merged":[[16,6,16,8],[16,9,16,13],[17,6,17,8],[17,9,17,13],[8,1,8,17],[9,1,9,17],[11,1,11,17],[14,6,14,8],[14,9,14,13],[15,6,15,8],[15,9,15,13]]}
{"$rows_empty":8}
[null,"Ride Hailing Platform"]
[null,"API Interface Document"]
[]
[null,"For Admin (Fleet) Application (Core Service)",{"$nulls":6},"Template"]
[]
[]
[{"$nulls":6},"Project",null,null,"Ride Hailing Platform"]
[{"$nulls":6},"Document Code",null,null,"RHP_Admin App_Core Service"]
[{"$nulls":6},"Document Revision",null,null,1.1000000000000001]
[{"$nulls":6},"Effective Date",null,null,"2026-04-10"]

{"sheet":"Record Of Change","index":1,"n_rows":53,"n_cols":9,"rows_kept":53,"cut":false,"hidden":false,"merged":[[0,0,0,9]]}
["Record Of Change"]
[null,null,null,"*A - Add; M - Modify; D - Delete"]
[null,"Effective Date","Revision","A/M/D*","Change item","Change description","Author","Reviewer","Approver"]
[null,"2025-06-29","0.1","A","Whole document","First initialization","KietHT9","LinhNMD","CuongND2"]
[null,"2025-07-02","0.2","A,M","Whole document","Add database column to API Spec to show up what table be affect when call APIs","LinhNMD","CuongND2","CuongND2"]
[null,"2025-07-07","0.3","A,M","Whole document","Add APIs:\n- API Operator Management\n- API Passenger Management\n- API AV Group Management\n- API Vehicle Management","LinhNMD","LinhNMD","CuongND2"]
[null,"2025-07-31","0.4","A","API Terms and Conditions","Add new API to manage the terms and conditions html file","LinhNMD","LinhNMD","CuongND2"]
[null,"2025-07-31","0.4","M","API Voucher Management","Update APIs related to voucher management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-07-31","0.4","A","API AV Group Management","Add APis related to AV Group management","NamLT12","LinhNMD","CuongND2"]
[null,"2025-07-31","0.4","M","API Passenger Management","Update passenger management APIs with newest SRS","NamLT12","LinhNMD","CuongND2"]
[null,"2025-07-31","0.4","A","API Ride Management","Add APis related to trip management","TrungNT147","LinhNMD","CuongND2"]
[null,"2025-07-31","0.4","A","API Vehicle Management","Add APis related to vehicle management","TrungNT147","LinhNMD","CuongND2"]
[null,"2025-07-31","0.4","A","API Vehicle Types","Add APis related to vehicle type management","TrungNT147","LinhNMD","CuongND2"]
[null,"2025-07-31","0.4","A","API Notifications","Add APis related to manage passenger notifications","TrungNT147","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","M","API Voucher Management","Update APIs related to voucher management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","A","API Operator Management","Add APi search operator not be assigned in any ticket","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","M","API Passenger Management","Update APis related to Passenger management","NamLT12","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","A","API Dynamic Pricing","Add API to config dynamic pricing","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","A","API Promotion Management","Add APis related to promotion management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","A","API Vehicle Management","Add APis related to vehicle management","NamLT12","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","A","API Issue Management","Add APis related to issue management","NamLT12","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","A","API Maintenance Management","Add APis related to maintenance management","NamLT12","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","A","API Heart Beat","Add API to manage heart beat of vehicle","LinhNMD","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","A","API Point Management","Add APis related to point management","NamLT12","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","A","API Depot Management","Add APis related to depot management","NamLT12","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","M","API Ride Management","Update APis related to ride management","NamLT12","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","M","API Vehicle Types","Update APis related to vehicle type management","TrungNT147","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","M","API Vehicle Management","Add APis related to vehicle management","NamLT12","LinhNMD","CuongND2"]
[null,"2025-09-08","0.5","M","API Notifications","Add APis to manage notifications","TrungNT147","LinhNMD","CuongND2"]
[null,"2025-09-29","1.0","M","API Voucher Management","Update APis related to voucher management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-29","1.0","M","API AV Group Management","Update APis related to AV Group management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-29","1.0","M","API Operator Management","Update APis related to operator management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-29","1.0","M","API Passenger Management","Update API to manage passenger","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-29","1.0","M","API Ride Management","Update APis related to ridemanagement","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-29","1.0","A","API Statistic","Add APis related to dashboard infomation","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-29","1.0","A","API RoutePlan","Add APis related to route plan management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-09-29","1.0","A","API Mapbox","Add APis related to Mapbox integrate","TrungNT147","LinhNMD","CuongND2"]
[null,"2025-10-20","1.1","A","API Driver Management","Add APis related to Driver management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-10-20","1.1","A","API Platform Management","Add APis related to Platform management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-10-20","1.1","M","API Operator Management","Update APis related to Operator management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-10-20","1.1","M","API Promotion Management","Update APis related to Promotion management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-10-20","1.1","M","API Issue Management","Update APis related to Issue management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-10-20","1.1","M","API Maintenance Management","Update APis related to Maintenance management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-10-20","1.1","M","API Point Management","Update APis related to Point management","KietHT9","LinhNMD","CuongND2"]
[null,"2025-12-22","1.1","A","API Notifications","Update APis related to Notifications","KietHT9","NamLT12","CuongND2"]
[null,"2025-12-22","1.1","A, M","API Vehicle Types","Update APis related to Vehicle Type ","KietHT9","NamLT12","CuongND2"]
[null,"2025-12-22","1.1","M","API AV Group Management","Update APis related to AV Group management","KietHT9","NamLT12","CuongND2"]
[null,"2025-12-22","1.1","M","API Statistic","Update APis related to Statistic","KietHT9","NamLT12","CuongND2"]
[null,"2025-12-22","1.1","M","API Log Managment","Update APis related to Statistic","KietHT9","NamLT12","CuongND2"]
[null,"2026-04-10","1.1","A, M","API Vehicle Management","Add APIs related to Log Managment, Update APIs related to Vehicle Management","KietHT9","NamLT12","CuongND2"]
[null,"2026-04-10","1.1","M","API Voucher Management","Update APis related to Voucher Management","KietHT9","NamLT12","CuongND2"]
[null,"2026-04-10","1.1","M","API Ride Managment","Update APis related to Ride management","KietHT9","NamLT12","CuongND2"]
[null,"2026-04-10","1.1","M","API Passenger Management","Update APis related to Passenger Management","KietHT9","NamLT12","CuongND2"]

{"sheet":"Summary","index":2,"n_rows":48,"n_cols":3,"rows_kept":48,"cut":false,"hidden":false,"merged":[[1,1,1,2]]}
[]
[null,"[Microservice] Core Service"]
[]
[null,"Design Information"]
[null,"Service Name","Core Service"]
[null,"Application Name","agt-core-svc"]
[null,"Description"]
[null,"Context Path","/core"]
[]
[null,"Application Information"]
[null,"Service App Name","rhpCoreSvc"]
[null,"Service Port",8080]
[null,"JDK","Java 21"]
[null,"Container","Fully dockerize"]
[null,"Web server","Non-blocking Netty"]
[null,"Authentication","JWT"]
[null,"Timezone","UTC"]
[null,"API Data exchange format","JSON"]
[null,"Profile","local / dev /test / staging / prod"]
[null,"Logging","- local: console\n- dev: both console and async rolling file\n- test: both console and async rolling file\n- staging: both console and async rolling file\n- prod: async rolling file"]
[null,"Error response","- local: include stacktrace\n- dev: include stacktrace\n- test: include stacktrace\n- staging: include stacktrace\n- prod: no stacktrace"]
[]
[null,"APIs Summary"]
[null,"API Registration"]
[null,"API Authentication"]
[null,"API Password"]
[null,"API Terms and Conditions"]
[null,"API Voucher Management"]
[null,"API AV Group Management"]
[null,"API Operator Management"]
[null,"API Passenger Management"]
[null,"API Ride Management"]
[null,"API Vehicle Management"]
[null,"API Vehicle Types"]
[null,"API Notifications"]
[null,"API Dynamic Pricing"]
[null,"API Promotion Management"]
[null,"API Issue Management"]
[null,"API Maintenance Management"]
[null,"API Heartbeat"]
[null,"API Point management"]
[null,"API Depot management"]
[null,"API Notifications"]
[null,"API Mapbox"]
[null,"API Statistic"]
[null,"API RoutePlan"]
[null,"API Driver Management"]
[null,"API Platform Management"]

{"sheet":"Common Definition","index":3,"n_rows":22,"n_cols":5,"rows_kept":22,"cut":false,"hidden":false,"merged":[[19,2,19,3],[20,2,20,3]]}
[]
[null,"COMMON HTTP STATUS CODE"]
[null,"Code","Description","USE","ACTION"]
[null,"200 ~ 299","Successful Responses","YES","N/A"]
[null,"300 ~ 399","Redirects","NO","N/A"]
[null,"400 ~ 499","Client Errors","YES","Check the client inputs again"]
[null,"500 ~ 599","Server Errors","YES","Request supports from developer or log bug if needed"]
[]
[null,"SERVICE SPECIFIC HTTP STATUS CODE"]
[null,"Code","Description"]
[]
[]
[null,"RESPONSE FORMAT"]
[null,"Request http status code","200, 400, 401, 403, 500"]
[null,"Full path for API","/<context root>/<context path>/<api URL>\nEx: Call login API\n=> Use : http://<IP Address>:<port>/core/admin/login"]
[null,"{\n    \"status\": {\n        \"code\": \"\",\n        \"message\": \"Success\"\n    },\n    \"data\" : {\n        \"abc\": \"explain data\",\n        ...\n    },\n    \"error\": null\n} ","- status.code (mandatory): the specific code for specific action\nEx: success -> status.code = 0\n       wrong email -> status.code = 1\n       wrong password -> status.code = 2\n\n- status.message (mandatory): the string that show up the message from server\nEx: success -> status.message = 'success'\n       wrong password -> status.message = 'wrong password'\n\n- data (optional): dictionary that contains the requested data that succesfully extracted from DB. this field can be null\n\n- error (optional): in case of success, this field always be null, but when something wrong but need details information (eg. stacktrace) to check, this field will be used\n"]
[]
[]
[null,"RESPONSE PAGINATION FORMAT"]
[null,"Request http status code","200, 400, 401, 403, 500"]
[null,"Full path for API","/<context root>/<context path>/<api URL>\nEx: Call /passengers\n=> Use : http://<IP Address>:<port>/iam/passengers?page=1&limit=10"]
[null,"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"Success\"\n  },\n  \"data\": {\n    \"elements\": [\n      {\n        ...\n      }\n    ],\n    \"pageNumber\": 0,\n    \"pageSize\": 50,\n    \"totalElements\": 1,\n    \"totalPages\": 1,\n    \"last\": true\n  }\n}","Here's an explanation of each property:\n + elements: list of element \n\n+ pageNumber: 1 - This is the zero-indexed page number that was requested. A value of 1 means the second page of results.\n\n+ pageSize: 10 - This is the requested number of items (or records) to be returned per page.\n\n+ totalElements: 44 - This is the total number of elements (records) found in the entire dataset, across all pages, not just the current page.\n\n + totalPages: 5 - This is the total number of pages that can be formed from the entire result set, given the specified pageSize. For example, if there are 44 total elements and 10 items per page, 44 / 10 = 4.4, which rounds up to 5 total pages.\n\n+ last: false - This boolean indicates whether the current page is the very last page of the total results. In this case, it's false because you are on page 1 (the second page), and there are still pages 2, 3, and 4 remaining.","Top-Level Properties (Information about the retrieved page and overall data):\n\n\t+totalPages: 5 - This is the total number of pages that can be formed from the entire result set, given the specified pageSize. For example, if there are 44 total elements and 10 items per page, 44 / 10 = 4.4, which rounds up to 5 total pages.\n\n\t+totalElements: 44 - This is the total number of elements (records) found in the entire dataset, across all pages, not just the current page.\n\n\t+last: false - This boolean indicates whether the current page is the very last page of the total results. In this case, it's false because you are on page 1 (the second page), and there are still pages 2, 3, and 4 remaining.\n\n\t+sort object: This top-level sort object describes the actual sorting applied to the content list that was returned. In most typical pagination responses where sorting was requested and successfully applied, its values will mirror those in pageable.sort.\n\n\t\t             *unsorted: false - The content is sorted.\n\t\t             *sorted: true - The content is sorted.\n\t\t             *empty: false - The sort definition is not empty.\n\n\t+first: false - This boolean indicates whether the current page is the very first page of the total results. Here, it's false because you are on page 1 (the second page), not page 0.\n\n\t+numberOfElements: 10 - This is the actual number of elements (records) present in the content array for this specific page. This value can be less than pageSize if it's the last page and the total elements are not a perfect multiple of the page size.\n\n\t+size: 10 - This is the requested page size. This value will always be the same as pageable.pageSize.\n\n\t+number: 1 - This is the zero-indexed number of the current page. This value will always be the same as pageable.pageNumber.\n\n\t+empty: false - This boolean indicates whether the content array for this page is empty (i.e., if numberOfElements is 0). Here, it's false because there are 10 elements.   "]

{"sheet":"API Registration","index":4,"n_rows":18,"n_cols":11,"rows_kept":18,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Operator Registration"]
[null,"Description","APIs that used to register operator account (only use for Web Portal Application)"]
[null,"Created User","LinhNMD@fpt.com"]
[null,"Created Date","2025-06-11"]
[null,"Updated User","LinhNMD@fpt.com"]
[null,"Updated Date","2025-07-02"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[]
[null,"API Registration"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/auth/register/admin","POST","Register admin account with email and password. no need to OTP or email verification","N/A","{\n    \"email\" (R) : \"123@fpt.com\",\n    \"roles\" (R) : \"ADMIN\",\n    \"password\" (R) : \"Fpt1233455@\",\n    \"confirmPassword\" (R) : \"Fpt1233455@\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Admin registration successful\"\n\t},\n\t\"data\": {\n\t\t\"adminId\": \"05d5939b-ed02-4369-9da0-3c649406a24b\",\n\t\t\"email\": \"admin@fpt.com\"\n\t}\n}","HTTP CODE: 400\n- status.code: 1 =>  invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Password mismatch\n- status.code: 3 => Email already registered\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT (GET, INSERT)"]

{"sheet":"API Authentication","index":5,"n_rows":19,"n_cols":11,"rows_kept":19,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Operator Authentication"]
[null,"Description","APIs that used to login to system (only use for Web Portal Application)"]
[null,"Created User","LinhNMD@fpt.com"]
[null,"Created Date","2025-06-11"]
[null,"Updated User","LinhNMD@fpt.com"]
[null,"Updated Date","2025-07-02"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[]
[null,"API Authentication"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/auth/login/admin","POST","Login with operator email and password","N/A","{\n    \"usernameOrEmail\" (R) : \"123@fpt.com\",\n    \"password\" (R) : \"Fpt1233455@\"\n}","N/A","{\n    \"status\":{\n        \"code\": 0,\n        \"message\": \"Admin login successful\"\n    },\n    \"data\" : {\n        \"accessToken\": \"eyJsdGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\", // TTL: 1 day (refer SYSTEM_SETTINGS.KEY = ACCESS_TOKEN_TTL)\n        \"refreshToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\", // TTL: 1 month (refer SYSTEM_SETTINGS.KEY = REFRESH_TOKEN_TTL)\n    },\n    \"error\": null\n}","HTTP CODE: 400\n- status.code: 1 =>  invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 401\n- status.code: 2 => Admin account is not active or not found\n- status.code: 3 => Invalid credentials\n- status.code: 4 => Too many login attempts (account will be locked in 2 hours)\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","SYSTEM_SETTINGS (GET) [CACHE BY REDIS]\nADMIN_LOGIN_HISTORY (INSERT)\nADMIN_ACCOUNT (GET)"]
[null,2,"/auth/refreshToken/admin","POST","Refresh new accessToken when it is expired. This is the same api as mobile","N/A","{\n    \"refreshToken\" (R) : \"eyJsdGciO...\"\n}","N/A","{\n    \"status\":{\n        \"code\": 0,\n        \"message\": \"Token refresh successful\"\n    },\n    \"data\" : {\n        \"accessToken\": \"eyJsdGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\", // TTL: 1 day (refer SYSTEM_SETTINGS.KEY = ACCESS_TOKEN_TTL)\n         \"refreshToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\", // TTL: 1 month (refer SYSTEM_SETTINGS.KEY = REFRESH_TOKEN_TTL) => old refreshToken\n    },\n    \"error\": null\n}","\"HTTP CODE: 400\n- status.code: 1 =>  invalid/missing input. error field: [{ \"\"field\"\" : \"\"<field name>\"\", \"\"error\"\": \"\"<error message>\"\" }]\n\nHTTP CODE: 401\n- status.code: 2 => Admin account is not active or not found\n- status.code: 3 => Invalid or expired admin refresh token\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator\"","ADMIN_ACCOUNT (GET)"]

{"sheet":"API Password","index":6,"n_rows":19,"n_cols":11,"rows_kept":19,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Operator Password"]
[null,"Description","APIs that used to interact with operator credentials (password) such as change, reset password"]
[null,"Created User","LinhNMD@fpt.com"]
[null,"Created Date","2025-06-11"]
[null,"Updated User","NamLT12@fpt.com"]
[null,"Updated Date","2025-07-14"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[]
[null,"API Password"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/password/change","POST","This api is used when the admin change password as they want","\"Authorization\": \"Bearer <accessToken>\"","{\n    \"currentPassword\" (R) : \"Fpt1233455@\",\n    \"newPassword\" (R) : \"new73399\", \n    \"confirmNewPassword\" (R) : \"new73399\"\n} ","N/A","{\n    \"status\":{\n        \"code\": 0,\n        \"message\": \"Admin password changed successfully\"\n    },\n    \"data\" : null,\n    \"error\": null\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => new password mismatch\n- status.code: 3 => current password incorrect\n- status.code: 4 => account not found or not active\n- status.code: 5 => password change failed\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator    ","ADMIN_ACCOUNT (GET, UPDATE)"]
[null,2,"/admin/password/reset","POST","This api is used when the admin reset password for operator or admin","\"Authorization\": \"Bearer <accessToken>\"","{\n    \"email\" (R) : \"operator@fpt.com\"\n} ","N/A","{\n    \"status\":{\n        \"code\": 0,\n        \"message\": \"Admin password reset successfully\"\n    },\n    \"data\" : null,\n    \"error\": null\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 4 => account not found or not active\n- status.code: 5 => password reset failed\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator    ","ADMIN_ACCOUNT (GET, UPDATE)"]

{"sheet":"API Voucher Management","index":7,"n_rows":26,"n_cols":11,"rows_kept":26,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","API for Voucher Management"]
[null,"Description"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-07-09"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2026-04-10"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[]
[null,"API Voucher Management"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/vouchers/search","POST","Current sortBy only allows discountValue, code, expiredAt, maximumDiscount\n\nCurrent filter only allows filter by  voucherStatusList, code, description, discountType, discountValue, expiredFrom, expiredTo","\"Authorization\": \"Bearer <accessToken>\"","{\n    \"pageNumber\": 0,\n    \"pageSize\": 2,\n    \"sortDirection\": \"DESC\",\n    \"globalSearch\" : \"\", //search by code, description\n    \"sortBy\": \"expiredAt\", //sortby code, discountValue, expired_at\n    \"filters\":{\n        \"voucherStatusList\" : [\"A\", \"E\", \"R\", \"U\"], //search followed A (ACTIVE), E (EXPIRED), R (Assigned), U (USED) \n        \"voucherId\" : \"4d9f0ed3-bcba-40e2-bb3a-334455667788\",\n        \"code\" : \"NEWYEAR2025\",\n        \"discountValue\" : 20,\n        \"description\": \"New\",\n        \"expiredTo\" : \"2025-08-10T14:59:59.000+00:00\",\n        \"expiredFrom\" : \"2025-08-10T14:59:59.000+00:00\"\n    }\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"voucherId\": \"voucher-uuid-005\",\n\t\t\t\t\"voucherType\": \"S\",\n\t\t\t\t\"description\": \"Single-user 10% discount voucher\",\n\t\t\t\t\"code\": \"SINGLE10\",\n\t\t\t\t\"discountType\": \"P\",\n\t\t\t\t\"discountValue\": 10,\n\t\t\t\t\"limitType\": \"L\",\n\t\t\t\t\"usageLimit\": 1,\n\t\t\t\t\"startedAt\": \"2025-06-30T17:00:00.000+00:00\",\n\t\t\t\t\"expiredAt\": \"2028-08-01T16:59:59.000+00:00\",\n\t\t\t\t\"imageUrl\": \"/core/passengers/vouchers/image?voucherId=voucher-uuid-005\",\n\t\t\t\t\"createdAt\": \"2025-07-23T03:29:38.341+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-23T03:29:38.341+00:00\",\n\t\t\t\t\"currentStatus\": \"R\",\n\"maximumDiscount\": 50\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"voucherId\": \"voucher-uuid-006\",\n\t\t\t\t\"voucherType\": \"R\",\n\t\t\t\t\"description\": \"Public voucher 500 AED off\",\n\t\t\t\t\"code\": \"PUBLIC500\",\n\t\t\t\t\"discountType\": \"P\",\n\t\t\t\t\"discountValue\": 10,\n\t\t\t\t\"limitType\": \"L\",\n\t\t\t\t\"usageLimit\": 1,\n\t\t\t\t\"startedAt\": \"2025-06-30T17:00:00.000+00:00\",\n\t\t\t\t\"expiredAt\": \"2028-07-31T16:59:59.000+00:00\",\n\t\t\t\t\"imageUrl\": \"/core/passengers/vouchers/image?voucherId=voucher-uuid-006\",\n\t\t\t\t\"createdAt\": \"2025-07-23T03:29:38.341+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-23T03:29:38.341+00:00\",\n\t\t\t\t\"currentStatus\": \"R\",\n\"maximumDiscount\": 50\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 40,\n\t\t\"totalElements\": 2,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"sortBy\", \"error\": \"Invalid sortBy field\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VOUCHER (GET), PASSENGER_VOUCHER (GET)"]
[null,2,"/admin/vouchers/create","POST","Create voucher. This api can be used to create single voucher or multiple vouchers.","\"Authorization\": \"Bearer <accessToken>\"","//form data\n\n\"voucherType\" (R): \"R\", //always R in POC\n\"description\" (O): \"Single-user 10% discount voucher\",\n\"discountType\"  (R): \"P\",\n\"discountValue\"  (R): 10,\n\"limitType\"  (R): \"L\", //always L\n\"usageLimit\"  (R when limitType is L): 1, //must always be 1\n\"expiredAt\" (R): \"2028-08-01T16:59:59.000+00:00\"\n\"file\" (R) : file image \n\"maximumDiscount\" (O): 50","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Create voucher successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"voucherType\", \"error\": \"voucherType must be one of: P, R, S\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VOUCHER (INSERT)"]
[null,3,"/admin/vouchers/assign","POST","Assign voucher. This api can be used to assign/unassign a specific passenger to voucher and can also be used to assign/unassign multiple passengers to multiple vouchers","\"Authorization\": \"Bearer <accessToken>\"","{ \n    \"assignVoucherRequestList\": [\n        {\n            \"voucherId\" : \"voucher-uuid-001\",\n            \"passengerIds\" : [\"e54e8718-9bc4-4676-99c0-90e0f2c4dde8\"]\n        },\n        {\n            \"voucherId\" : \"voucher-uuid-002\",\n            \"passengerIds\" : [\"e54e8718-9bc4-4676-99c0-90e0f2c4dde8\"]\n        }\n    ]\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Fail to assign voucher\n-status.code: 3 => Voucher is already used\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PASSENGER_VOUCHER (INSERT, DELETE)"]
[null,4,"/admin/vouchers/update/{id}","PUT","Update voucher information by voucher Id","\"Authorization\": \"Bearer <accessToken>\"","//form data\n\n\"voucherType\" (R): \"R\", //always R in POC\n\"description\" (O): \"Single-user 10% discount voucher\",\n\"discountType\"  (R): \"P\",\n\"discountValue\"  (R): 10,\n\"limitType\"  (R): \"L\", //always L\n\"usageLimit\"  (R when limitType is L): 1, //must always be 1\n\"expiredAt\" (R): \"2028-08-01T16:59:59.000+00:00\"\n\"file\" (O) : file image \n\"maximumDiscount\" (O): 50","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update voucher successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"voucherType\", \"error\": \"voucherType must be one of: P, R, S\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VOUCHER (UPDATE)"]
[null,5,"/admin/vouchers/getPassengersNotAssignedVoucher","POST","Get passengers that are not assigned to this voucher","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"pageNumber\":0,\n  \"pageSize\":700,\n  \"sortDirection\": \"DESC\",\n\t\"sortBy\": \"createdAt\",\n\t\"filters\": {\n\t\t\"voucherId\": \"1\" //need to include\n\t},\n\t\"globalSearch\": \"Linn\" //search by account name, email, phone\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n            \"passengerId\": \"7cd4c53b-d3b2-4951-8669-1ea4c5e57060\",\n            \"phone\": \"+84979600702\",\n            \"accountName\": \"Thangemail01\",\n            \"email\": \"thangtest01@gmail.com\",\n            \"address\": null,\n            \"gender\": \"M\",\n            \"isActive\": true,\n            \"createdStatus\": \"C\",\n            \"avatarUrl\": \"/core/account/avatar?passengerId=7cd4c53b-d3b2-4951-8669-1ea4c5e57060\",\n            \"createdAt\": \"2025-08-06T06:34:43.575+00:00\",\n            \"modifiedAt\": \"2025-08-06T06:35:41.536+00:00\",\n            \"totalTrips\": null,\n            \"averageTripRating\": null\n        }\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 1,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"\", \"error\": \"\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VOUCHER, PASSENGER_VOUCHER (GET)"]
[null,6,"/admin/vouchers/{id}","GET","Get voucher detail by voucher id. The current status indicates the status of this voucher","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"voucherId\": \"c3a7dbbc-6b02-467f-ac55-2d41bbb66737\",\n\t\t\"voucherType\": \"P\",\n\t\t\"code\": \"V0030303\",\n\t\t\"discountType\": \"P\",\n\t\t\"discountValue\": 10,\n\t\t\"limitType\": \"L\",\n\t\t\"usageLimit\": 1,\n\t\t\"startedAt\": \"2025-07-23T05:42:10.723+00:00\",\n\t\t\"expiredAt\": \"2024-08-01T16:59:59.000+00:00\",\n\t\t\"imageUrl\": \"/core/passengers/vouchers/image?voucherId=c3a7dbbc-6b02-467f-ac55-2d41bbb66737\",\n\t\t\"createdAt\": \"2025-07-23T05:42:10.738+00:00\",\n\t\t\"modifiedAt\": \"2025-07-23T05:42:10.738+00:00\",\n\t\t\"currentStatus\": \"E\",\n\"maximumDiscount\": 50\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"\", \"error\": \"\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VOUCHER (GET)"]
[null,7,"/admin/vouchers/getPassengersAssignedVoucher/{id}","GET","Get passengers by voucher id. The current status in response indicates the usage of passenger for this voucher","\"Authorization\": \"Bearer <accessToken>\"","//request param : voucher id","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n            \"passengerId\": \"9a7891b9-4304-4dc0-9248-8f3104a8dd47\",\n            \"accountName\": \"Hai\",\n            \"email\": \"nguyentienhai.devpro@gmail.com\",\n            \"gender\": \"M\",\n            \"isActive\": true,\n            \"createdStatus\": \"C\",\n            \"avatarUrl\": \"/core/account/avatar?passengerId=9a7891b9-4304-4dc0-9248-8f3104a8dd47\",\n            \"createdAt\": \"2025-07-25T04:01:46.557+00:00\",\n            \"modifiedAt\": \"2025-07-25T04:03:21.281+00:00\",\n            \"currentStatus\": \"R\"\n        }\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"\", \"error\": \"\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VOUCHER, PASSENGER_VOUCHER, PASSENGER_ACCOUNT (GET)"]
[null,8,"/admin/voucher/data/upload","POST","Import with csv file. The file will be handled in the background, the success or fail message will be sent via email.\n\nHere is the sample data (the format expiry date must match exactly)\n\nDiscount Type,Value,Expiry Date,Description, Maximum Discount\nP,20,\"29 Jul 2025, 03:45 PM\",\"Description For You\",200","\"Authorization\": \"Bearer <accessToken>\"","//formdata : \nfile: file .csv\noffset: \"+07:00\"","N/A","{\n  \"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"\", \"error\": \"\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VOUCHER (INSERT)"]
[null,9,"/admin/voucher/template","GET","Download template csv","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","csv file","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"\", \"error\": \"\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator"]

{"sheet":"API Terms and Conditions","index":8,"n_rows":19,"n_cols":11,"rows_kept":19,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","API for update terms and conditions"]
[null,"Description","Upload terms and conditions as html file to Azure Blob Storage and then mobile application will get and display it inside application"]
[null,"Created User","LinhNMD@fpt.com"]
[null,"Created Date","2025-07-09"]
[null,"Updated User","LinhNMD@fpt.com"]
[null,"Updated Date","2025-07-09"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[]
[null,"API Terms and Conditions"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/terms-conditions/upload","POST","This api is used to modify the terms and condition file. Only admin can use this","\"Authorization\": \"Bearer <accessToken>\"","multipart/form-data\n*.html\nMaximum file size: 5MB","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Terms and conditions uploaded successfully\"\n\t},\n\t\"data\": {\n\t\t\"termsUrl\": \"<URL string>\"\n\t}\n}","HTTP CODE: 400\n- status.code: 1 => Invalid file format or file size. Only HTML files up to 5MB are allowed\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","SYSTEM_SETTINGS (GET, UPDATE)\nAzure Blob Storage\nRedis for cache"]
[null,2,"/terms-conditions","GET","This api is used at mobile side to retrieve the file content from server to display it to screen","N/A","N/A","N/A","byte array","HTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","SYSTEM_SETTINGS (GET)\nAzure Blob Storage\nRedis for cache"]

{"sheet":"API AV Group Management","index":9,"n_rows":27,"n_cols":11,"rows_kept":27,"cut":false,"hidden":false,"merged":[]}
[null,"API Specification"]
[null,"Business Name","AV Group Management"]
[null,"Description","APIs that used to Av group management (view list, view detail, add, update, delete)"]
[null,"Created User","NamLT12@fpt.com"]
[null,"Created Date","2025-07-02"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-12-22"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API AV Group Management"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/createAvGroup","POST","Admin can create new AV group with group name","\"Authorization\": \"Bearer <accessToken>\"","{\n\"groupName\" (R):\"Group1\",\n\"description\" (O): \"Description\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Create AV group successfully\"\n\t},\n\t\"data\": {\n\t\t\"groupId\": \"bec361c4-77b7-4c3e-b102-c08850215f53\",\n\t\t\"groupName\": \"Group 1\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => AV Group name is exist.\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","AV_GROUPS (INSERT)"]
[null,2,"/admin/updateAvGroup","PUT","Admin can update information of AV group (Group name)","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"groupId\" (R):\"191b49f1-04c3-44b3-87f3-088c33e93dc0\",\n  \"groupName\" (R): \"Group Test\",\n\"description\" (O): \"description\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update AV group successfully\"\n\t},\n\t\"data\": {\n\t\t\"groupId\": \"191b49f1-04c3-44b3-87f3-088c33e93dc0\",\n\t\t\"groupName\": \"Group Test\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Can not found AV group id\n- status.code: 3 => Group name already exists.\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","AV_GROUPS (UPDATE)"]
[null,3,"/admin/avGroupsSupervisors","GET","This API will get the AV groups and a list of supervisors that belongs to each group. This API will only show groups that has at least one supervisor","\"Authorization\": \"Bearer <accessToken>\"","//request params\npage=0 (page index) \nsize=2 (number of items)\nsort (desc or asc)","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"groupId\": \"1\",\n\t\t\t\t\"groupName\": \"Monitor Car 1\",\n\t\t\t\t\"supervisors\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"adminId\": \"1dabf181-c932-4bf9-ad3b-5f5b6b37bc08\",\n\t\t\t\t\t\t\"email\": \"kietht9@fpt.com\",\n\"phone\": \"1234\",\n\t\t\t\t\t\t\"roles\": \"OPERATOR\",\n\t\t\t\t\t\t\"isActive\": true\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"adminId\": \"1dabf181-c932-4bf9-ad3b-5f5b6b37bc10\",\n\t\t\t\t\t\t\"email\": \"kietht9@fpt.com2\",\n\"phone\": \"1234\",\n\t\t\t\t\t\t\"roles\": \"OPERATOR\",\n\t\t\t\t\t\t\"isActive\": true\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 2,\n\t\t\"totalElements\": 1,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","AV_GROUPS (GET)\nOPERATORS_GROUPS (GET)\nADMIN_ACCOUNT (GET)"]
[null,4,"/admin/avAssignGroupsSupervisors","POST","Assign multi supervisors to multi groups\n\navGroupSupervisorList : contains a list of avGroupSupervisor object. \n\nEach avGroupSupervisor object contains one groupId, and a list of supervisorIds that belongs to that group","\"Authorization\": \"Bearer <accessToken>\"","{\n    \"avGroupSupervisorList\": [\n        {\n            \"groupId\" : \"1\",\n            \"supervisorIds\" : [\"1dabf181-c932-4bf9-ad3b-5f5b6b37bc08\", \"1dabf181-c932-4bf9-ad3b-5f5b6b37bc10\"]\n        }\n    ]\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success Assign Supervisors to Groups\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code : 2 => Fail to assign Supervisors to Groups\n-status.code : 3 =>  The selected user must have the Operator role.\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","OPERATORS_GROUPS (INSERT)"]
[null,5,"/admin/avUnassignGroupsSupervisors","POST","Reassign multi supervisors to multi groups\n\navGroupSupervisorList : contains a list of avGroupSupervisor object. \n\nEach avGroupSupervisor object contains one groupId, and a list of supervisorIds that belongs to that group","\"Authorization\": \"Bearer <accessToken>\"","{\n    \"avGroupSupervisorList\": [\n        {\n            \"groupId\" : \"1\",\n            \"supervisorIds\" : [\"1dabf181-c932-4bf9-ad3b-5f5b6b37bc08\", \"1dabf181-c932-4bf9-ad3b-5f5b6b37bc10\"]\n        }\n    ]\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success Unassign Supervisors to Groups\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code : 2 => Fail to unassign Supervisors to Groups\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","OPERATORS_GROUPS (DELETE)"]
[null,6,"/admin/getSupervisorsNotInGroup/:groupId","GET","Path variable is group Id. Get supervisors that is not in group Id","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n\t\t\t\"username\": \"admin\",\n\t\t\t\"email\": \"admin@fpt.com\",\n\"phone\": \"1234\",\n\t\t\t\t\t\t\"roles\": \"OPERATOR\",\n\t\t\t\"isActive\": true\n\t\t},\n\t\t{\n\t\t\t\"adminId\": \"1dabf181-c932-4bf9-ad3b-5f5b6b37bc07\",\n\t\t\t\"email\": \"kietht9@fpt.com1\",\n\"phone\": \"1234\",\n\t\t\t\t\t\t\"roles\": \"OPERATOR\",\n\t\t\t\"isActive\": true\n\t\t},\n\t\t{\n\t\t\t\"adminId\": \"1dabf181-c932-4bf9-ad3b-5f5b6b37bc10\",\n\t\t\t\"email\": \"kietht9@fpt.com2\",\n\"phone\": \"1234\",\n\t\t\t\t\t\t\"roles\": \"OPERATOR\",\n\t\t\t\"isActive\": true\n\t\t},\n\t\t{\n\t\t\t\"adminId\": \"1dabf181-c932-4bf9-ad3b-5f5b6b37bc08\",\n\t\t\t\"email\": \"kietht9@fpt.com\",\n\"phone\": \"1234\",\n\t\t\t\t\t\t\"roles\": \"OPERATOR\",\n\t\t\t\"isActive\": true\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","OPERATORS_GROUPS (GET)\nADMIN_ACCOUNT (GET)"]
[null,7,"/admin/avGroups","POST","Get Groups' Summary (total vehicles, total supervisors) with many filters; \n\nThe search query is built using URL and request body  in a POST request. For example: \n\t-/admin/avGroups\n\tRequestBody:\n\t{\n  \"globalSearch\": \"av1\",\n  \"pageNumber\": 0,\n  \"pageSize\": 10,\n  \"sortDirection\": \"DESC\",\n  \"sortBy\": \"totalSupervisors\",\n  \"filters\": {\n    \"groupName\": \"av1\",\n    \"groupCode\": \"G123231\",\n    \"description\": \"hello\",\n    \"totalVehicles\": 1,\n    \"totalSupervisors\": 2\n  }\n}\n\n-Param \"globalSearch\": search for admin/operator with email (LIKE) or phone (LIKE) or name (LIKE)\nHere is the defined list of filter parameters:\n\t-groupName(O): search for admin/operator with groupName(LIKE)\n\t-groupCode(O): search for admin/operator with groupCode(LIKE) \n        -description(O): search for admin/operator with description(LIKE)\n        -totalVehicles(O): search for admin/operator with totalVehicles (EQUALS)\n        -totalSupervisors(O):search for admin/operator with totalSupervisors(EQUALS)\n\nBackend applies sensible default values if these parameters are not provided:\n\t-page: defaults to 1.\n\t-limit: defaults to 10.\n\nBackend validates strictly with these parameter:\n\t-pageNumber, pageSize: only positive integer.\n\t-sortDirection: must be in (\"ASC\", \"DESC\").","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"globalSearch\" (R):\"av1\",\n  \"pageNumber\" (R): 0,\n  \"pageSize\" (R): 10,\n  \"sortDirection\" (R): \"DESC\",\n\t\"sortBy\" (O):\"totalSupervisors\",\n  \"filters\" (R): {\n\t\t\"groupName\" (O): \"av1\",\n\t\t\"groupCode\" (O): \"G123231\",\n\t\t\"description\" (O): \"hello\",\n\t\t\"totalVehicles\" (O): 1,\n\t\t\"totalSupervisors\" (O): 2\n  }\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"groupId\": \"927d4379-2e7a-4411-b907-1120f3f987f7\",\n\t\t\t\t\"groupCode\": \"GO\",\n\t\t\t\t\"groupName\": \"11\",\n\t\t\t\t\"description\": \"1\",\n\t\t\t\t\"createdAt\": \"2025-07-22T07:04:14.243+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-22T07:04:14.243+00:00\",\n\t\t\t\t\"totalVehicles\": 0,\n\t\t\t\t\"totalSupervisors\": 0\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 1,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","OPERATORS_GROUPS (GET)\nADMIN_ACCOUNT (GET)\nAV_GROUPS (GET)"]
[null,8,"/admin/assignVehicleGroup","POST","Assign multi vehicles to multi groups\n\navGroupsVehicles: contains a list of avVehicleGroup object. \n\nEach avVehicleGroup object contains one groupId, and a list of vehicleIds that belongs to that group","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"avGroupsVehicles\": [\n    {\n      \"groupId\": \"7a8fd754-48fe-4aa9-b46d-c162de9e2136\",\n      \"vehicleId\": [\n        \"44c2ba21d11-1127201b44861\", \"44c2ba21d11-112720a1b44861\"\n      ]\n    }\n  ]\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Assign vehicle to group successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES_GROUPS(INSERT)"]
[null,9,"/admin/unassignVehicleGroup","POST","Unassign multi vehicles to multi groups\n\navGroupsVehicles: contains a list of avVehicleGroup object. \n\nEach avVehicleGroup object contains one groupId, and a list of vehicleIds that belongs to that group","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"avGroupsVehicles\": [\n    {\n      \"groupId\": \"7a8fd754-48fe-4aa9-b46d-c162de9e2136\",\n      \"vehicleId\": [\n        \"44c2ba21d11-1127201b44861\", \"44c2ba21d11-112720a1b44861\"\n      ]\n    }\n  ]\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Unassign vehicle to group successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES_GROUPS (DELETE)"]
[null,10,"/admin/deleteAvGroup","DELETE","Delete av group with groupId.\nFor example request :\nadmin/deleteAvGroup?groupId=9618ca10-4de4-4797-9b9c-89d56cf50c66","\"Authorization\": \"Bearer <accessToken>\"","Request param: \ngroupId: Id of AV group","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete AV group successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","AV_GROUPS (DELETE)"]
[null,11,"/admin/avGroupsDetails","GET","Get av group details with groupId.\nFor example request :\nadmin/avGroupsDetails?groupId=9618ca10-4de4-4797-9b9c-89d56cf50c66\n\nInternal vehicle status code\n1: AVAILABLE\n2: PICKING\n3: ON_TRIP\n4: RETURNING\n5: OPERATIONS\n6: MAINTENANCE\n7: OFFLINE\n8: DISCONNECTED (field isConnected: false)\n9: FAULTED\n10: HIBERNATE","\"Authorization\": \"Bearer <accessToken>\"","Request param: \ngroupId: Id of AV group","N/A","{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"Success\"\n  },\n  \"data\": {\n    \"group\": {\n\t\t\t\"groupId\": \"1\",\n\t\t\t\"groupName\": \"Group1\",\n\t\t\t\"description\": \"\",\n\t\t\t\"createdAt\": \"2025-07-22T04:27:55.885+00:00\",\n\t\t\t\"modifiedAt\": \"2025-07-22T04:27:55.885+00:00\"\n\t\t},\n    \"supervisors\": [\n      {\n        \"adminId\": \"1dabf181-c932-4bf9-ad3b-5f5b6b37bc08\",\n        \"email\": \"kietht9@fpt.com\",\n        \"isActive\": true,\n        \"createdAt\": \"2025-06-24T04:03:02.751+00:00\",\n        \"modifiedAt\": \"2025-06-24T04:03:02.751+00:00\"\n      }\n    ],\n    \"vehicles\": [\n      {\n\t\t\t\t\"vehicleId\": \"64c65542-c11b-4b83-8459-d4c247df81e2\",\n\t\t\t\t\"vehicleWorkNumber\": \"123124\",\n\t\t\t\t\"vehicleTestNumber\": \"2312445\",\n\t\t\t\t\"vehicleModel\": \"Toyota\",\n\t\t\t\t\"licensePlate\": \"51K12345\",\n\t\t\t\t\"vinNumber\": \"1234540127\",\n\t\t\t\t\"createdAt\": \"2025-07-29T07:46:20.690+00:00\",\n\t\t\t\t\"vehicleStatus\": {\n\t\t\t\t\t\"vehicleStatusId\": \"1\",\n\t\t\t\t\t\"eventCode\": null,\n\t\t\t\t\t\"eventDetail\": null,\n\t\t\t\t\t\"currentSpeed\": 12.0,\n\t\t\t\t\t\"deviceTime\": \"12323\",\n\t\t\t\t\t\"status\": \"5\",\n\t\t\t\t\t\"timeStamp\": \"1233\",\n\t\t\t\t\t\"batteryLevel\": 10,\n\t\t\t\t\t\"latitude\": 123.0,\n\t\t\t\t\t\"longitude\": 123.0,\n\t\t\t\t\t\"engineStatus\": \"2\",\n\t\t\t\t\t\"createdAt\": \"2025-07-29T07:46:20.690+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-07-29T07:52:41.176+00:00\",\n\t\t\t\t\t\"accuracy\": 1,\n\t\t\t\t\t\"direction\": 23,\n\t\t\t\t\t\"height\": 23,\n\t\t\t\t\t\"remainingDistance\": \"123123\",\n\t\t\t\t\t\"remainingDuration\": \"1233\", \"internalVehicleStatus\": 1, \"isConnected\" : false\n\t\t\t\t},\n\t\t\t\t\"vehicleType\": {\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\t\"vehicleTypeCode\": \"APRT6\",\n\t\t\t\t\t\"vehicleTypeName\": \"APOLLO RT6\",\n\t\t\t\t\t\"description\": \"APOLLO RT6 V1\",\n\t\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\t\"imageUrl\": null,\n\t\t\t\t\t\"baseFare\": 100.0,\n\t\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\t\"createdAt\": \"2025-07-29T07:46:20.690+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-07-29T07:52:41.176+00:00\",\n\t\t\t\t\t\"disable\": false\n\t\t\t\t}\n\t\t\t}\n    ]\n  }\n}","HTTP CODE: 200\n- status.code: 0 => Success\n\n'HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","OPERATORS_GROUPS (GET)\n"]
[null,12,"/admin/getVehiclesNotInGroup/:groupId","GET","Path variable is group Id. Get vehicles that is not in group Id\n\nInternal vehicle status code\n1: AVAILABLE\n2: PICKING\n3: ON_TRIP\n4: RETURNING\n5: OPERATIONS\n6: MAINTENANCE\n7: OFFLINE\n8: DISCONNECTED (isConnected : false)\n9: FAULTED\n10: HIBERNATE","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"vehicleId\": \"765ce5dd-a36a-4984-b9e3-dd603f1cb6bd\",\n\t\t\t\"licensePlate\": \"51K12341\",\n\t\t\t\"vehicleTestNumber\": \"1234551\",\n\t\t\t\"vin\": \"1234540121\",\n\t\t\t\"modelName\": \"Toyota\",\n\t\t\t\"provisioningStatus\": \"R\",\n\t\t\t\"vehicleStatus\": 5,\"internalVehicleStatus\": 1, \"isConnected\" : false\n\t\t},\n\t\t{\n\t\t\t\"\"vehicleId\": \"765ce5dd-a36a-4984-b9e3-dd603f1cb6bd\",\n\t\t\t\"licensePlate\": \"51K12341\",\n\t\t\t\"vehicleTestNumber\": \"1234551\",\n\t\t\t\"vin\": \"1234540121\",\n\t\t\t\"modelName\": \"Toyota\",\n\t\t\t\"provisioningStatus\": \"R\",\n\t\t\t\"vehicleStatus\": 5, \"internalVehicleStatus\": 1, \"isConnected\" : false\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES_GROUPS (GET)\nVEHICLES(GET)"]

{"sheet":"API Operator Management","index":10,"n_rows":23,"n_cols":11,"rows_kept":23,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Operator Management"]
[null,"Description","APIs that used to get, update operator"]
[null,"Created User","NamLT12@fpt.com"]
[null,"Created Date","2025-07-02"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-10-20"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"OPERATOR MANAGEMENT"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/searchAdminsAndOperators","POST","Admin can search for admin/operator with many filters; \n\nCurrent user can view list admins/operators.\nThe search query is built using URL and request body  in a POST request. For example: \n\t-/searchAdminsAndOperators\n\tRequestBody:\n\t{\n\"globalSearch\":\"operator\",\n  \"pageNumber\": 0,\n  \"pageSize\": 10,\n  \"sortDirection\": \"ASC\",\n  \"filters\": {\n    \"role\": \"ADMIN\",\n\t\t\"email\": \"operator\"\n  }\n}\n\n-Param \"globalSearch\": search for admin/operator with email (LIKE) or phone (LIKE) or name (LIKE)\nHere is the defined list of filter parameters:\n\t-role(O): search for admin/operator with roles(LIKE)\n\t-email(O): search for admin/operator with email(LIKE) \n        -name (O): search for admin/operator with name (LIKE)\n        -isActive (O): search for admin/operator with is_active (EQUALS)\n        -phone(O): search for admin/operator with phone (LIKE)\n\nBackend applies sensible default values if these parameters are not provided:\n\t-page: defaults to 1.\n\t-limit: defaults to 10.\n\nBackend validates strictly with these parameter:\n\t-pageNumber, pageSize: only positive integer.\n\t-sortDirection: must be in (\"ASC\", \"DESC\").","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"globalSearch\" (R):\"operator\",\n  \"pageNumber\" (R): 0,\n  \"pageSize\" (R): 10,\n  \"sortDirection\" (R): \"DESC\",\n\t\"sortBy\" (O):\"isActive\",\n  \"filters\" (R): {\n\t\t\"name\" (O): \"operator\",\n\t\t\"email\" (O): \"ope@fpt.com\",\n\t\t\"phone\" (O): \"+84012312312\",\n\t\t\"roles\" (O): \"ADMIN\",\n\t\t\"isActive\" (O): true\n  }\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742g\",\n\t\t\t\t\"roles\": \"ADMIN\",\n\t\t\t\t\"name\": \"operator\",\n\t\t\t\t\"email\": \"operator@fpt.com\",\n\t\t\t\t\"phoneNumber\": \"+85101712652\",\n\t\t\t\t\"preferredLanguage\": \"en-Us\",\n\t\t\t\t\"isActive\": true,\n\t\t\t\t\"createdAt\": \"2025-07-08T19:17:20.886+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-08T19:17:20.886+00:00\"\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 1,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT (GET)"]
[null,2,"/admin/updateOperator","PUT","Admin can update active infomation of operator/user (Active/Inactive)","\"Authorization\": \"Bearer <accessToken>\"","form data: {\n\t\"accountId\" (R): \"1a260e38-79c9-4833-9333-ee9f1e07742g\",\n\t\"active\" (R): false,\n\t\"name\" (O): \"operator\",\n\t\"phone\" (O): \"+8571273712\",\n\t\"role\" (R): \"OPERATOR\",\n\"avatar\" (O):  binary,\n\"gender\": \"F\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Operator update successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Phone number is exits\n- status.code: 3 => Name is empty \n- status.code: 4 => Failed to change role because driver is still on trip or on operation \n- status.code: 5 => Failed to deactivate driver because driver is still on trip or on operation\n-status.code: 6 => Role is not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT (UPDATE)"]
[null,3,"/admin/viewDetailCurrentAdmin","GET","Admin can view self detail master data","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Get detail admin account successfully\"\n\t},\n\t\"data\": {\n\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n\t\t\"roles\": \"ADMIN\",\n\t\t\"name\": \"admin\",\n\t\t\"email\": \"admin@fpt.com\",\n\t\t\"phone\": +0123457890,\n\t\t\"preferredLanguage\": \"en-US\",\n\t\t\"isActive\": true,\n\t\t\"createdAt\": \"2025-06-27T07:59:48.576+00:00\",\n\t\t\"modifiedAt\": \"2025-06-27T07:59:48.576+00:00\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT (GET)"]
[null,4,"/admin/updateAdminAccount","PUT","Admin can self update detail master data","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"name\" (O): \"string\",\n  \"phone\" (O): \"+84000112312\",\n  \"preferredLanguage\" (O): \"en-US\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update admin information successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT (UPDATE)"]
[null,5,"/admin/details","GET","Admin can view another admin accounts with adminId\nFor example request :\nadmin/details?adminId=1a260e38-79c9-4833-9333-ee9f1e07742f","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"Get detail admin account successfully\"\n  },\n  \"data\": {\n    \"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n    \"roles\": \"ADMIN\",\n    \"name\": \"admin\",\n    \"email\": \"admin@fpt.com\",\n    \"phoneNumber\": \"123213\",\n    \"preferredLanguage\": \"English\",\n    \"isActive\": true,\n    \"createdAt\": \"2025-06-27T07:59:48.576+00:00\",\n    \"modifiedAt\": \"2025-06-27T07:59:48.576+00:00\"\n  }\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code = 2 => Get detail admin account failed\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT (GET)"]
[null,6,"/admin/addAdminOrOperatorAccount","POST","Admin can add new Admin or Operator with master data","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"email\" (R): \"email@fpt.com\",\n  \"phone\" (R): \"+84000001233\",\n  \"name\" (R): \"name\",\n  \"role\" (R): \"OPERATOR\",\n  \"active\" (R): true,\n\"avatar\" (O):  binary,\n\"gender\": \"F\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Admin registration successful\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code = 2 => Validation Error. error field:  [\n\t\t{\n\t\t\t\"field\": \"email\",\n\t\t\t\"error\": \"Email address already registered\"\n\t\t},\n\t\t{\n\t\t\t\"field\": \"phone\",\n\t\t\t\"error\": \"Phone number already registered\"\n\t\t}, \n{\n\t\t\t\"field\": \"role\",\n\t\t\t\"error\": \"role is not found\"\n\t\t}\n\t]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT (INSERT)"]
[null,7,"/searchNotAssignedTicket?ticketId=50c4ccc4-8fe2-486f-8bec-a18688f8276e&type=1&email=kiet ","GET","Search operators that is not assigned in this ticket (Issue ticket or Maintenance Ticket). ","\"Authorization\": \"Bearer <accessToken>\"","Request Params:\nticketId:\ntype: \n\t1 - Find operators who not assigned in the issue ticket\n \t2 - Find operators who not assigned in the maintenance ticket\nemail","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Get list operator successfully\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742e\",\n\t\t\t\"roles\": \"OPERATOR\",\n\t\t\t\"name\": \"operator\",\n\t\t\t\"email\": \"kietht9@fpt.com\",\n\t\t\t\"phone\": \"12\",\n\t\t\t\"preferredLanguage\": \"en\",\n\t\t\t\"isActive\": true,\n\t\t\t\"createdAt\": \"2025-08-18T07:47:34.057+00:00\",\n\t\t\t\"modifiedAt\": \"2025-08-18T07:47:34.057+00:00\"\n\t\t},\n\t\t{\n\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e077423\",\n\t\t\t\"roles\": \"OPERATOR\",\n\t\t\t\"name\": \"operator\",\n\t\t\t\"email\": \"kietht91@fpt.com\",\n\t\t\t\"phone\": \"12\",\n\t\t\t\"preferredLanguage\": \"en\",\n\t\t\t\"isActive\": true,\n\t\t\t\"createdAt\": \"2025-08-19T08:05:30.895+00:00\",\n\t\t\t\"modifiedAt\": \"2025-08-19T08:05:30.895+00:00\"\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code = 2 => User name or email already exist\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT (GET)"]

{"sheet":"API Passenger Management","index":11,"n_rows":21,"n_cols":11,"rows_kept":21,"cut":false,"hidden":false,"merged":[]}
[null,"API Specification"]
[null,"Business Name","Passenger Management"]
[null,"Description","APIs that used to Passenger management (view list, view detail)"]
[null,"Created User","NamLT12@fpt.com"]
[null,"Created Date","2025-07-02"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2026-04-10"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"PASSENGER MANAGEMENT"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/searchPassengers","POST","Admin can search for passengers with many filters; \n\nThe search query is built using URL and request body  in a POST request. For example: \n\t-/searchPassengers\n\tRequestBody:\n\t{\n\"globalSearch\":\"user\",\n  \"pageNumber\": 0,\n  \"pageSize\": 10,\n  \"sortDirection\": \"ASC\",\n  \"filters\": {\n\t\t\"email\": \"user\"\n  }\n}\n\n-Param \"globalSearch\": search for passengers with email (LIKE) or phone (LIKE) or name (LIKE)\nHere is the defined list of filter parameters:\n\t-gender(O): search for passengers with gender(LIKE)\n\t-email(O): search for passengers with email(LIKE) \n        -name (O): search for passengers with name (LIKE)\n        -isActive (O): search for passengers with is_active (EQUALS)\n        -phone(O): search for passengers with phone (LIKE)\n\t\t-createdAt(O): search for passengers with range createdAt in from and to \n\nHere is the defined list of sort parameters:\n\t-gender(O)\n\t-email(O)\n    -name (O)\n    -isActive (O)\n    -phone(O)\n\t-createdAt(O)\n\t-totalTrips (O)\n\t-averageTripRating (O)\n    -totalOpenTickets (O)\n\nBackend applies sensible default values if these parameters are not provided:\n\t-page: defaults to 1.\n\t-limit: defaults to 10.\n\nBackend validates strictly with these parameter:\n\t-pageNumber, pageSize: only positive integer.\n\t-sortDirection: must be in (\"ASC\", \"DESC\").","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"globalSearch\" (O): \"\",\n  \"pageNumber\" (R): 0,\n  \"pageSize\" (R): 10,\n  \"sortDirection\" (R): \"DESC\",\n\t\"sortBy\"(O):\"totalTrips\",\n  \"filters\"(R): {\n\t\t\"name\"(O):\"user\",\n\t\t\"gender\"(O):\"f\",\n\t\t\"phone\"(O):\"11232132443\",\n\t\t\"email\"(O):\"\",\n\t\t\"isActive\"(O): true,\n\t\t\"createdAt\"(O):{\n\t\t\t\"from\":\"2024-04-04T23:20:00.000+00:00\",\n\t\t\t\"to\":\"2024-04-04T23:20:00.000+00:00\"\n\t\t}\n  }\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Search passenger successfully\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"passengerId\": \"e54e8718-9bc4-4676-99c0-90e0f2c4dde9\",\n\t\t\t\t\"phone\": \"+84908878679\",\n\t\t\t\t\"accountName\": \"KIET\",\n\t\t\t\t\"email\": \"kietht9@fpt.com2\",\n\t\t\t\t\"address\": null,\n\t\t\t\t\"gender\": null,\n\t\t\t\t\"isActive\": false,\n\t\t\t\t\"createdStatus\": \"V\",\n\t\t\t\t\"avatarUrl\": \"https:avata.com....\",\n\t\t\t\t\"createdAt\": \"2025-07-09T06:48:20.602+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-09T06:48:20.602+00:00\",\n\t\t\t\t\"totalTrips\": 3,\n\t\t\t\t\"averageTripRating\": 0.0,\n\t\t\t\t\"totalOpenTickets\": 0,\n\"verifiedPhone\": true,\n\"verifiedEmail\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"passengerId\": \"7f508ad5-913a-4d0b-8c33-4a9b02ceb52c\",\n\t\t\t\t\"phone\": \"32323\",\n\t\t\t\t\"accountName\": \"TrungNT147\",\n\t\t\t\t\"email\": \"trungnt147@fpt.com\",\n\t\t\t\t\"address\": null,\n\t\t\t\t\"gender\": \"M\",\n\t\t\t\t\"isActive\": true,\n\t\t\t\t\"createdStatus\": \"C\",\n\t\t\t\t\"avatarUrl\": \"https:avata.com....\",\n\t\t\t\t\"createdAt\": \"2025-07-30T23:23:42.326+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-30T23:23:47.828+00:00\",\n\t\t\t\t\"totalTrips\": 4,\n\t\t\t\t\"averageTripRating\": 0.0,\n\t\t\t\t\"totalOpenTickets\": 1,\n\"verifiedPhone\": true,\n\"verifiedEmail\": true\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"passengerId\": \"e54e8718-9bc4-4676-99c0-90e0f2c4dde8\",\n\t\t\t\t\"phone\": \"+84908878678\",\n\t\t\t\t\"accountName\": \"KIET\",\n\t\t\t\t\"email\": \"kietht9@fpt.com\",\n\t\t\t\t\"address\": null,\n\t\t\t\t\"gender\": \"M\",\n\t\t\t\t\"isActive\": true,\n\t\t\t\t\"createdStatus\": \"C\",\n\t\t\t\t\"avatarUrl\": \"https:avata.com....\",\n\t\t\t\t\"createdAt\": \"2025-07-09T03:41:53.377+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-09T03:42:06.125+00:00\",\n\t\t\t\t\"totalTrips\": 3,\n\t\t\t\t\"averageTripRating\": 5.0,\n\t\t\t\t\"totalOpenTickets\": 1,\n\"verifiedPhone\": true,\n\"verifiedEmail\": true\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 3,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 5 => Unique field exist. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PASSENGER_ACCOUNT, TRIPS, TRIP_RATINGS, ISSUE_TICKETS (GET)"]
[null,2,"/admin/getPassenger","GET","Get passenger's detail by passenger Id. \nFor example endpoint: /getPassenger?id=8fa5a058-de80-4aa6-864d-105bdafdb804","\"Authorization\": \"Bearer <accessToken>\"","Request Param: id (R) - Identify of passenger","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Get passenger account successfully\"\n\t},\n\t\"data\": {\n\t\t\"passengerId\": \"8fa5a058-de80-4aa6-864d-105bdafdb804\",\n\t\t\"phone\": \"+8412345625\",\n\t\t\"accountName\": \"<accountName>\",\n\t\t\"email\": \"<email>\",\n\t\t\"address\": \"<address>\",\n\"gender\": \"F\",\n\t\t\"isActive\": false,\n\t\t\"createdStatus\": \"V\",\n\t\t\"otpRequests\": [\n\t\t\t{\n\t\t\t\t\"phone\": \"+8412345625\",\n\t\t\t\t\"email\": null,\n\t\t\t\t\"verifyBy\": \"P\",\n\t\t\t\t\"otpVerifyStatus\": \"P\",\n\t\t\t\t\"sendOtpAttempts\": 1,\n\t\t\t\t\"verifyOtpAttempts\": 1,\n\t\t\t\t\"otpExpiredAt\": \"2025-07-01 09:47:21.077072+00\",\n\t\t\t\t\"purpose\": \"R\",\n\t\t\t\t\"createAt\": \"2025-07-05 07:58:08.958368+00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-05 07:58:08.958368+00\"\n\t\t\t}\n\t\t],\n\t\t\"totalLoginCount\": {\n\t\t\t\"success\": 2,\n\t\t\t\"failed\": 2\n\t\t},\n                \"avataUrl\":\"https:avata.com....\",\n\t\t\"createdAt\": \"2025-07-02T11:11:23.517+00:00\",\n\t\t\"modifiedAt\": \"2025-07-02T11:11:23.517+00:00\",\n                 \"totalTrips\":0,\n                 \"averageTripRating\": 0.0,\n                 \"totalTickets\": 1,\n\"verifiedPhone\": true,\n\"verifiedEmail\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 2 => passenger id does not exist\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PASSENGER_ACCOUNT (GET)"]
[null,3,"/admin/passengerRideHistories","POST","Get list trip details of passenger by passenger Id. \nFor example endpoint: /passengerRideHistories?passengerId=8fa5a058-de80-4aa6-864d-105bdafdb804\n\nThe search query is built using URL and request body  in a POST request. For example: \n\tRequestBody:\n\t{\n  \"pageNumber\":0,\n  \"pageSize\": 20,\n  \"sortDirection\": \"ASC\",\n\t\"sortBy\": \"status\",\n\t\"filters\": {\n\"rideStatusList\": [] // status number defined below in status mapping\n\t\t\"dropOffAddress\": \"bbb\",\n                \"pickUpAddress\": \"aaa\",\n\t\t\"createdAt\": {\n\t\t\t\"from\": \"2025-07-09T06:40:50.716+00:00\",\n\t\t\t\"to\": \"2025-07-09T06:40:51.716+00:00\"\n\t\t}\n\t},\n\t\"globalSearch\": \"trip1\"\n}\n\n-Param \"globalSearch\": search for admin/operator with email (LIKE) or phone (LIKE) or name (LIKE)\nHere is the defined list of filter parameters:\n\t-tripId(O): search for admin/operator with tripId(LIKE)\n\t-status(O): search for admin/operator with status(EQUALS) \n        -createdAt(O): search for passengers with range createdAt in from and to \n        -pickUpAddress(O): search for admin/operator with pickUpAddress (LIKE)\n        -dropOffAddress(O): search for admin/operator with dropOffAddresse (LIKE)\n\nBackend applies sensible default values if these parameters are not provided:\n\t-page: defaults to 1.\n\t-limit: defaults to 10.\n\nBackend validates strictly with these parameter:\n\t-pageNumber, pageSize: only positive integer.\n\t-sortDirection: must be in (\"ASC\", \"DESC\").\n\ntrip-status-mapping:\n\n1 DISPATCHING:\n  internalStatus: 1\n  status_code: DISPATCHING\n  lifecycle (category): ACTIVE\n  code: 2\n\n2 VEHICLE_ASSIGNED:\n  internalStatus: 2\n  status_code: VEHICLE_ASSIGNED\n  lifecycle (category): ACTIVE\n  code: 2\n\n3 DRIVER_CONFIRMED:\n  internalStatus: 3\n  status_code: DRIVER_CONFIRMED\n  lifecycle (category): ACTIVE\n  code: 2\n\n4 ARRIVED_AT_PICKUP:\n  internalStatus: 4\n  status_code: ARRIVED_AT_PICKUP\n  lifecycle (category): ACTIVE\n  code: 2\n\n5 PASSENGER_BOARDED:\n  internalStatus: 5\n  status_code: PASSENGER_BOARDED\n  lifecycle (category): ACTIVE\n  code: 2\n\n6 READY_TO_START_TRIP:\n  internalStatus: 6\n  status_code: READY_TO_START_TRIP\n  lifecycle (category): ACTIVE\n  code: 2\n\n7 ON_TRIP:\n  internalStatus: 7\n  status_code: ON_TRIP\n  lifecycle (category): ACTIVE\n  code: 2\n\n8 ARRIVED_AT_DESTINATION:\n  internalStatus: 8\n  status_code: ARRIVED_AT_DESTINATION\n  lifecycle (category): ACTIVE\n  code: 2\n\n9 PASSENGER_ALIGHTED:\n  internalStatus: 9\n  status_code: PASSENGER_ALIGHTED\n  lifecycle (category): COMPLETED\n  code: 3\n\n10 TRIP_COMPLETED:\n  internalStatus: 10\n  status_code: TRIP_COMPLETED\n  lifecycle (category): COMPLETED\n  code: 3\n\n11 VEHICLE_REJECTED_DUE_TO_MALFUNCTION:\n  internalStatus: 11\n  status_code: VEHICLE_REJECTED_DUE_TO_MALFUNCTION\n  lifecycle (category): ACTIVE\n  code: 2\n\n12 VEHICLE_TIME_OUT:\n  internalStatus: 12\n  status_code: VEHICLE_TIME_OUT\n  lifecycle (category): ACTIVE\n  code: 2\n\n13 VEHICLE_FOUND_ABNORMAL_AFTER_ACCEPTING:\n  internalStatus: 13\n  status_code: VEHICLE_FOUND_ABNORMAL_AFTER_ACCEPTING\n  lifecycle (category): ACTIVE\n  code: 2\n\n14 PASSENGER_CANCELLED:\n  internalStatus: 14\n  status_code: PASSENGER_CANCELLED\n  lifecycle (category): CANCELLED\n  code: 1\n\n15 OPERATION_CANCELLED:\n  internalStatus: 15\n  status_code: OPERATION_CANCELLED\n  lifecycle (category): CANCELLED\n  code: 1\n\n16 ONBOARD_TIMEOUT:\n  internalStatus: 16\n  status_code: ONBOARD_TIMEOUT\n  lifecycle (category): ACTIVE\n  code: 2\n\n17 DROPOFF_TIMEOUT:\n  internalStatus: 17\n  status_code: DROPOFF_TIMEOUT\n  lifecycle (category): ACTIVE\n  code: 2\n\n88 PASSENGER_NO_SHOW:\n  internalStatus: 88\n  status_code: PASSENGER_NO_SHOW\n  lifecycle (category): CANCELLED\n  code: 1\n\n99 VEHICLE_NOT_FOUND:\n  internalStatus: 99\n  status_code: VEHICLE_NOT_FOUND\n  lifecycle (category): CANCELLED\n  code: 1\n\n100 CLEAN_BROKEN_TRIP:\n  internalStatus: 100\n  status_code: CLEAN_BROKEN_TRIP\n  lifecycle (category): CANCELLED\n  code: 1","\"Authorization\": \"Bearer <accessToken>\"","Request Param: passengerId (R) - Identify of passenger\nRequest Body:\n{\n  \"pageNumber\":0,\n  \"pageSize\": 20,\n  \"sortDirection\": \"ASC\",\n\t\"sortBy\": \"status\",\n\t\"filters\": {\n\t\t\"dropOffAddress\": \"bbb\",\n                \"pickUpAddress\": \"aaa\",\n\t\t\"createdAt\": {\n\t\t\t\"from\": \"2025-07-09T06:40:50.716+00:00\",\n\t\t\t\"to\": \"2025-07-09T06:40:51.716+00:00\"\n\t\t},\n                \"status\": \"C\"\n\t},\n\t\"globalSearch\": \"trip1\"\n}","N/A",{"$cut":{"chars":32767,"head":"{\n    \"status\": {\n        \"code\": 0,\n        \"message\": \"Success\"\n    },\n    \"data\": {\n        \"elements\": [\n            {\n                \"tripId\": \"143715b9-cf0e-47e7-8b1c-12d73dee1e08\",\n                \"rideId\": \"R-260203-QTWQBJ\",\n                \"vehicleId\": \"AV0004\",\n                \"tripTypeId\": \"1\",\n                \"tripStatus\": {\n                    \"code\": 1,\n                    \"category\": \"CANCELLED\",\n                    \"platformName\": \"MOMENTA\",\n                    \"platformStatus\": \"100\",\n                    \"internalStatus\": 100\n                },\n                \"totalDistance\": 27438.0,\n                \"estimatedTotalDistance\": null,\n                \"totalAmount\": 254.08,\n                \"discountAmount\": 254.08,\n                \"finalAmount\": 0.00,\n                \"currencyCode\": null,\n                \"estimatedDurationSeconds\": 1745,\n                \"actualDurationSeconds\": null,\n                \"ratingScore\": null,\n                \"feedback\": null,\n                \"internalOrderId\": \"99c8be76-f598-4801-a4fb-09e6e235359c\",\n                \"momentaOrderId\": null,\n                \"tripPoints\": [\n                    {\n                        \"address\": \"IKEA\",\n                        \"addressDetail\": \"52718 - 198 Ad Durar St - Yas Island - Yas Island Yas West - Abu Dhabi - United Arab Emirates\",\n                        \"latitude\": 24.4897,\n                        \"longitude\": 54.61275,\n                        \"sequence\": 1,\n                        \"pointInfoId\": null,\n                        \"stopTime\": null,\n                        \"isRequiredSafetyDriver\": false\n                    },\n                    {\n                        \"address\": \"TXAI Operation Center\",\n                        \"addressDetail\": \"FH8X+7C8 - Yas Island - YS3 06 - Abu Dhabi - United Arab Emirates\",\n                        \"latitude\": 24.49366,\n                        \"longitude\": 54.62864,\n                        \"sequence\": 2,\n                        \"pointInfoId\": null,\n                        \"stopTime\": null,\n                        \"isRequiredSafetyDriver\": false\n                    }\n                ],\n                \"scheduledAt\": null,\n                \"createdAt\": \"2026-02-03T08:08:48.192+00:00\",\n                \"modifiedAt\": null,\n                \"routes\": null,\n                \"actualDriverId\": \"38aa86e7-d6c2-4b11-bd4d-488b5bf75341\",\n                \"requiredDriverGender\": null,\n                \"passenger\": {\n                    \"passengerId\": \"00890205-ec9a-4c4c-be25-0dd8dde7191e\",\n                    \"phone\": null,\n                    \"accountName\": null,\n                    \"email\": null,\n                    \"address\": null,\n                    \"gender\": null,\n                    \"isActive\": null,\n                    \"createdStatus\": null,\n                    \"avatarUrl\": null,\n                    \"createdAt\": null,\n                    \"modifiedAt\": null,\n                    \"totalTrips\": null,\n                    \"averageTripRating\": null,\n                    \"totalOpenTickets\": null,\n                    \"verifiedPhone\": null,\n                    \"verifiedEmail\": null\n                },\n                \"voucherId\": null,\n                \"voucher\": null,\n                \"vehicle\": {\n                    \"vehicleType\": {\n                        \"vehicleTypeId\": null,\n                        \"vehicleTypeGroup\": null,\n                        \"vehicleTypeCode\": null,\n                        \"vehicleTypeName\": null,\n                        \"description\": null,\n                        \"seatCapacity\": null,\n                        \"imageUrl\": null,\n                        \"baseFare\": null,\n                        \"isDisable\": false,\n                        \"farePerDistance\": null,\n                        \"createdAt\": null,\n                        \"modifiedAt\": null,\n                        \"platform\": {\n                            \"platformId\": \"1\",\n                            \"name\": \"MOMENTA\",\n                            \"description\": \"MOMENTA PLATFORM\",\n                            \"linkUrl\": null,\n                     "}},"HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 2 => passenger id does not exist\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS (GET)\nTRIP_POINTS (GET)\nTRIP_RATINGS (GET)"]
[null,4,"/admin/getPassengerVouchers","POST","Get list voucher details of passenger by passenger Id. \nFor example endpoint: /getPassengerVouchers?passengerId=8fa5a058-de80-4aa6-864d-105bdafdb804\n\nThe search query is built using URL and request body  in a POST request. For example: \nRequestBody:\n{\n  \t\"pageNumber\":0,\n  \t\"pageSize\": 20,\n  \t\"sortDirection\": \"discountAmount\",\n\t\"sortBy\": \"status\",\n\t\"filters\": {}\n}\n\nHere is the defined list of allowed sortBy:\ndiscountValue, usageLimit, startedAt ,expiredAt, createdAt\n\nNote: the filers is empty but the object should be included in the request body. Take note that the current status for reponse body:\nA - Available\nI - Inactive\nU - Used\nE - Expired","\"Authorization\": \"Bearer <accessToken>\"","Request Param: passengerId (R) - Identify of passenger. Filert object must be included but empty because UI does not define advanced filter\nRequest Body:\n{\n  \"pageNumber\":0,\n  \"pageSize\": 3,\n  \"sortDirection\": \"ASC\",\n\t\"sortBy\": \"discountAmount\",\n\t\"filters\": {}\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"voucherId\": \"voucher-uuid-003\",\n\t\t\t\t\"voucherType\": \"R\",\n\t\t\t\t\"description\": \"Private 20% off, max 5 uses\",\n\t\t\t\t\"discountType\": \"P\",\n\t\t\t\t\"discountValue\": 20,\n\t\t\t\t\"currency\": null,\n\t\t\t\t\"limitType\": \"L\",\n\t\t\t\t\"usageLimit\": 1,\t\n\t\t\t\t\"startedAt\": \"2025-06-19T17:00:00.000+00:00\",\n\t\t\t\t\"expiredAt\": \"2028-07-20T16:59:59.000+00:00\",\n\t\t\t\t\"usagesNumber\": 0,\n\t\t\t\t\"currentStatus\": \"A\",\n\t\t\t\t\"lastAppliedAt\": \"2025-07-16T12:42:22.395+00:00\",\n\"tripId\": \"1233\",\n\"maximumDiscount\": 500\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"voucherId\": \"voucher-uuid-002\",\n\t\t\t\t\"voucherType\": \"R\",\n\t\t\t\t\"description\": \"Public voucher 500 AED off\",\n\t\t\t\t\"discountType\": \"P\",\n\t\t\t\t\"discountValue\": 20,\n\t\t\t\t\"currency\": null,\n\t\t\t\t\"limitType\": \"L\",\n\t\t\t\t\"usageLimit\": 1,\n\t\t\t\t\"startedAt\": \"2025-06-30T17:00:00.000+00:00\",\n\t\t\t\t\"expiredAt\": \"2024-07-31T16:59:59.000+00:00\",\n\t\t\t\t\"usagesNumber\": 1,\n\t\t\t\t\"currentStatus\": \"E\",\n\t\t\t\t\"lastAppliedAt\": \"2025-07-16T12:42:22.395+00:00\",\n\"tripId\": null,\n\"maximumDiscount\": 500\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"voucherId\": \"voucher-uuid-004\",\n\t\t\t\t\"voucherType\": \"R\",\n\t\t\t\t\"description\": \"Private 40% off, max 5 uses\",\n\t\t\t\t\"discountType\": \"P\",\n\t\t\t\t\"discountValue\": 40,\n\t\t\t\t\"currency\": null,\n\t\t\t\t\"limitType\": \"L\",\n\t\t\t\t\"usageLimit\": 1,\n\t\t\t\t\"startedAt\": \"2025-06-19T17:00:00.000+00:00\",\n\t\t\t\t\"expiredAt\": \"2028-07-20T16:59:59.000+00:00\",\n\t\t\t\t\"usagesNumber\": 1,\n\t\t\t\t\"currentStatus\": \"U\",\n\t\t\t\t\"lastAppliedAt\": \"2025-07-16T12:42:22.395+00:00\",\n\"tripId\": null,\n\"maximumDiscount\": 500\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 3,\n\t\t\"totalElements\": 8,\n\t\t\"totalPages\": 3,\n\t\t\"last\": false\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VOUCHER, PASSENGER_VOUCHER (GET)"]
[null,5,"/admin/updatePassengerProfile","PUT","Admin can update profile of passenger with Name and Gender","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"passengerId\" (R):\"b5c1f1e0-1111-4a1a-9a01-000000000019\",\n\t\"name\" (O):\"Name\",\n\t\"gender\" (O):\"M\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update passenger information successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 2 => Update passenger information failed\n- status.code: 5 => Name is empty\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PASSENGER_ACCOUNT (UPDATE)"]
[null,6,"/admin/unlock/passengers/{id}","PUT","Admin unlock passenger account","\"Authorization\": \"Bearer <accessToken>\"","Request path \"passengerId\" (R):\"b5c1f1e0-1111-4a1a\"","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 2 => Passenger account not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator"]

{"sheet":"API Driver Management","index":12,"n_rows":20,"n_cols":11,"rows_kept":20,"cut":false,"hidden":false,"merged":[]}
[null,"API Specification"]
[null,"Business Name","Driver Management"]
[null,"Description","APIs that used to Driver management (view list, view detail)"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-10-15"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-10-20"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"DRIVER MANAGEMENT"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/drivers/searchByNameOrEmail","POST","Admin, operator can search for driver by email or name","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"pageNumber\": 0,\n\t\"pageSize\": 2,\n\t\"sortDirection\": \"ASC\",\n\t\"sortBy\": \"createdAt\",\n\t\"filters\": {\n\t},\n\t\"globalSearch\":\"\" //search by email or name\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"adminId\": \"914c5df1-ba33-45e7-94b4-96a2b85a5377\",\n\t\t\"roles\": \"DRIVER\",\n\t\t\"name\": \"Tuan Kiet F\",\n\t\t\"email\": \"kietht912@fpt.com\",\n\t\t\"phone\": \"+840908878678\",\n\t\t\"gender\": \"F\",\n\t\t\"preferredLanguage\": \"ddDD\",\n\t\t\"isActive\": false,\n\t\t\"avatarUrl\": \"https://rhpfrontendendpointstd-fjapb2gjdxhbbbfk.a02.azurefd.net/rhp-passenger-dev/admin-avatars%2F20251103_065606_9124a518.jpg\",\n\t\t\"createdAt\": \"2025-09-26T09:45:18.184+00:00\",\n\t\t\"modifiedAt\": \"2025-11-03T06:56:06.696+00:00\",\n\t\t\"licenseNumber\": \"33\",\n\t\t\"licenseType\": \"133\",\n\t\t\"licenseExpiry\": \"2025-10-02T00:00:00.000+00:00\"\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 2,\n\t\t\"totalElements\": 1,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 2 => Driver Not Found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT, DRIVERS (GET)"]
[null,2,"/drivers/{id}","GET","Admin, operator, passenger can search for driver ID","\"Authorization\": \"Bearer <accessToken>\"","request path: driverId","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Get driver info successfully\"\n\t},\n\t\"data\": {\n\t\t\"adminId\": \"914c5df1-ba33-45e7-94b4-96a2b85a5377\",\n\t\t\"roles\": \"DRIVER\",\n\t\t\"name\": \"Tuan Kiet F\",\n\t\t\"email\": \"kietht912@fpt.com\",\n\t\t\"phone\": \"+840908878678\",\n\t\t\"gender\": \"F\",\n\t\t\"preferredLanguage\": \"ddDD\",\n\t\t\"isActive\": false,\n\t\t\"avatarUrl\": \"https://rhpfrontendendpointstd-fjapb2gjdxhbbbfk.a02.azurefd.net/rhp-passenger-dev/admin-avatars%2F20251103_065606_9124a518.jpg\",\n\t\t\"createdAt\": \"2025-09-26T09:45:18.184+00:00\",\n\t\t\"modifiedAt\": \"2025-11-03T06:56:06.696+00:00\",\n\t\t\"licenseNumber\": \"33\",\n\t\t\"licenseType\": \"133\",\n\t\t\"licenseExpiry\": \"2025-10-02T00:00:00.000+00:00\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 2 => Driver Not Found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT, DRIVERS (GET)"]
[null,3,"/drivers/search","POST","Admin, operator can search for driver .\n\n  sortable:\n    name: \n    createdAt: \n    email:\n    phone: \n    isActive: \n    gender:\n    licenseNumber: \n    licenseType:\n    licenseExpiry: \n  filters:\n    name: \n    createdAt: object\n    email:\n    phone: \n    isActive:\n    gender: this is array ('F\", \"M\")\n    licenseNumber: \n    licenseType: \n    licenseExpiry: object","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"pageNumber\": 0,\n\t\"pageSize\": 2,\n\t\"sortDirection\": \"DESC\",\n\t\"sortBy\": \"licenseExpiry\",\n\t\"filters\": {\n\t\t\"licenseExpiry\":{\n\t\t\t\"from\":\"2025-09-15T10:39:25.481+00:00\",\n\"to\":\"2026-09-15T10:39:25.481+00:00\"\n\t\t},\n\t\t\"gender\": [\"F\"]\n\t},\n\t\"globalSearch\":\"l\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"adminId\": \"914c5df1-ba33-45e7-94b4-96a2b85a5377\",\n\t\t\"roles\": \"DRIVER\",\n\t\t\"name\": \"Tuan Kiet F\",\n\t\t\"email\": \"kietht912@fpt.com\",\n\t\t\"phone\": \"+840908878678\",\n\t\t\"gender\": \"F\",\n\t\t\"preferredLanguage\": \"ddDD\",\n\t\t\"isActive\": false,\n\t\t\"avatarUrl\": \"https://rhpfrontendendpointstd-fjapb2gjdxhbbbfk.a02.azurefd.net/rhp-passenger-dev/admin-avatars%2F20251103_065606_9124a518.jpg\",\n\t\t\"createdAt\": \"2025-09-26T09:45:18.184+00:00\",\n\t\t\"modifiedAt\": \"2025-11-03T06:56:06.696+00:00\",\n\t\t\"licenseNumber\": \"33\",\n\t\t\"licenseType\": \"133\",\n\t\t\"licenseExpiry\": \"2025-10-02T00:00:00.000+00:00\"\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 2,\n\t\t\"totalElements\": 1,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT, DRIVERS (GET)"]
[null,4,"/drivers/{id}","PUT","Admin update driver","\"Authorization\": \"Bearer <accessToken>\"","name (R)=Tuan Kiet\ngender (R) =F (M)\nemail (R) =kietht912@fpt.com \nisActive (R) =false\npreferredLanguage (O) =en\nphone (O) =+840908878678\nlicenseNumber (O) =33\nlicenseType (O) =13333\nlicenseExpiry (O) =2025-10-02T07:31:20.777+00:00\nrole (R) =DRIVER\navatar (O)= file","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n-status.code: 2 => Please upload a valid image (PNG/JPG, max 2MB).\n-status.code: 3 => Driver Not Found\n-status.code: 4 => Role is not found\n-status.code: 5 => Failed to change role because driver is still on trip or on operation\n-status.code: 6 => Failed to deactivate driver because driver is still on trip or on operation\n-status.code: 7 => Driver update failed\n-status.code: 8 => Validation Error. error field:  [\n\t\t{\n\t\t\t\"field\": \"email\",\n\t\t\t\"error\": \"Email address already registered\"\n\t\t},\n\t\t{\n\t\t\t\"field\": \"phone\",\n\t\t\t\"error\": \"Phone number already registered\"\n\t\t}\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT, DRIVERS (UPDATE)"]
[null,5,"/drivers","POST","Admin create driver","\"Authorization\": \"Bearer <accessToken>\"","name (R)=Tuan Kiet\ngender (R) =F (M)\nemail (R) =kietht912@fpt.com \nisActive (R) =false\npreferredLanguage (O) =en\nphone (O) =+840908878678\nlicenseNumber (O) =33\nlicenseType (O) =13333\nlicenseExpiry (O) =2025-10-02T07:31:20.777+00:00\navatar (R) = file","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n-status.code: 2 => Please upload a valid image (PNG/JPG, max 2MB).\n-status.code: 3 => Validation Error. error field:  [\n\t\t{\n\t\t\t\"field\": \"email\",\n\t\t\t\"error\": \"Email address already registered\"\n\t\t},\n\t\t{\n\t\t\t\"field\": \"phone\",\n\t\t\t\"error\": \"Phone number already registered\"\n\t\t}\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_ACCOUNT, DRIVERS (INSERT)"]

{"sheet":"API Role Management","index":13,"n_rows":16,"n_cols":11,"rows_kept":16,"cut":false,"hidden":false,"merged":[]}
[null,"API Specification"]
[null,"Business Name","Role Management"]
[null,"Description","APIs that used to view List Role"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-11-03"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-11-03"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"ROLE MANAGEMENT"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/roles","GET","Admin can get roles","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"roleId\": \"1\",\n\t\t\t\"name\": \"ADMIN\",\n\t\t\t\"description\": \"ADMIN ROLES\",\n\t\t\t\"createdAt\": \"2025-10-31T07:46:36.482+00:00\",\n\t\t\t\"modifiedAt\": \"2025-10-31T07:46:36.482+00:00\"\n\t\t},\n\t\t{\n\t\t\t\"roleId\": \"2\",\n\t\t\t\"name\": \"OPERATOR\",\n\t\t\t\"description\": \"OPERATOR ROLES\",\n\t\t\t\"createdAt\": \"2025-10-31T07:46:36.482+00:00\",\n\t\t\t\"modifiedAt\": \"2025-10-31T07:46:36.482+00:00\"\n\t\t},\n\t\t{\n\t\t\t\"roleId\": \"3\",\n\t\t\t\"name\": \"DRIVER\",\n\t\t\t\"description\": \"DRIVER ROLES\",\n\t\t\t\"createdAt\": \"2025-10-31T07:46:36.482+00:00\",\n\t\t\t\"modifiedAt\": \"2025-10-31T07:46:36.482+00:00\"\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ROLES (GET)"]

{"sheet":"API Platform Management","index":14,"n_rows":20,"n_cols":11,"rows_kept":20,"cut":false,"hidden":false,"merged":[]}
[null,"API Specification"]
[null,"Business Name","Platform Management"]
[null,"Description","APIs that used to Platform management (view list, view detail)"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-10-15"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-10-20"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"PLATFORM MANAGEMENT"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/platforms","POST","Admin can create platform","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"name\" (R):\"Momenta Platform\",\n\t\"description\" (R):\"Momenta Platform Description\",\n\t\"isActive\" (R): false,\n\"linkURL\" (O): \"https://\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": \"df3ac489-05ee-4991-89eb-b18a2dc3fff3\"\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PLATFORMS (INSERT)"]
[null,2,"/admin/platforms/:id","PUT","Admin can update platform","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"name\" (R):\"Momenta Platform\",\n\t\"description\" (R):\"Momenta Platform Description\",\n\t\"isActive\" (R): false,\n\"linkURL\" (O): \"https://\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 2 => Platform is not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PLATFORMS (GET, UPDATE)"]
[null,3,"/admin/platforms/:id","DELETE","Admin can delete platform","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 2 => Platform is not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PLATFORMS (UPDATE)"]
[null,4,"/admin/platforms/:id","GET","Admin can get platform by id","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"platformId\": \"b9b590fc-117b-4e17-9486-53c0df6e7f8a\",\n\t\t\"name\": \"Momenta 2\",\n\t\t\"description\": \"Momenta 2\",\n\t\t\"linkURL\": null,\n\t\t\"isActive\": false,\n\t\t\"createdAt\": \"2025-10-15T14:18:26.292+00:00\",\n\t\t\"modifiedAt\": \"2025-10-15T14:18:26.292+00:00\",\n\t\t\"isDeleted\": false\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 2 => Platform is not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PLATFORMS (GET)"]
[null,5,"/admin/platforms/search","POST","Admin can search platforms. Sort by \"name\", \"description\", \"createdAt\", \"isActive\". Global search by name or description","\"Authorization\": \"Bearer <accessToken>\"","{\n    \"pageNumber\": 0,\n    \"pageSize\": 10,\n    \"sortBy\": \"description\",\n    \"sortDirection\": \"ASC\",\n    \"filters\": {\n        \"name\": \"Momenta\",\n        \"description\": \"Momenta\",\n        \"linkURL\": \"link\",\n        \"isActive\": true,\n        \"createdAt\": {\n\t\t\t\"from\": \"2025-07-09T06:40:50.716+00:00\",\n\t\t\t\"to\": \"2025-07-09T06:40:51.716+00:00\"\n\t\t}\n    },\n    \"globalSearch\": \"new\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"platformId\": \"b9b590fc-117b-4e17-9486-53c0df6e7f8a\",\n\t\t\"name\": \"Momenta\",\n\t\t\"description\": \"Momenta\",\n\t\t\"linkURL\": null,\n\t\t\"isActive\": false,\n\t\t\"createdAt\": \"2025-10-15T14:18:26.292+00:00\",\n\t\t\"modifiedAt\": \"2025-10-15T14:18:26.292+00:00\",\n\t\t\"isDeleted\": false\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid query params, error field: [{ \"field\" : \"createdAt\", \"error\": \"invalid date format\" }]\n- status.code: 2 => Platform is not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PLATFORMS (GET)"]

{"sheet":"API Dynamic Pricing","index":15,"n_rows":18,"n_cols":11,"rows_kept":18,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Dynamic pricing"]
[null,"Description","Apis view and update Dynamic pricing"]
[null,"Created User","NamLT12@fpt.com"]
[null,"Created Date","2025-08-06"]
[null,"Updated User","NamLT12@fpt.com"]
[null,"Updated Date","2025-09-08"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Dynamic Pricing"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/fare/getDetailFare/{vehicleTypeId}","GET","Api to get dynamic pricing information","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"vehicleTypeId\": \"1\",\n\t\t\"baseFare\": 17.0,\n\t\t\"farePerDistance\": 7.0,\n\t\t\"minimumFare\": 14,\n\t\t\"maximumFare\": 140,\n\t\t\"startTime\": \"09:00:00+07\",\n\t\t\"endTime\": \"12:00:00+07\",\n\t\t\"multipliers\": 1.00,\n\t\t\"ruleId\": \"1\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLE_TYPES (GET)\nSYSTEM_SETTINGS (GET)\nTIME_PRICE_RULES (GET)"]
[null,2,"/admin/fare/updateDetailFare","PUT","Api to update dynamic pricing","\"Authorization\": \"Bearer <accessToken>\"","Request param : ruleId (R)\n{\n  \"vehicleTypeId\": \"1\",\n  \"baseFare\": 17,\n  \"farePerDistance\": 7,\n  \"minimumFare\": 14,\n  \"maximumFare\": 140,\n  \"multipliers\": 14.9,\n  \"startTime\": \"08:00:00+07:00\",\n  \"endTime\": \"10:00:00+07:00\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update detail fare successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n-status.code: 2 =>Vehicle Type ID is required if baseFare or farePerDistance is set\n-status.code:3=> Update detail fare failed\n-status.code:4 =>startTime must be smaller than endTime\n-status.code:5=> startTime or endTime not valid\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLE_TYPES (UPDATE)\nSYSTEM_SETTINGS (UPDATE)\nTIME_PRICE_RULES (UPDATE)"]

{"sheet":"API Promotion Management","index":16,"n_rows":21,"n_cols":11,"rows_kept":21,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Promotion Management"]
[null,"Description","Apis Promotion  Mangement that view  all promotion s"]
[null,"Created User","NamLT12@fpt.com"]
[null,"Created Date","2025-08-12"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-10-20"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Ride Management"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/promotion/{promotionId}","GET","Api to get detail promotion by ID","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"promotionId\": \"2fca890a-52b6-480f-8ebb-7a8589c20629\",\n\t\t\"content\": \"Discount 20%\",\n\t\t\"imageUrl\": null,\n\t\t\"status\": true,\n\t\t\"startedAt\": \"2025-08-11T10:04:24.314+00:00\",\n\t\t\"expiredAt\": \"2025-08-12T10:04:24.314+00:00\",\n\t\t\"createdAt\": \"2025-08-11T19:06:27.302+00:00\",\n\t\t\"modifiedAt\": \"2025-08-11T19:06:27.302+00:00\",\n\"title\":\"oke\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Promotion not found\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PROMOTIONS(GET)"]
[null,2,"/admin/promotion/update","PUT","Api to update promotion","\"Authorization\": \"Bearer <accessToken>\"","image (R): abc.png\ndata (R):{\"promotionId\":\"2fca890a-52b6-480f-8ebb-7a8589c20629\",  \"content\": \"Discount 21%\",  \"status\": true,  \"startedAt\": \"2025-08-13T10:04:24.314+00:00\", \"expiredAt\": \"2025-08-12T10:04:24.314+00:00\", \"title\": \"oke\"}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update promotion successfully\"\n\t},\n\t\"data\": 1\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => Update promotion failed\n-status.code: 2 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PROMOTIONS(UPDATE)"]
[null,3,"/admin/promotion/search","POST","Api to search issue tickets\nGlobal search:content\nSort By:\n    status\n    content\n    startedAt\n    expiredAt\n    createdAt","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"globalSearch\":\"\",\n  \"pageNumber\": 0,\n  \"pageSize\": 10,\n\t\"sortBy\":\"\",\n  \"sortDirection\": \"DESC\",\n  \"filters\": {\n  }\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"promotionId\": \"89d7291d-b20b-42a7-b873-89286ebc5048\",\n\t\t\t\t\"content\": \"Discount 25%\",\n\t\t\t\t\"imageUrl\": null,\n\t\t\t\t\"status\": true,\n\t\t\t\t\"startedAt\": \"2025-08-16T10:04:24.314+00:00\",\n\t\t\t\t\"expiredAt\": \"2025-08-18T10:04:24.314+00:00\",\n\t\t\t\t\"createdAt\": \"2025-08-11T19:22:22.585+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-11T19:23:03.168+00:00\",\n\"title\": \"oke\"\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 1,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PROMOTIONS(GET)"]
[null,4,"/admin/promotion/create","POST","Api to create promotion","\"Authorization\": \"Bearer <accessToken>\"","image (O): abc.png\ndata (R):{  \"content\": \"Discount 25%\",  \"status\": true,  \"startedAt\": \"2025-08-11T10:04:24.314+00:00\",  \"expiredAt\": \"2025-08-12T10:04:24.314+00:00\", \"title\": \"oke\"}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Create promotion successfully\"\n\t},\n\t\"data\": \"439a42c2-b88f-4bf9-9f99-e9b1f412fd92\"\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => Create promotion failed\n-status.code: 2 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PROMOTIONS(INSERT)"]
[null,5,"/admin/promotion/{promotionId}","DELETE","Api to delete promotion","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete promotion successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 =>Delete promotion failed\n-status.code: 2 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","PROMOTIONS(UPDATE)"]

{"sheet":"API Issue Management","index":17,"n_rows":21,"n_cols":11,"rows_kept":21,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Issue Management"]
[null,"Description","Apis Issue Mangement that view issue ticket from passenger"]
[null,"Created User","NamLT12@fpt.com"]
[null,"Created Date","2025-08-06"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-10-20"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Issue Management"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/issue/ticket/getIssueTicket/{id}","GET","Api to get detail issue ticket by ID","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Get detail issue ticket successfully\"\n\t},\n\t\"data\": {\n\t\t\"id\": \"c152e5d7-535e-47ad-bb4c-8a35345fda5a\",\n\t\t\"ticketId\": \"IIJZ44H05J\",\n\t\t\"vehicle\": {\n\t\t\t\"vehicleId\": \"AV0002\",\n\t\t\t\"modelId\": null,\n\t\t\t\"licensePlate\": \"UAE\",\n\t\t\t\"vin\": \"ad\",\n\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\"cameraLink\": null,\n\t\t\t\"createdAt\": \"2025-08-02T16:15:00.000+00:00\",\n\t\t\t\"modifiedAt\": \"2025-08-02T16:15:00.000+00:00\",\n\t\t\t\"depotId\": null,\n\t\t\t\"provisioningStatus\": \"C\",\n\t\t\t\"vehicleWorkNo\": \"1\",\n\t\t\t\"vehicleTestNo\": \"1\",\n\t\t\t\"cityCode\": \"OSA\",\n\t\t\t\"vehicleBrand\": \"Apollo\",\n\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\"vehicleColor\": \"Black\",\n\t\t\t\"engineId\": \"ENG1002\",\n\t\t\t\"approvedPassengerNumber\": 4,\n\t\t\t\"registrationDate\": \"2025-07-26\",\n\t\t\t\"vehicleFuelType\": \"Electric\",\n\t\t\t\"tciCompany\": \"OsakaInsure\",\n\t\t\t\"tciStartDate\": \"2025-08-02\",\n\t\t\t\"tciEndDate\": \"2026-08-02\",\n\t\t\t\"vciCompany\": \"VehicleCare\",\n\t\t\t\"vciStartDate\": \"2025-08-02\",\n\t\t\t\"vciEndDate\": \"2026-08-02\",\n\t\t\t\"fleetId\": null,\n\t\t\t\"driverId\": null\n\t\t},\n\t\t\"rideId\": \"R11\",\n\t\t\"passenger\": {\n\t\t\t\"passengerId\": \"46a5c5b1-8107-4ccd-a652-931956418ec2\",\n\t\t\t\"phone\": \"32\",\n\t\t\t\"accountName\": \"KIET\",\n\t\t\t\"email\": \"abc@gmailc.om\",\n\t\t\t\"address\": null,\n\t\t\t\"gender\": \"M\",\n\t\t\t\"isActive\": true,\n\t\t\t\"createdStatus\": \"C\",\n\t\t\t\"avatarUrl\": \"https://rhpfrontendendpointstd-fjapb2gjdxhbbbfk.a02.azurefd.net/rhp-passenger-dev/promotion-images%2F20250814_093052_422283c9.png\",\n\t\t\t\"otpRequests\": null,\n\t\t\t\"totalLoginCount\": null,\n\t\t\t\"createdAt\": \"2025-08-21T10:01:10.834+00:00\",\n\t\t\t\"modifiedAt\": \"2025-08-21T10:01:10.834+00:00\"\n\t\t},\n\t\t\"tripId\": \"a174aa9e-3f85-42fd-bc21-370e9a6810ac\",\n\t\t\"issueDetails\": \"RCDVVF120X\",\n\t\t\"createdAt\": \"2025-08-21T09:49:43.821+00:00\",\n\t\t\"assignedOperators\": [],\n\t\t\"createdByRole\": \"A\",\n\t\t\"createdByAdmin\": {\n\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n\t\t\t\"roles\": \"ADMIN\",\n\t\t\t\"name\": \"admin\",\n\t\t\t\"email\": \"admin@fpt.com\",\n\t\t\t\"phone\": \"12\",\n\t\t\t\"preferredLanguage\": \"en\",\n\t\t\t\"isActive\": true,\n\t\t\t\"modifiedAt\": \"2025-06-27T07:59:48.576+00:00\"\n\t\t},\n\t\t\"updatedByAdmin\": {},\n\t\t\"ticketStatus\": \"Open\",\n\t\t\"ticketType\": \"G\",\n\t\t\"operatorNote\": \"sdfsdf\",\n\t\t\"imageUrls\": [],\n\t\t\"attachmentUrls\": []\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n-status.code:2 => Ticket has been deleted or not found\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ISSUE_TICKETS (GET)\nISSUE_OPERATOR_ASSIGNMENTS(GET)\nISSUE_TICKET_HISTORY(GET)"]
[null,2,"/admin/issue/ticket/update","PUT","Api to update issue ticket","\"Authorization\": \"Bearer <accessToken>\"","images (O): abc.png\ndata (R):{    \"id\": \"6de23a4b-86f2-46cb-8d89-4ad924854331\",    \"assignedOperatorId\": [\"1\"],    \"status\": \"INPROGRESS\",    \"issueDetail\": \"1234\"  }","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update issue ticket successfully\"\n\t},\n\t\"data\": 1\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => Update issue failed\n-status.code: 2 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n-status.code: 3=> Id is incorrect\n-status.code: 4 => The selected user must have the Operator role.\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ISSUE_TICKETS(UPDATE)\nISSUE_TICKET_HISTORY(INSERT)\nISSUE_OPERATOR_ASSIGNMENTS(INSERT/DELETE)"]
[null,3,"/admin/issue/ticket/searchIssueTickets","POST","Api to search issue tickets\nGlobal search:\ntripId, licensePlate, passengerAccount, ticketId\n\n  sort:\n    +status: status ticket\n    +ticketId: \n    +tripId: sort by RideId\n    +licensePlate: sort by license plate\n    +description: sort by description\n    +passengerName: sort by passenger name\n    +createdAt: created_at\n    +createdBy: sort by role (role)\n    +createdByOperator: sort by operator's name \n\n  filter:\n    +tripId: search for ride_id\n    +ticketId : search for ticket_id\n    +passengerName: search for passenger name\n    +licensePlate : search for license plate\n    +ticketType: search for ticket type \n    +operatorName: search for operator's name (who created this ticket)\n    +statusList: search for status of ticket\n\n\t-> for ticketType F -> possible values \"Open\", \"Inprogress\", \"Cancelled\", \"Closed\"\n\t-> for ticketType G, O -> possible values \"Awaiting Verification\", \"Item Confirmed\", \"Item Retrieved\", \"Returned to Passenger\", \"Cancelled\"\n\n    +roleList: search for role created for this ticket\n    +assignedOperators: search for list of assigned operators\n    +createdAt: created_at","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"globalSearch\": \"\",\n\t\"pageNumber\": 0,\n\t\"pageSize\": 10,\n\t\"sortDirection\": \"ASC\",\n\t\"sortBy\": \"createdByOperator\",\n\t\"filters\": {\n\t\t\"assignedOperators\":[\"1a260e38-79c9-4833-9333-ee9f1e07742f\"],\n\t\t\"statusList\": [\"Closed\", \"Open\"],\n\t\t\"roleList\":[\"O\", \"P\", \"A\"],\n\t\t\"passengerName\": \"t\",\n\t\t\"tripId\": \"R\",\n\t\t\"ticketType\": [\"G\", \"F\", \"O\"], -> forgotten item issue page [\"F\"], -> issue ticket page [\"G\", \"O\"]\n\t\t\"createdAt\": {\n\t\t\t\"from\": \"2024-08-20T04:03:15.764+00:00\",\n\t\t\t\"to\": \"2028-09-20T04:03:15.764+00:00\"\n\t\t}\n\t},\n\t\"globalSearch\": \"R\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"id\": \"c152e5d7-535e-47ad-bb4c-8a35345fda5a\",\n\t\t\t\t\"ticketId\": \"IIJZ44H05J\",\n\t\t\t\t\"vehicle\": {\n\t\t\t\t\t\"vehicleId\": \"AV0002\",\n\t\t\t\t\t\"modelId\": null,\n\t\t\t\t\t\"licensePlate\": \"UAE\",\n\t\t\t\t\t\"vin\": \"ad\",\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"cameraLink\": null,\n\t\t\t\t\t\"createdAt\": \"2025-08-02T16:15:00.000+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-02T16:15:00.000+00:00\",\n\t\t\t\t\t\"depotId\": null,\n\t\t\t\t\t\"provisioningStatus\": \"C\",\n\t\t\t\t\t\"vehicleWorkNo\": \"1\",\n\t\t\t\t\t\"vehicleTestNo\": \"1\",\n\t\t\t\t\t\"cityCode\": \"OSA\",\n\t\t\t\t\t\"vehicleBrand\": \"Apollo\",\n\t\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\t\"vehicleColor\": \"Black\",\n\t\t\t\t\t\"engineId\": \"ENG1002\",\n\t\t\t\t\t\"approvedPassengerNumber\": 4,\n\t\t\t\t\t\"registrationDate\": \"2025-07-26\",\n\t\t\t\t\t\"vehicleFuelType\": \"Electric\",\n\t\t\t\t\t\"tciCompany\": \"OsakaInsure\",\n\t\t\t\t\t\"tciStartDate\": \"2025-08-02\",\n\t\t\t\t\t\"tciEndDate\": \"2026-08-02\",\n\t\t\t\t\t\"vciCompany\": \"VehicleCare\",\n\t\t\t\t\t\"vciStartDate\": \"2025-08-02\",\n\t\t\t\t\t\"vciEndDate\": \"2026-08-02\",\n\t\t\t\t\t\"fleetId\": null,\n\t\t\t\t\t\"driverId\": null\n\t\t\t\t},\n\t\t\t\t\"rideId\": \"R11\",\n\t\t\t\t\"passenger\": {\n\t\t\t\t\t\"passengerId\": \"46a5c5b1-8107-4ccd-a652-931956418ec2\",\n\t\t\t\t\t\"phone\": \"32\",\n\t\t\t\t\t\"accountName\": \"KIET\",\n\t\t\t\t\t\"email\": \"abc@gmailc.om\",\n\t\t\t\t\t\"address\": null,\n\t\t\t\t\t\"gender\": \"M\",\n\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\"createdStatus\": \"C\",\n\t\t\t\t\t\"avatarUrl\": \"https://rhpfrontendendpointstd-fjapb2gjdxhbbbfk.a02.azurefd.net/rhp-passenger-dev/promotion-images%2F20250814_093052_422283c9.png\",\n\t\t\t\t\t\"otpRequests\": null,\n\t\t\t\t\t\"totalLoginCount\": null,\n\t\t\t\t\t\"createdAt\": \"2025-08-21T10:01:10.834+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-21T10:01:10.834+00:00\"\n\t\t\t\t},\n\t\t\t\t\"tripId\": \"a174aa9e-3f85-42fd-bc21-370e9a6810ac\",\n\t\t\t\t\"issueDetails\": \"RCDVVF120X\",\n\t\t\t\t\"createdAt\": \"2025-08-21T09:49:43.821+00:00\",\n\t\t\t\t\"assignedOperators\": [],\n\t\t\t\t\"createdByRole\": \"A\",\n\t\t\t\t\"createdByAdmin\": {\n\t\t\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n\t\t\t\t\t\"roles\": \"ADMIN\",\n\t\t\t\t\t\"name\": \"admin\",\n\t\t\t\t\t\"email\": \"admin@fpt.com\",\n\t\t\t\t\t\"phone\": \"12\",\n\t\t\t\t\t\"preferredLanguage\": \"en\",\n\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\"modifiedAt\": \"2025-06-27T07:59:48.576+00:00\"\n\t\t\t\t},\n\t\t\t\t\"updatedByAdmin\": {},\n\t\t\t\t\"ticketStatus\": \"Open\",\n\t\t\t\t\"ticketType\": \"G\",\n\t\t\t\t\"operatorNote\": \"sdfsdf\",\n\t\t\t\t\"imageUrls\": [],\n\t\t\t\t\"attachmentUrls\": []\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"2\",\n\t\t\t\t\"ticketId\": \"1\",\n\t\t\t\t\"vehicle\": {\n\t\t\t\t\t\"vehicleId\": \"1\",\n\t\t\t\t\t\"modelId\": null,\n\t\t\t\t\t\"licensePlate\": \"LICENSE\",\n\t\t\t\t\t\"vin\": \"123123123\",\n\t\t\t\t\t\"vehicleTypeId\": null,\n\t\t\t\t\t\"cameraLink\": null,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:41:29.053+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-12T02:41:29.053+00:00\",\n\t\t\t\t\t\"depotId\": null,\n\t\t\t\t\t\"provisioningStatus\": \"C\",\n\t\t\t\t\t\"vehicleWorkNo\": \"1\",\n\t\t\t\t\t\"vehicleTestNo\": \"1\",\n\t\t\t\t\t\"cityCode\": null,\n\t\t\t\t\t\"vehicleBrand\": null,\n\t\t\t\t\t\"vehicleModel\": null,\n\t\t\t\t\t\"vehicleColor\": \"Fe\",\n\t\t\t\t\t\"engineId\": null,\n\t\t\t\t\t\"approvedPassengerNumber\": null,\n\t\t\t\t\t\"registrationDate\": null,\n\t\t\t\t\t\"vehicleFuelType\": null,\n\t\t\t\t\t\"tciCompany\": null,\n\t\t\t\t\t\"tciStartDate\": null,\n\t\t\t\t\t\"tciEndDate\": null,\n\t\t\t\t\t\"vciCompany\": null,\n\t\t\t\t\t\"vciStartDate\": null,\n\t\t\t\t\t\"vciEndDate\": null,\n\t\t\t\t\t\"fleetId\": null,\n\t\t\t\t\t\"driverId\": null\n\t\t\t\t},\n\t\t\t\t\"rideId\": \"R11\",\n\t\t\t\t\"passenger\": {\n\t\t\t\t\t\"passengerId\": \"1\",\n\t\t\t\t\t\"phone\": \"+84908878675\",\n\t\t\t\t\t\"accountName\": \"Kiet\",\n\t\t\t\t\t\"email\": \"kietht9@gmail.com\",\n\t\t\t\t\t\"address\": null,\n\t\t\t\t\t\"gender\": \"M\",\n\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\"createdStatus\": \"C\",\n\t\t\t\t\t\"avatarUrl\": \"https://rhpfrontendendpointstd-fjapb2gjdxhbbbfk.a02.azurefd.net/rhp-passenger-dev/promotion-images%2F20250814_093052_422283c9.png\",\n\t\t\t\t\t\"otpRequests\": null,\n\t\t\t\t\t\"totalLoginCount\": null,\n\t\t\t\t\t\"createdAt\": \"2025-08-20T03:35:34.232+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-20T03:35:34.232+00:00\"\n\t\t\t\t},\n\t\t\t\t\"tripId\": \"a174aa9e-3f85-42fd-bc21-370e9a6810ac\",\n\t\t\t\t\"issueDetails\": \"asdfasf\",\n\t\t\t\t\"createdAt\": \"2025-08-20T04:03:15.764+00:00\",\n\t\t\t\t\"assignedOperators\": [],\n\t\t\t\t\"createdByRole\": \"P\",\n\t\t\t\t\"createdByAdmin\": {\n\t\t\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n\t\t\t\t\t\"roles\": \"ADMIN\",\n\t\t\t\t\t\"name\": \"admin\",\n\t\t\t\t\t\"email\": \"admin@fpt.com\",\n\t\t\t\t\t\"phone\": \"12\",\n\t\t\t\t\t\"preferredLanguage\": \"en\",\n\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\"modifiedAt\": \"2025-06-27T07:59:48.576+00:00\"\n\t\t\t\t},\n\t\t\t\t\"updatedByAdmin\": {},\n\t\t\t\t\"ticketStatus\": \"InProgress\",\n\t\t\t\t\"ticketType\": \"G\",\n\t\t\t\t\"operatorNote\": \"sfsdf\",\n\t\t\t\t\"imageUrls\": [],\n\t\t\t\t\"attachmentUrls\": []\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 2,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ISSUE_TICKETS (GET)\nISSUE_OPERATOR_ASSIGNMENTS(GET)\nISSUE_TICKET_HISTORY(GET)\nVEHICLES (GET)\nTRIPS (GET)\nPASSENGER_ACCOUNT (GET)\nADMIN_ACCOUNT (GET)"]
[null,4,"/issue/ticket/create","POST","Api to create issue ticket","\"Authorization\": \"Bearer <accessToken>\"","images (O): abc.png\ndata (R):{\n  \"tripId\": \"c7d44154-432f-41f2-9c56-89346d91493d\",\n  \"passengerId\": \"c7d44154-432f-41f2-9c56-89346d91493d\",\n  \"vin\": \"M12399912312132\",\n  \"issueDetail\": \"Can unlock door\",\n  \"createdBy\": \"O\",\n  \"status\": \"In progress\",\n  \"assignedOperatorId\": [\"123123344\"],\n  \"ticketType\": \"G\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Create issue ticket successfully\"\n\t},\n\t\"data\": \"IRTROU4I9P\"\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => Create issue failed\n-status.code: 2 => Vin not found\n-status.code: 3=> Invalid JSON format for data\n-status.code: 4 => The selected user must have the Operator role.\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ISSUE_TICKETS(INSERT)\nISSUE_TICKET_HISTORY(INSERT)\nISSUE_OPERATOR_ASSIGNMENTS(INSERT)"]
[null,5,"/issue/ticket/deleteIssueTicket/{ticketId}","DELETE","Api to delete issue ticket","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete issue successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 =>Delete issue failed\n-status.code: 2 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ISSUE_TICKETS(UPDATE)\nISSUE_TICKET_HISTORY(INSERT)"]

{"sheet":"API Maintenance Management","index":18,"n_rows":21,"n_cols":11,"rows_kept":21,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Maintenance Management"]
[null,"Description","Apis Maintenance Mangement that view maintenance ticket"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-08-21"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-10-20"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Maintenance Management"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/maintenance/ticket/search","POST","Api to search for maintenance tickets","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"pageNumber\": 0,\n\t\"pageSize\": 10,\n\t\"sortBy\": \"createdByOperator\",  //ticketId, status, licensePlate, createdByOperator, createdAt\n\t\"sortDirection\": \"DESC\",\n\t\"filters\": {\n\t\t\"ticketId\" : \"M\",\n\t\t\"assignedOperators\": [\"1a260e38-79c9-4833-9333-ee9f1e07742e\"],\n\t\t\"operatorName\": \"admin12\",\n\"statusList\":[\"F\", \"C\"]  ,\n\t\t\"createdAt\" : {\n\t\t\t\"from\": \"2025-08-20T17:08:55.507+00:00\",\n\t\t\t\"to\": \"2028-08-20T17:08:55.507+00:00\"\n\t\t}, \"licensePlate\" : \"JP-1002\"\n\t},\n\t\"globalSearch\": \"MT2\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"id\": \"ab5b87d6-b64b-4390-b36e-33a20351c298\",\n\t\t\t\t\"ticketId\": \"MP776HF6ZB\",\n\t\t\t\t\"vehicle\": {\n\t\t\t\t\t\"vehicleId\": \"1\",\n\t\t\t\t\t\"modelId\": null,\n\t\t\t\t\t\"licensePlate\": \"LICENSE\",\n\t\t\t\t\t\"vin\": \"123123123\",\n\t\t\t\t\t\"vehicleTypeId\": null,\n\t\t\t\t\t\"cameraLink\": null,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:41:29.053+00:00\",\n\t\t\t\t\t\"modifiedAt\": null,\n\t\t\t\t\t\"depotId\": null,\n\t\t\t\t\t\"provisioningStatus\": \"C\",\n\t\t\t\t\t\"vehicleWorkNo\": \"1\",\n\t\t\t\t\t\"vehicleTestNo\": \"1\",\n\t\t\t\t\t\"cityCode\": null,\n\t\t\t\t\t\"vehicleBrand\": null,\n\t\t\t\t\t\"vehicleModel\": null,\n\t\t\t\t\t\"vehicleColor\": \"Fe\",\n\t\t\t\t\t\"engineId\": null,\n\t\t\t\t\t\"approvedPassengerNumber\": null,\n\t\t\t\t\t\"registrationDate\": null,\n\t\t\t\t\t\"vehicleFuelType\": null,\n\t\t\t\t\t\"tciCompany\": null,\n\t\t\t\t\t\"tciStartDate\": null,\n\t\t\t\t\t\"tciEndDate\": null,\n\t\t\t\t\t\"vciCompany\": null,\n\t\t\t\t\t\"vciStartDate\": null,\n\t\t\t\t\t\"vciEndDate\": null,\n\t\t\t\t\t\"fleetId\": null\n\t\t\t\t},\n\t\t\t\t\"issueDetail\": \"Engine malfunction detected, requires maintenance.\",\n\t\t\t\t\"status\": \"I\",\n\t\t\t\t\"depot\": {\n\t\t\t\t\t\"depotId\": \"1\",\n\t\t\t\t\t\"name\": \"Depot 1 \",\n\t\t\t\t\t\"latitude\": null,\n\t\t\t\t\t\"longitude\": null,\n\t\t\t\t\t\"createdAt\": null,\n\t\t\t\t\t\"modifiedAt\": null\n\t\t\t\t},\n\t\t\t\t\"createdAt\": \"2025-08-22T01:39:28.495+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-22T01:39:28.495+00:00\",\n\t\t\t\t\"isDeleted\": null,\n\t\t\t\t\"createdByOperator\": {\n\t\t\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n\t\t\t\t\t\"roles\": \"ADMIN\",\n\t\t\t\t\t\"name\": \"admin\",\n\t\t\t\t\t\"email\": \"admin@fpt.com\",\n\t\t\t\t\t\"phoneNumber\": \"12\",\n\t\t\t\t\t\"preferredLanguage\": \"en\",\n\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\"createdAt\": \"2025-06-27T07:59:48.576+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-06-27T07:59:48.576+00:00\"\n\t\t\t\t},\n\t\t\t\t\"assignedOperators\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742e\",\n\t\t\t\t\t\t\"roles\": \"OPERATOR\",\n\t\t\t\t\t\t\"name\": \"operator\",\n\t\t\t\t\t\t\"email\": \"kietht9@fpt.com\",\n\t\t\t\t\t\t\"phoneNumber\": \"12\",\n\t\t\t\t\t\t\"preferredLanguage\": \"en\",\n\t\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\t\"createdAt\": \"2025-08-18T07:47:34.057+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-08-18T07:47:34.057+00:00\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"7113ab7a-e977-4248-83e5-09e61e84c3d5\",\n\t\t\t\t\"ticketId\": \"MSOFR2K9G5\",\n\t\t\t\t\"vehicle\": {\n\t\t\t\t\t\"vehicleId\": \"1\",\n\t\t\t\t\t\"modelId\": null,\n\t\t\t\t\t\"licensePlate\": \"LICENSE\",\n\t\t\t\t\t\"vin\": \"123123123\",\n\t\t\t\t\t\"vehicleTypeId\": null,\n\t\t\t\t\t\"cameraLink\": null,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:41:29.053+00:00\",\n\t\t\t\t\t\"modifiedAt\": null,\n\t\t\t\t\t\"depotId\": null,\n\t\t\t\t\t\"provisioningStatus\": \"C\",\n\t\t\t\t\t\"vehicleWorkNo\": \"1\",\n\t\t\t\t\t\"vehicleTestNo\": \"1\",\n\t\t\t\t\t\"cityCode\": null,\n\t\t\t\t\t\"vehicleBrand\": null,\n\t\t\t\t\t\"vehicleModel\": null,\n\t\t\t\t\t\"vehicleColor\": \"Fe\",\n\t\t\t\t\t\"engineId\": null,\n\t\t\t\t\t\"approvedPassengerNumber\": null,\n\t\t\t\t\t\"registrationDate\": null,\n\t\t\t\t\t\"vehicleFuelType\": null,\n\t\t\t\t\t\"tciCompany\": null,\n\t\t\t\t\t\"tciStartDate\": null,\n\t\t\t\t\t\"tciEndDate\": null,\n\t\t\t\t\t\"vciCompany\": null,\n\t\t\t\t\t\"vciStartDate\": null,\n\t\t\t\t\t\"vciEndDate\": null,\n\t\t\t\t\t\"fleetId\": null\n\t\t\t\t},\n\t\t\t\t\"issueDetail\": \"Brake system requires inspection.\",\n\t\t\t\t\"status\": \"C\",\n\t\t\t\t\"depot\": {\n\t\t\t\t\t\"depotId\": \"1\",\n\t\t\t\t\t\"name\": \"Depot 1 \",\n\t\t\t\t\t\"latitude\": null,\n\t\t\t\t\t\"longitude\": null,\n\t\t\t\t\t\"createdAt\": null,\n\t\t\t\t\t\"modifiedAt\": null\n\t\t\t\t},\n\t\t\t\t\"createdAt\": \"2025-08-22T01:35:39.239+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-22T01:35:39.239+00:00\",\n\t\t\t\t\"isDeleted\": null,\n\t\t\t\t\"createdByOperator\": {\n\t\t\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n\t\t\t\t\t\"roles\": \"ADMIN\",\n\t\t\t\t\t\"name\": \"admin\",\n\t\t\t\t\t\"email\": \"admin@fpt.com\",\n\t\t\t\t\t\"phoneNumber\": \"12\",\n\t\t\t\t\t\"preferredLanguage\": \"en\",\n\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\"createdAt\": \"2025-06-27T07:59:48.576+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-06-27T07:59:48.576+00:00\"\n\t\t\t\t},\n\t\t\t\t\"assignedOperators\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e077423\",\n\t\t\t\t\t\t\"roles\": \"OPERATOR\",\n\t\t\t\t\t\t\"name\": \"operator\",\n\t\t\t\t\t\t\"email\": \"kietht91@fpt.com\",\n\t\t\t\t\t\t\"phoneNumber\": \"12\",\n\t\t\t\t\t\t\"preferredLanguage\": \"en\",\n\t\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\t\"createdAt\": \"2025-08-19T08:05:30.895+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-08-19T08:05:30.895+00:00\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"3\",\n\t\t\t\t\"ticketId\": \"MT3\",\n\t\t\t\t\"vehicle\": {\n\t\t\t\t\t\"vehicleId\": \"2\",\n\t\t\t\t\t\"modelId\": null,\n\t\t\t\t\t\"licensePlate\": \"JP-1001\",\n\t\t\t\t\t\"vin\": \"VIN0001ABC\",\n\t\t\t\t\t\"vehicleTypeId\": null,\n\t\t\t\t\t\"cameraLink\": null,\n\t\t\t\t\t\"createdAt\": \"2025-08-01T15:10:00.000+00:00\",\n\t\t\t\t\t\"modifiedAt\": null,\n\t\t\t\t\t\"depotId\": null,\n\t\t\t\t\t\"provisioningStatus\": \"C\",\n\t\t\t\t\t\"vehicleWorkNo\": \"1\",\n\t\t\t\t\t\"vehicleTestNo\": \"1\",\n\t\t\t\t\t\"cityCode\": \"TKY\",\n\t\t\t\t\t\"vehicleBrand\": \"Apollo\",\n\t\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\t\"vehicleColor\": \"White\",\n\t\t\t\t\t\"engineId\": null,\n\t\t\t\t\t\"approvedPassengerNumber\": 4,\n\t\t\t\t\t\"registrationDate\": null,\n\t\t\t\t\t\"vehicleFuelType\": null,\n\t\t\t\t\t\"tciCompany\": \"TokioInsure\",\n\t\t\t\t\t\"tciStartDate\": null,\n\t\t\t\t\t\"tciEndDate\": null,\n\t\t\t\t\t\"vciCompany\": \"VehicleCare\",\n\t\t\t\t\t\"vciStartDate\": null,\n\t\t\t\t\t\"vciEndDate\": null,\n\t\t\t\t\t\"fleetId\": null\n\t\t\t\t},\n\t\t\t\t\"issueDetail\": \"Maintenance Detail\",\n\t\t\t\t\"status\": \"I\",\n\t\t\t\t\"depot\": {\n\t\t\t\t\t\"depotId\": \"1\",\n\t\t\t\t\t\"name\": \"Depot 1 \",\n\t\t\t\t\t\"latitude\": null,\n\t\t\t\t\t\"longitude\": null,\n\t\t\t\t\t\"createdAt\": null,\n\t\t\t\t\t\"modifiedAt\": null\n\t\t\t\t},\n\t\t\t\t\"createdAt\": \"2025-08-21T02:16:07.556+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-21T02:16:07.556+00:00\",\n\t\t\t\t\"isDeleted\": null,\n\t\t\t\t\"createdByOperator\": null,\n\t\t\t\t\"assignedOperators\": []\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 3,\n\t\t\"totalElements\": 4,\n\t\t\"totalPages\": 2,\n\t\t\"last\": false\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","MAINTENANCE_TICKETS, VEHICLES, DEPOT, ADMIN_ACCOUNT,\nMAINTENANCE_OPERATOR_ASSIGNMENTS (GET)"]
[null,2,"/admin/maintenance/ticket/create","POST","Api to create maintenance ticket","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"vehicleId\": \"1\",\n\t\"depotId\": \"1\",\n\t\"issueDetail\": \"Engine malfunction detected, requires maintenance.\",\n\t\"status\": \"O\",\n\t\"assignOperatorIds\": [\n\t\t\"1a260e38-79c9-4833-9333-ee9f1e07742e\"\n\t]\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Create maintenance ticket successfully\"\n\t},\n\t\"data\": \"MSOFR2K9G5\"\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n-status.code: 3 => The selected user must have the Operator role.\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","MAINTENANCE_TICKETS\nMAINTENANCE_TICKET_HISTORY,\nMAINTENANCE_OPERATOR_ASSIGNMENTS (INSERT)"]
[null,3,"/admin/maintenance/ticket/update","PUT","Api to update maintenance ticket","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"id\": \"6c5d36db-7cca-4fdf-bdb0-52fc728054a6\",\n\t\"issueDetail\": \"Brake system requires inspection.\",\n\t\"assignOperatorIds\": [\n\t\t\"1a260e38-79c9-4833-9333-ee9f1e077423\"\n\t],\n\t\"status\": \"C\",\n\t\"depotId\": \"1\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update maintenance ticket successfully\"\n\t},\n\t\"data\": 1\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Ticket has been deleted or not found\n-status.code: 3 => The selected user must have the Operator role.\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","MAINTENANCE_TICKETS\nMAINTENANCE_TICKET_HISTORY,\nMAINTENANCE_OPERATOR_ASSIGNMENTS (UPDATE)"]
[null,4,"/admin/maintenance/ticket/:id","DELETE","Api to delete maintenance ticket","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"id\": \"6c5d36db-7cca-4fdf-bdb0-52fc728054a6\",\n\t\"issueDetail\": \"Brake system requires inspection.\",\n\t\"assignOperatorIds\": [\n\t\t\"1a260e38-79c9-4833-9333-ee9f1e077423\"\n\t],\n\t\"status\": \"C\",\n\t\"depotId\": \"1\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete maintenance successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","MAINTENANCE_TICKETS\nMAINTENANCE_TICKET_HISTORY,\nMAINTENANCE_OPERATOR_ASSIGNMENTS (DELETE)"]
[null,5,"/admin/maintenance/ticket/:id","GET","Api to get maintenance ticket","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Get detail ticket successfully\"\n\t},\n\t\"data\": {\n\t\t\"id\": \"3\",\n\t\t\"ticketId\": \"MT3\",\n\t\t\"vehicle\": {\n\t\t\t\"vehicleId\": \"2\",\n\t\t\t\"modelId\": null,\n\t\t\t\"licensePlate\": \"JP-1001\",\n\t\t\t\"vin\": \"VIN0001ABC\",\n\t\t\t\"vehicleTypeId\": null,\n\t\t\t\"cameraLink\": null,\n\t\t\t\"createdAt\": \"2025-08-01T15:10:00.000+00:00\",\n\t\t\t\"modifiedAt\": null,\n\t\t\t\"depotId\": null,\n\t\t\t\"provisioningStatus\": \"C\",\n\t\t\t\"vehicleWorkNo\": \"1\",\n\t\t\t\"vehicleTestNo\": \"1\",\n\t\t\t\"cityCode\": \"TKY\",\n\t\t\t\"vehicleBrand\": \"Apollo\",\n\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\"vehicleColor\": \"White\",\n\t\t\t\"engineId\": null,\n\t\t\t\"approvedPassengerNumber\": 4,\n\t\t\t\"registrationDate\": null,\n\t\t\t\"vehicleFuelType\": null,\n\t\t\t\"tciCompany\": \"TokioInsure\",\n\t\t\t\"tciStartDate\": null,\n\t\t\t\"tciEndDate\": null,\n\t\t\t\"vciCompany\": \"VehicleCare\",\n\t\t\t\"vciStartDate\": null,\n\t\t\t\"vciEndDate\": null,\n\t\t\t\"fleetId\": null\n\t\t},\n\t\t\"issueDetail\": \"Maintenance Detail\",\n\t\t\"status\": \"I\",\n\t\t\"depot\": {\n\t\t\t\"depotId\": \"1\",\n\t\t\t\"name\": \"Depot 1 \",\n\t\t\t\"latitude\": 12.0,\n\t\t\t\"longitude\": 12.0,\n\t\t\t\"createdAt\": null,\n\t\t\t\"modifiedAt\": null\n\t\t},\n\t\t\"createdAt\": \"2025-08-21T02:16:07.556+00:00\",\n\t\t\"modifiedAt\": \"2025-08-21T02:16:07.556+00:00\",\n\t\t\"isDeleted\": null,\n\t\t\"createdByOperator\": null,\n\t\t\"assignedOperators\": []\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","MAINTENANCE_TICKETS, VEHICLES, DEPOTS (GET)"]

{"sheet":"API Heartbeat","index":19,"n_rows":18,"n_cols":11,"rows_kept":18,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Heartbeat of vehicle"]
[null,"Description","Apis that view trip actual route and vehicle's route by heartbeat"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-09-05"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-09-08"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Heartbeat"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/heartbeat/actualRouteByVehicleId/{id}","GET","This api will response the list of latitude and longitude sorted by created date ASC","\"Authorization\": \"Bearer <accessToken>\"","request path id: vehicleId","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"latitude\": 2.0,\n\t\t\t\"longitude\": 1.0\n\t\t},\n\t\t{\n\t\t\t\"latitude\": 3.0,\n\t\t\t\"longitude\": 2.0\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","HEARTBEAT_DATA(GET)"]
[null,2,"/heartbeat/actualRouteByTripId/{id}","GET","This api will response the list of latitude and longitude sorted by created date ASC","\"Authorization\": \"Bearer <accessToken>\"","request path id: tripId","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"latitude\": 2.0,\n\t\t\t\"longitude\": 1.0\n\t\t},\n\t\t{\n\t\t\t\"latitude\": 3.0,\n\t\t\t\"longitude\": 2.0\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }] \n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","HEARTBEAT_DATA, TRIP_ORDERS (GET)"]

{"sheet":"API Point Management","index":20,"n_rows":23,"n_cols":11,"rows_kept":23,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Point Management"]
[null,"Description","Apis Point Management that view points"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-08-28"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-10-20"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Point Management"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/pointInfos/searchPoints","POST","Api to search for points\n\n  sort:\n    name: \n    pointName: \n    remark: \n    pointType: \n    address: \n    createdAt: \n    cityCode: \n    pointCategory: \n    whiteList: \n    stopTime: \n    status: is_enable\n    supportVersion: \n  filter:\n    name: \n    address: \n    createdAt: ","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"pageNumber\": 1,\n\t\"pageSize\": 2,\n\t\"sortBy\": \"address\", //address, name\n\t\"sortDirection\": \"DESC\",\n\t\"filters\": {\n\t\t\n\t},\n\t\"globalSearch\": \"ds\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\"pointInfoId\": 9,\n\t\t\"name\": \"Point C\",\n\t\t\"poiName\": \"POI Name\",\n\t\t\"address\": \"123 Main St\",\n\t\t\"remark\": \"Some remark\",\n\t\t\"cityCode\": \"VN\",\n\t\t\"startPoint\": {\n\t\t\t\"latitude\": 35.6895,\n\t\t\t\"longitude\": 139.6917\n\t\t},\n\t\t\"destPoint\": {\n\t\t\t\"latitude\": 35.6586,\n\t\t\t\"longitude\": 139.7454\n\t\t},\n\t\t\"pointCategory\": 1,\n\t\t\"pointType\": 1,\n\t\t\"stopTime\": 350,\n\t\t\"fenceId\": null,\n\t\t\"groupId\": null,\n\t\t\"isWhiteList\": true,\n\t\t\"isEnable\": true,\n\t\t\"supportVersion\": \"v1.0\",\n\t\t\"distance\": null,\n\t\t\"createdAt\": \"2025-08-27T09:06:18.092+00:00\",\n\t\t\"modifiedAt\": \"2025-08-27T10:21:02.018+00:00\",\n\t\t\"momentaPointId\": null,\n\t\t\"syncStatus\": \"I\",\n\t\t\"isDeleted\": false,\n\"isRequiredSafetyDriver\": false,\n\"platform\": {\n\t\t\t\t\t\t\"platformId\": \"1\",\n\t\t\t\t\t\t\"name\": \"MOMENTA\",\n\t\t\t\t\t\t\"description\": \"MOMENTA PLATFORM\",\n\t\t\t\t\t\t\"linkUrl\": null,\n\t\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\t\"createdAt\": \"2025-11-14T02:48:07.202+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-11-14T02:48:07.202+00:00\",\n\t\t\t\t\t\t\"isDeleted\": false\n\t\t\t\t\t}\n\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 8,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","POINT_INFO (GET)"]
[null,2,"/admin/pointInfos/create","POST","Api to create point\n\nPoint type: 1-pickup, 2-drop-off, 3-both\n\nPoint category: 1-popular, 2-regular, 3-other\n\n","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"address (R)\": \"123 Main St\",\n  \"name (R)\": \"Point A\",\n  \"pointName (R)\": \"POI Name\",\n  \"remark (R)\": \"Some remark\",\n  \"pointType (R)\": 2,\n  \"cityCode (R)\": \"TOKYO\",\n  \"pointCategory (R)\": 1,\n  \"isWhiteList (R)\": true,\n  \"stopTime (R)\": 300,\n  \"supportVersion (O)\": \"v1.0\",\n  \"isEnable (R)\": true,\n  \"startPoint (R)\": {\n    \"latitude (R)\": 35.6895,\n    \"longitude (R)\": 139.6917\n  },\n  \"desPoint (R)\": {\n    \"latitude (R)\": 35.6895,\n    \"longitude (R)\": 139.6917\n  },\n\"isRequiredSafetyDriver\" (R): false,\n\"platformId\" (R): \"platformId\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": \"679c4ac3-06a2-44d1-89d5-64be76605432\"\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Point name already exists. Please choose another name. \n- status.code: 3 => Platform is not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","POINT_INFO (INSERT)"]
[null,3,"/admin/pointInfos/update?pointId={id}","PUT","Api to update point","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"address (R)\": \"123 Main St\",\n  \"name (R)\": \"Point A\",\n  \"pointName (R)\": \"POI Name\",\n  \"remark (R)\": \"Some remark\",\n  \"pointType (R)\": 2,\n  \"cityCode (R)\": \"TOKYO\",\n  \"pointCategory (R)\": 1,\n  \"isWhiteList (R)\": true,\n  \"stopTime (R)\": 300,\n  \"supportVersion (O)\": \"v1.0\",\n  \"isEnable (R)\": true,\n  \"startPoint (R)\": {\n    \"latitude (R)\": 35.6895,\n    \"longitude (R)\": 139.6917\n  },\n  \"desPoint (R)\": {\n    \"latitude (R)\": 35.6895,\n    \"longitude (R)\": 139.6917\n  },\n\"isRequiredSafetyDriver\" (R): false,\n\"platformId\" (R): \"platformId\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => The point is being synchronized.\n- status.code: 3 => Point not found \n- status.code: 4 => Point name already exists. Please choose another name. \n- status.code: 5 => Platform is not found\n- status.code: 6 =>  The request platform is not matched with current point platform\n-status.code: 7 => CCMomenta service error: {momentaError} - data: {momentaData}\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","POINT_INFO (UPDATE)"]
[null,4,"/admin/pointInfos/:id","DELETE","Api to delete depot","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete Point successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 =>  The point is being synchronized.\n- status.code: 3 => Point not found \n-status.code: 4 => CCMomenta service error: {momentaError} - data: {momentaData}\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","POINT_INFO (UPDATE)"]
[null,5,"/admin/pointInfos/:id","GET","Api to get point by id","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"pointInfoId\": 9,\n\t\t\"name\": \"Point C\",\n\t\t\"poiName\": \"POI Name\",\n\t\t\"address\": \"123 Main St\",\n\t\t\"remark\": \"Some remark\",\n\t\t\"cityCode\": \"VN\",\n\t\t\"startPoint\": {\n\t\t\t\"latitude\": 35.6895,\n\t\t\t\"longitude\": 139.6917\n\t\t},\n\t\t\"destPoint\": {\n\t\t\t\"latitude\": 35.6586,\n\t\t\t\"longitude\": 139.7454\n\t\t},\n\t\t\"pointCategory\": 1,\n\t\t\"pointType\": 1,\n\t\t\"stopTime\": 350,\n\t\t\"fenceId\": null,\n\t\t\"groupId\": null,\n\t\t\"isWhiteList\": true,\n\t\t\"isEnable\": true,\n\t\t\"supportVersion\": \"v1.0\",\n\t\t\"distance\": null,\n\t\t\"createdAt\": \"2025-08-27T09:06:18.092+00:00\",\n\t\t\"modifiedAt\": \"2025-08-27T10:21:02.018+00:00\",\n\t\t\"momentaPointId\": null,\n\t\t\"syncStatus\": \"I\",\n\t\t\"isDeleted\": false,\n\"isRequiredSafetyDriver\": false,\n\"platform\": {\n\t\t\t\t\t\t\"platformId\": \"1\",\n\t\t\t\t\t\t\"name\": \"MOMENTA\",\n\t\t\t\t\t\t\"description\": \"MOMENTA PLATFORM\",\n\t\t\t\t\t\t\"linkUrl\": null,\n\t\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\t\"createdAt\": \"2025-11-14T02:48:07.202+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-11-14T02:48:07.202+00:00\",\n\t\t\t\t\t\t\"isDeleted\": false\n\t\t\t\t\t}\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Point not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","POINT_INFO (GET)"]
[null,6,"/admin/pointInfos/markSafetyRequired","PUT","Mark safety driver required","\"Authorization\": \"Bearer <accessToken>\"","{\n \t\"pointIds\": [64,63],\n\t\"isRequiredSafetyDriver\": true\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Point not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","POINT_INFO (UPDATE)"]
[null,7,"/admin/pointInfos/sync","POST","API to sync point","\"Authorization\": \"Bearer <accessToken>\"","{\n \t\"pointInfoId\": 1\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Start syncing point info\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Point info has already been synchronized\n- status.code: 3 => The point is being synchronized.\n- status.code: 4 => Point not found\n- status.code: 5 => CCMomenta service error: {momentaError} - data: {momentaData}\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","POINT_INFO (UPDATE)"]

{"sheet":"API Depot Management","index":21,"n_rows":21,"n_cols":11,"rows_kept":21,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Depot Management"]
[null,"Description","Apis Depot Management that view Depots"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-08-26"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-08-26"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Depot Management"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/depot/search","POST","Api to search for depots","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"pageNumber\": 1,\n\t\"pageSize\": 2,\n\t\"sortBy\": \"address\", //address, name\n\t\"sortDirection\": \"DESC\",\n\t\"filters\": {\n\t\t\n\t},\n\t\"globalSearch\": \"ds\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"depotId\": \"5352e57a-427c-49a7-83bf-b8eafd12feb4\",\n\t\t\t\t\"name\": \"ds dd\",\n\t\t\t\t\"latitude\": 90.0,\n\t\t\t\t\"longitude\": 143.0,\n\t\t\t\t\"createdAt\": \"2025-08-25T13:18:24.325+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-25T13:18:24.325+00:00\",\n\t\t\t\t\"address\": null,\n\t\t\t\t\"isDeleted\": false\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"depotId\": \"441a9903-5fed-4d6e-97ac-91dd91359c3c\",\n\t\t\t\t\"name\": \"ds ddd\",\n\t\t\t\t\"latitude\": 90.0,\n\t\t\t\t\"longitude\": 143.0,\n\t\t\t\t\"createdAt\": \"2025-08-25T13:25:46.900+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-25T13:45:44.979+00:00\",\n\t\t\t\t\"address\": null,\n\t\t\t\t\"isDeleted\": false\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 1,\n\t\t\"pageSize\": 2,\n\t\t\"totalElements\": 4,\n\t\t\"totalPages\": 2,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","DEPOTS (GET)"]
[null,2,"/admin/depot/create","POST","Api to create depot","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"name\" (O): \"dDs DDDd \", \n\t\"address\" (O):\"address2\",\n\t\"latitude\": 90, \n\t\"longitude\": 143\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Create depot successfully\"\n\t},\n\t\"data\": \"679c4ac3-06a2-44d1-89d5-64be76605432\"\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Depot name already exists. Please choose another name. \n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","DEPOTS (INSERT)"]
[null,3,"/admin/depot/update/:id","PUT","Api to update depot","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"name\" (O): \"dDs DDDd \", \n\t\"address\" (O):\"address2\",\n\t\"latitude\": 90, \n\t\"longitude\": 143\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update depot successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Depot not found\n- status.code: 3 => Depot name already exists. Please choose another name.  \n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","DEPOTS (UPDATE)"]
[null,4,"/admin/depot/:id","DELETE","Api to delete depot","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete depot successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Depot not found\n-status.code: 3 => Delete depot failed due to exists vehicle linked to this depot\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","DEPOTS(UPDATE)"]
[null,5,"/admin/depot/:id","GET","Api to get depot by id","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"depotId\": \"507b60d3-77b0-456e-9236-c364a339365e\",\n\t\t\"name\": \"ds ddds\",\n\t\t\"latitude\": 35.0,\n\t\t\"longitude\": 134.0,\n\t\t\"createdAt\": \"2025-08-25T13:26:15.648+00:00\",\n\t\t\"modifiedAt\": \"2025-08-26T02:36:16.850+00:00\",\n\t\t\"address\": \"oke\",\n\t\t\"isDeleted\": false\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Depot not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","DEPOTS (GET)"]

{"sheet":"API Vehicle Types","index":22,"n_rows":21,"n_cols":11,"rows_kept":21,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Vehicle Types"]
[null,"Description","APIs that used to vehicle types (add, update)"]
[null,"Created User","TrungNT147@fpt.com"]
[null,"Created Date","2025-07-24"]
[null,"Updated User","TrungNT147@fpt.com"]
[null,"Updated Date","2025-12-22"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Vehicle Management"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/vehicleTypes","POST","Admin can create new vehicle type; \nRequest body using form-data.\nDescription:\nimageFile: type file\ngroup: type text\ncode: type text\nname: type text\ndescription: type text\nbaseFare: type text\nseatCapacity: type text\nfarePerDistance: type text\nisDisable: type text\ncode: type text\nplatformId: type text","\"Authorization\": \"Bearer <accessToken>\"","imageFile (R): abc.png\ngroup(R): CAR\ncode(R): APRT6\nname(R): APOLLO RT6\ndescription (O): Apollo RT6 is a self-driving electric vehicle designed for ride-hailing services\nbaseFare(R): 150\nseatCapacity(R): 4\nfarePerDistance(R): 20\nisDisable(O): false\ncode: VT1230595\nplatformId (R): plarformId ","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Create vehicle type successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Please upload a valid image (PNG/JPG, max 2MB).\n- status.code: 3 => Name already exists. Please use a unique value.\n- status.code: 4 => Code already exists. Please use a unique value.\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLE_TYPES (INSERT)"]
[null,2,"/admin/vehicleTypes/:id","PUT","Admin can update exist vehicle type; \nRequest body using form-data.\nDescription:\nimageFile: type file\ngroup: type text\ncode: type text\nname: type text\ndescription: type text\nbaseFare: type text\nseatCapacity: type text\nfarePerDistance: type text\nisDisable: type text\ncode: type text","\"Authorization\": \"Bearer <accessToken>\"","imageFile (R): abc.png\ngroup(R): CAR\ncode(R): APRT6\nname(R): APOLLO RT6\ndescription (O): Apollo RT6 is a self-driving electric vehicle designed for ride-hailing services\nbaseFare(R): 150\nseatCapacity(R): 4\nfarePerDistance(R): 20\nisDisable(O): false\ncode: VT1230595","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update vehicle type successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Please upload a valid image (PNG/JPG, max 2MB).\n- status.code: 3 => Vehicle type is not found\n- status.code: 4 => Code or name already exists. Please use a unique value.\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLE_TYPES (UPDATE)"]
[null,3,"/vehicleTypes/search","POST","Get all vehicle types with advanced search, sort","\"Authorization\": \"Bearer <accessToken>\"","{\n    \"pageNumber\": 0,\n    \"pageSize\": 2,\n    \"sortDirection\": \"DESC\",\n    \"globalSearch\" : \"JP-100\",\n    \"sortBy\": \"description\", //vehicleTypeGroup, vehicleTypeCode, vehicleTypeName, description, baseFare, farePerDistance, isDisable, seatCapacity\n    \"filters\": {\n        \"vehicleTypeGroup\": \"CAR\",\n        \"vehicleTypeCode\": \"APRT8\",\n        \"vehicleTypeName\": \"APOLLO RT8\",\n        \"description\": \"abc\",\n        \"baseFare\": 10,\n        \"farePerDistance\" :120,\n        \"isDisable\": true, // false is active, true is not active\n        \"seatCapacity\": 4,\n    }\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"vehicleTypeId\": \"94d23c8e-ad64-409e-9e9d-96c30900b413\",\n\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\"vehicleTypeCode\": \"APRT8\",\n\t\t\t\t\"vehicleTypeName\": \"APOLLO RT8\",\n\t\t\t\t\"description\": \"Apollo RT8 is a self-driving electric vehicle designed for ride-hailing services.\",\n\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\"imageUrl\": \"https://rhpfrontendendpointstd-fjapb2gjdxhbbbfk.a02.azurefd.net/rhp-passenger-dev/vehicle-type%2F94d23c8e-ad64-409e-9e9d-96c30900b413%2F20250826_033007_2363c46a.png\",\n\t\t\t\t\"baseFare\": 150.0,\n\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\"isDisable\": false,\n\t\t\t\t\"createdAt\": \"2025-08-26T03:30:09.140+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-26T03:30:09.140+00:00\",\n\"platform\": {\n                    \"platformId\": \"1\",\n                    \"name\": \"MOMENTA\",\n                    \"description\": \"MOMENTA PLATFORM\",\n                    \"linkUrl\": null,\n                    \"isActive\": true,\n                    \"createdAt\": \"2025-12-04T05:04:38.972+00:00\",\n                    \"modifiedAt\": \"2025-12-04T05:04:38.972+00:00\",\n                    \"isDeleted\": false\n                }\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 1,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 200\n- status.code: 0 => success\n\n'HTTP CODE: 401\n- invalid/missing accessToken in request header\n\n'HTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLE_TYPES (GET)"]
[null,4,"/admin/vehicleTypes/:id","DELETE","Delete vehicle type with vehicleTypeId.\nFor example request :\n/admin/vehicleTypes/9618ca10-4de4-4797-9b9c-89d56cf50c66","\"Authorization\": \"Bearer <accessToken>\"","Request param: \nvehicleId: Id of vehicle type","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete vehicle type successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Vehicle type is not found\n- status.code: 3 => Delete vehicle type failed due to exists vehicle linked to this vehicle type\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLE_TYPES (DELETE)"]
[null,5,"/admin/vehicleTypes/:id","GET","Get vehicle type by id","\"Authorization\": \"Bearer <accessToken>\"","Request param: \nvehicleId: Id of vehicle type","N/A","{\n    \"status\": {\n        \"code\": 0,\n        \"message\": \"Success\"\n    },\n    \"data\": {\n        \"vehicleTypeId\": \"d7e037c3-dbdd-4cad-beea-ff906a477545\",\n        \"vehicleTypeGroup\": \"CAR\",\n        \"vehicleTypeCode\": \"VHQRTT223A\",\n        \"vehicleTypeName\": \"Happy Yemen Restaurant\",\n        \"description\": \"47573\",\n        \"seatCapacity\": 4,\n        \"imageUrl\": \"\",\n        \"baseFare\": 10.0,\n        \"isDisable\": true,\n        \"farePerDistance\": 5.0,\n        \"createdAt\": \"2026-04-07T03:53:09.724+00:00\",\n        \"modifiedAt\": \"2026-04-17T01:31:15.933+00:00\",\n        \"platform\": {\n            \"platformId\": \"1\",\n            \"name\": \"MOMENTA\",\n            \"description\": \"MOMENTA PLATFORM\",\n            \"linkUrl\": null,\n            \"isActive\": true,\n            \"createdAt\": \"2025-12-04T05:04:38.972+00:00\",\n            \"modifiedAt\": \"2025-12-04T05:04:38.972+00:00\",\n            \"isDeleted\": false\n        }\n    }\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Vehicle type is not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLE_TYPES, PLATFORMS (GET)"]

{"sheet":"API Ride Management","index":23,"n_rows":22,"n_cols":11,"rows_kept":22,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Ride Management"]
[null,"Description","Apis Trips Mangement that view trips status and trip details"]
[null,"Created User","Kietht9@fpt.com"]
[null,"Created Date","2025-07-30"]
[null,"Updated User","Kietht9@fpt.com"]
[null,"Updated Date","2026-04-10"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Ride Management"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/rideHistories","POST","Api to get total trips with pagination. Filter and global search applied. \n\nFilter by status:\n-rideStatusList: []\nrideStatusList: [1, 2, 3, 4, 5, 6, 7, 8, 16, 17, 11, 12, 13] //ACTIVE\nrideStatusList: [14, 15, 88, 99, 100] //CANCELLED\nrideStatusList: [9,10] //COMPLETED \n\n\nFilter by incidents: \nisIncident: true\n\ntrip-status-mapping:\n\n1 DISPATCHING:\n  internalStatus: 1\n  status_code: DISPATCHING\n  lifecycle (category): ACTIVE\n  code: 2\n\n2 VEHICLE_ASSIGNED:\n  internalStatus: 2\n  status_code: VEHICLE_ASSIGNED\n  lifecycle (category): ACTIVE\n  code: 2\n\n3 DRIVER_CONFIRMED:\n  internalStatus: 3\n  status_code: DRIVER_CONFIRMED\n  lifecycle (category): ACTIVE\n  code: 2\n\n4 ARRIVED_AT_PICKUP:\n  internalStatus: 4\n  status_code: ARRIVED_AT_PICKUP\n  lifecycle (category): ACTIVE\n  code: 2\n\n5 PASSENGER_BOARDED:\n  internalStatus: 5\n  status_code: PASSENGER_BOARDED\n  lifecycle (category): ACTIVE\n  code: 2\n\n6 READY_TO_START_TRIP:\n  internalStatus: 6\n  status_code: READY_TO_START_TRIP\n  lifecycle (category): ACTIVE\n  code: 2\n\n7 ON_TRIP:\n  internalStatus: 7\n  status_code: ON_TRIP\n  lifecycle (category): ACTIVE\n  code: 2\n\n8 ARRIVED_AT_DESTINATION:\n  internalStatus: 8\n  status_code: ARRIVED_AT_DESTINATION\n  lifecycle (category): ACTIVE\n  code: 2\n\n9 PASSENGER_ALIGHTED:\n  internalStatus: 9\n  status_code: PASSENGER_ALIGHTED\n  lifecycle (category): COMPLETED\n  code: 3\n\n10 TRIP_COMPLETED:\n  internalStatus: 10\n  status_code: TRIP_COMPLETED\n  lifecycle (category): COMPLETED\n  code: 3\n\n11 VEHICLE_REJECTED_DUE_TO_MALFUNCTION:\n  internalStatus: 11\n  status_code: VEHICLE_REJECTED_DUE_TO_MALFUNCTION\n  lifecycle (category): ACTIVE\n  code: 2\n\n12 VEHICLE_TIME_OUT:\n  internalStatus: 12\n  status_code: VEHICLE_TIME_OUT\n  lifecycle (category): ACTIVE\n  code: 2\n\n13 VEHICLE_FOUND_ABNORMAL_AFTER_ACCEPTING:\n  internalStatus: 13\n  status_code: VEHICLE_FOUND_ABNORMAL_AFTER_ACCEPTING\n  lifecycle (category): ACTIVE\n  code: 2\n\n14 PASSENGER_CANCELLED:\n  internalStatus: 14\n  status_code: PASSENGER_CANCELLED\n  lifecycle (category): CANCELLED\n  code: 1\n\n15 OPERATION_CANCELLED:\n  internalStatus: 15\n  status_code: OPERATION_CANCELLED\n  lifecycle (category): CANCELLED\n  code: 1\n\n16 ONBOARD_TIMEOUT:\n  internalStatus: 16\n  status_code: ONBOARD_TIMEOUT\n  lifecycle (category): ACTIVE\n  code: 2\n\n17 DROPOFF_TIMEOUT:\n  internalStatus: 17\n  status_code: DROPOFF_TIMEOUT\n  lifecycle (category): ACTIVE\n  code: 2\n\n88 PASSENGER_NO_SHOW:\n  internalStatus: 88\n  status_code: PASSENGER_NO_SHOW\n  lifecycle (category): CANCELLED\n  code: 1\n\n99 VEHICLE_NOT_FOUND:\n  internalStatus: 99\n  status_code: VEHICLE_NOT_FOUND\n  lifecycle (category): CANCELLED\n  code: 1\n\n100 CLEAN_BROKEN_TRIP:\n  internalStatus: 100\n  status_code: CLEAN_BROKEN_TRIP\n  lifecycle (category): CANCELLED\n  code: 1\n\n\nInternal vehicle status code\n1: AVAILABLE\n2: PICKING\n3: ON_TRIP\n4: RETURNING\n5: OPERATIONS\n6: MAINTENANCE\n7: OFFLINE\n8: DISCONNECTED (isConnected: false)\n9: FAULTED\n10: HIBERNATE","\"Authorization\": \"Bearer <accessToken>\"","\"Authorization\": \"Bearer <accessToken>\"","N/A","{\n    \"status\": {\n        \"code\": 0,\n        \"message\": \"Success\"\n    },\n    \"data\": {\n        \"elements\": [\n            {\n                \"tripId\": \"609cd54e-7754-43b6-a669-9c45ec1486b5\",\n                \"rideId\": \"R-260409-ZA30TY\",\n                \"vehicleId\": \"AV0004\",\n                \"tripTypeId\": \"1\",\n                \"tripStatus\": {\n                    \"code\": 2,\n                    \"category\": \"ACTIVE\",\n                    \"platformName\": \"MOMENTA\",\n                    \"platformStatus\": \"2\",\n                    \"internalStatus\": 3\n                },\n                \"totalDistance\": null,\n                \"estimatedTotalDistance\": 3.29,\n                \"totalAmount\": 228.99,\n                \"discountAmount\": 228.99,\n                \"finalAmount\": 0.00,\n                \"currencyCode\": null,\n                \"estimatedDurationSeconds\": 350,\n                \"actualDurationSeconds\": null,\n                \"ratingScore\": null,\n                \"feedback\": null,\n                \"internalOrderId\": \"bec6e644-ddbb-442c-9723-0554438250dc\",\n                \"momentaOrderId\": \"20260409T0515-0da3e309\",\n                \"tripPoints\": [\n                    {\n                        \"address\": \"Al Bateen Executive Airport\",\n                        \"addressDetail\": \"CFG2+XPX - Al Muntazah - Zone 1 - Abu Dhabi - United Arab Emirates\",\n                        \"latitude\": 24.4212521,\n                        \"longitude\": 54.4443161,\n                        \"sequence\": 1,\n                        \"pointInfoId\": null,\n                        \"stopTime\": null,\n                        \"isRequiredSafetyDriver\": true\n                    },\n                    {\n                        \"address\": \"Aparthotel Adagio Abu Dhabi Al Bustan\",\n                        \"addressDetail\": \"Aparthotel Adagio Abu Dhabi Al Bustan - Shk. Rashid Bin Saeed - 29 Rabdan St - Abu Dhabi - United Arab Emirates\",\n                        \"latitude\": 24.429413099999998,\n                        \"longitude\": 54.428314799999995,\n                        \"sequence\": 2,\n                        \"pointInfoId\": null,\n                        \"stopTime\": null,\n                        \"isRequiredSafetyDriver\": true\n                    }\n                ],\n                \"scheduledAt\": null,\n                \"createdAt\": \"2026-04-09T05:13:56.742+00:00\",\n                \"modifiedAt\": \"2026-04-09T05:15:23.402+00:00\",\n                \"routes\": null,\n                \"actualDriverId\": \"38aa86e7-d6c2-4b11-bd4d-488b5bf75341\",\n                \"requiredDriverGender\": null,\n                \"passenger\": {\n                    \"passengerId\": \"d767ad3f-4cd6-4a28-adf3-ca7b7391d0a6\",\n                    \"phone\": \"+971496918881\",\n                    \"accountName\": \"jmeter pasenger test 29d49e51\",\n                    \"email\": null,\n                    \"address\": null,\n                    \"gender\": null,\n                    \"isActive\": null,\n                    \"createdStatus\": null,\n                    \"avatarUrl\": \"\",\n                    \"createdAt\": null,\n                    \"modifiedAt\": null,\n                    \"totalTrips\": null,\n                    \"averageTripRating\": null,\n                    \"totalOpenTickets\": null,\n                    \"verifiedPhone\": null,\n                    \"verifiedEmail\": null\n                },\n                \"voucherId\": null,\n                \"voucher\": null,\n                \"vehicle\": {\n                    \"vehicleId\": \"AV0004\",\n                    \"vehicleWorkNumber\": \"AD00004\",\n                    \"vehicleTestNumber\": \"AD00004\",\n                    \"color\": \"Cyan\",\n                    \"licensePlate\": \"AD00004\",\n                    \"vinNumber\": \"JH4DA9340LS003571\",\n                    \"createdAt\": \"2025-08-03T02:48:54.675+00:00\",\n                    \"provisionStatus\": \"C\",\n                    \"vehicleStatus\": {\n                        \"vehicleStatusId\": null,\n                        \"eventCode\": null,\n                        \"eventDetail\": null,\n                        \"currentSpeed\": 100.0,\n                        \"deviceTime\": null,\n                        \"status\": 5,\n                        \"internalVehicleStatus\": 1,\n                        \"isConnected\": false,\n                        \"timeStamp\": null,\n                        \"batteryLevel\": null,\n                        \"latitude\": 24.417744,\n                        \"longitude\": 54.439866,\n                        \"engineStatus\": null,\n                        \"createdAt\": null,\n                        \"modifiedAt\": null,\n                        \"remainingDistance\": \"903\",\n                        \"remainingDuration\": \"140\",\n                        \"direction\": 286.7451,\n                        \"height\": null,\n                        \"accuracy\": null\n                    },\n                    \"vehicleType\": {\n                        \"vehicleTypeId\": null,\n                        \"vehicleTypeGroup\": null,\n                        \"vehicleTypeCode\": null,\n                        \"vehicleTypeName\": null,\n                        \"description\": null,\n                        \"seatCapacity\": null,\n                        \"imageUrl\": null,\n                        \"baseFare\": null,\n                        \"isDisable\": false,\n                        \"farePerDistance\": null,\n                        \"createdAt\": null,\n                        \"modifiedAt\": null,\n                        \"platform\": {\n                            \"platformId\": \"1\",\n                            \"name\": \"MOMENTA\",\n                            \"description\": \"MOMENTA PLATFORM\",\n                            \"linkUrl\": null,\n                            \"isActive\": true,\n                            \"createdAt\": \"2025-12-04T05:04:38.972+00:00\",\n                            \"modifiedAt\": \"2025-12-04T05:04:38.972+00:00\",\n                            \"isDeleted\": false\n                        }\n                    }\n                },\n                \"issueTickets\": [],\n                \"routePlans\": [],\n                \"driver\": {\n                    \"adminId\": \"38aa86e7-d6c2-4b11-bd4d-488b5bf75341\",\n                    \"roles\": \"DRIVER\",\n                    \"name\": \"KieuNTM\",\n                    \"email\": \"kieudriver11@mailsac.com\",\n                    \"phone\": \"+9714343242321\",\n                    \"gender\": \"M\",\n                    \"isActive\": true,\n                    \"avatarUrl\": \"https://rhpfrontendendpointstd-fjapb2gjdxhbbbfk.a02.azurefd.net/rhp-passenger-avatar-test/admin-avatars%2F20251119_042247_926fbc41.jpg\",\n                    \"createdAt\": \"2025-11-13T02:51:08.538+00:00\",\n                    \"modifiedAt\": \"2026-04-07T03:20:14.301+00:00\"\n                },\n                \"mergedRoutePlans\": []\n            }\n        ],\n        \"pageNumber\": 0,\n        \"pageSize\": 10,\n        \"totalElements\": 45,\n        \"totalPages\": 5,\n        \"last\": false\n    }\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS (GET)\nTRIP_RATINGS (GET)\nTRIP_POINTS (GET)\nTRIP_ORDERS (GET)\nPASSENGER_ACCOUNT (GET)\nTRIPS_VOUCHERS (GET)\nVEHICLES (GET)\nVEHICLE_STATUSES (GET)\nVEHICLES_GROUPS (GET)\nAV_GROUPS (GET)\nOPERATORS_GROUPS (GET)\nROUTE_PLAN (GET)"]
[null,2,"/admin/rideHistoriesSummary","GET","Api to get total summary of trips","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"totalRides\": 5,\n\t\t\"totalActiveRides\": 3,\n\t\t\"totalCompletedRides\": 2,\n\t\t\"totalCancelledRides\": 0,\n\t\t\"totalIncidentRides\": 0\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS (GET)\nTRIP_RATINGS (GET)\nTRIP_POINTS (GET)\nTRIP_ORDERS (GET)\nPASSENGER_ACCOUNT (GET)\nTRIPS_VOUCHERS (GET)\nVEHICLES (GET)\nVEHICLE_STATUSES (GET)\nVEHICLES_GROUPS (GET)\nAV_GROUPS (GET)\nOPERATORS_GROUPS (GET)"]
[null,3,"/admin/rideHistories/{tripId}","GET","Api to get trip detail by id\n\ntrip-status-mapping:\n\n1 DISPATCHING:\n  internalStatus: 1\n  status_code: DISPATCHING\n  lifecycle (category): ACTIVE\n  code: 2\n\n2 VEHICLE_ASSIGNED:\n  internalStatus: 2\n  status_code: VEHICLE_ASSIGNED\n  lifecycle (category): ACTIVE\n  code: 2\n\n3 DRIVER_CONFIRMED:\n  internalStatus: 3\n  status_code: DRIVER_CONFIRMED\n  lifecycle (category): ACTIVE\n  code: 2\n\n4 ARRIVED_AT_PICKUP:\n  internalStatus: 4\n  status_code: ARRIVED_AT_PICKUP\n  lifecycle (category): ACTIVE\n  code: 2\n\n5 PASSENGER_BOARDED:\n  internalStatus: 5\n  status_code: PASSENGER_BOARDED\n  lifecycle (category): ACTIVE\n  code: 2\n\n6 READY_TO_START_TRIP:\n  internalStatus: 6\n  status_code: READY_TO_START_TRIP\n  lifecycle (category): ACTIVE\n  code: 2\n\n7 ON_TRIP:\n  internalStatus: 7\n  status_code: ON_TRIP\n  lifecycle (category): ACTIVE\n  code: 2\n\n8 ARRIVED_AT_DESTINATION:\n  internalStatus: 8\n  status_code: ARRIVED_AT_DESTINATION\n  lifecycle (category): ACTIVE\n  code: 2\n\n9 PASSENGER_ALIGHTED:\n  internalStatus: 9\n  status_code: PASSENGER_ALIGHTED\n  lifecycle (category): COMPLETED\n  code: 3\n\n10 TRIP_COMPLETED:\n  internalStatus: 10\n  status_code: TRIP_COMPLETED\n  lifecycle (category): COMPLETED\n  code: 3\n\n11 VEHICLE_REJECTED_DUE_TO_MALFUNCTION:\n  internalStatus: 11\n  status_code: VEHICLE_REJECTED_DUE_TO_MALFUNCTION\n  lifecycle (category): ACTIVE\n  code: 2\n\n12 VEHICLE_TIME_OUT:\n  internalStatus: 12\n  status_code: VEHICLE_TIME_OUT\n  lifecycle (category): ACTIVE\n  code: 2\n\n13 VEHICLE_FOUND_ABNORMAL_AFTER_ACCEPTING:\n  internalStatus: 13\n  status_code: VEHICLE_FOUND_ABNORMAL_AFTER_ACCEPTING\n  lifecycle (category): ACTIVE\n  code: 2\n\n14 PASSENGER_CANCELLED:\n  internalStatus: 14\n  status_code: PASSENGER_CANCELLED\n  lifecycle (category): CANCELLED\n  code: 1\n\n15 OPERATION_CANCELLED:\n  internalStatus: 15\n  status_code: OPERATION_CANCELLED\n  lifecycle (category): CANCELLED\n  code: 1\n\n16 ONBOARD_TIMEOUT:\n  internalStatus: 16\n  status_code: ONBOARD_TIMEOUT\n  lifecycle (category): ACTIVE\n  code: 2\n\n17 DROPOFF_TIMEOUT:\n  internalStatus: 17\n  status_code: DROPOFF_TIMEOUT\n  lifecycle (category): ACTIVE\n  code: 2\n\n88 PASSENGER_NO_SHOW:\n  internalStatus: 88\n  status_code: PASSENGER_NO_SHOW\n  lifecycle (category): CANCELLED\n  code: 1\n\n99 VEHICLE_NOT_FOUND:\n  internalStatus: 99\n  status_code: VEHICLE_NOT_FOUND\n  lifecycle (category): CANCELLED\n  code: 1\n\n100 CLEAN_BROKEN_TRIP:\n  internalStatus: 100\n  status_code: CLEAN_BROKEN_TRIP\n  lifecycle (category): CANCELLED\n  code: 1\n\nInternal vehicle status code\n1: AVAILABLE\n2: PICKING\n3: ON_TRIP\n4: RETURNING\n5: OPERATIONS\n6: MAINTENANCE\n7: OFFLINE\n8: DISCONNECTED (isConnected: false)\n9: FAULTED\n10: HIBERNATE","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n    \"status\": {\n        \"code\": 0,\n        \"message\": \"Success\"\n    },\n    \"data\": {\n        \"tripId\": \"47f4388a-952e-478d-bf9b-7599c556fada\",\n        \"rideId\": \"R-260409-4OVUSW\",\n        \"vehicleId\": null,\n        \"tripTypeId\": \"1\",\n        \"tripStatus\": {\n            \"code\": null,\n            \"category\": null,\n            \"platformName\": \"MOMENTA\",\n            \"platformStatus\": null,\n            \"internalStatus\": 99\n        },\n        \"totalDistance\": null,\n        \"estimatedTotalDistance\": 3.29,\n        \"totalAmount\": 228.99,\n        \"discountAmount\": 228.99,\n        \"finalAmount\": 0.00,\n        \"currencyCode\": null,\n        \"estimatedDurationSeconds\": 382,\n        \"actualDurationSeconds\": null,\n        \"ratingScore\": null,\n        \"feedback\": null,\n        \"internalOrderId\": \"6df74a8c-9cf0-4173-ad26-4266f672e47f\",\n        \"momentaOrderId\": null,\n        \"tripPoints\": [\n            {\n                \"address\": \"Aparthotel Adagio Abu Dhabi Al Bustan\",\n                \"addressDetail\": \"Aparthotel Adagio Abu Dhabi Al Bustan - Shk. Rashid Bin Saeed - 29 Rabdan St - Abu Dhabi - United Arab Emirates\",\n                \"latitude\": 24.429413099999998,\n                \"longitude\": 54.428314799999995,\n                \"sequence\": 2,\n                \"pointInfoId\": null,\n                \"stopTime\": null,\n                \"isRequiredSafetyDriver\": true\n            },\n            {\n                \"address\": \"Al Bateen Executive Airport\",\n                \"addressDetail\": \"CFG2+XPX - Al Muntazah - Zone 1 - Abu Dhabi - United Arab Emirates\",\n                \"latitude\": 24.4212521,\n                \"longitude\": 54.4443161,\n                \"sequence\": 1,\n                \"pointInfoId\": null,\n                \"stopTime\": null,\n                \"isRequiredSafetyDriver\": true\n            }\n        ],\n        \"scheduledAt\": null,\n        \"createdAt\": \"2026-04-09T09:19:04.023+00:00\",\n        \"modifiedAt\": \"2026-04-09T09:24:04.137+00:00\",\n        \"routes\": null,\n        \"actualDriverId\": null,\n        \"requiredDriverGender\": null,\n        \"passenger\": {\n            \"passengerId\": \"4322c4d5-0180-4c0a-a702-012ca137dc22\",\n            \"phone\": \"+971422501546\",\n            \"accountName\": \"jmeter pasenger test fa37f761\",\n            \"email\": null,\n            \"address\": null,\n            \"gender\": null,\n            \"isActive\": null,\n            \"createdStatus\": null,\n            \"avatarUrl\": \"\",\n            \"createdAt\": null,\n            \"modifiedAt\": null,\n            \"totalTrips\": null,\n            \"averageTripRating\": null,\n            \"totalOpenTickets\": null,\n            \"verifiedPhone\": null,\n            \"verifiedEmail\": null\n        },\n        \"voucherId\": \"c62df3c5-3d8d-4473-b0bd-40e02c22308f\",\n        \"voucher\": {\n            \"voucherId\": \"c62df3c5-3d8d-4473-b0bd-40e02c22308f\",\n            \"voucherType\": \"R\",\n            \"code\": \"VU04W2KLSB\",\n            \"description\": \"jmeter_voucher_1e9fadee\",\n            \"discountType\": \"P\",\n            \"discountValue\": 100,\n            \"currency\": null,\n            \"limitType\": \"L\",\n            \"usageLimit\": 1,\n            \"startedAt\": \"2026-04-09T09:19:00.314+00:00\",\n            \"expiredAt\": \"2026-05-09T16:59:59.000+00:00\",\n            \"imageUrl\": null,\n            \"createdAt\": \"2026-04-09T09:19:00.333+00:00\",\n            \"modifiedAt\": \"2026-04-09T09:19:00.333+00:00\"\n        },\n        \"vehicle\": {\n            \"vehicleType\": {\n                \"vehicleTypeId\": null,\n                \"vehicleTypeGroup\": null,\n                \"vehicleTypeCode\": null,\n                \"vehicleTypeName\": null,\n                \"description\": null,\n                \"seatCapacity\": null,\n                \"imageUrl\": null,\n                \"baseFare\": null,\n                \"isDisable\": false,\n                \"farePerDistance\": null,\n                \"createdAt\": null,\n                \"modifiedAt\": null,\n                \"platform\": {\n                    \"platformId\": \"1\",\n                    \"name\": \"MOMENTA\",\n                    \"description\": \"MOMENTA PLATFORM\",\n                    \"linkUrl\": null,\n                    \"isActive\": true,\n                    \"createdAt\": \"2025-12-04T05:04:38.972+00:00\",\n                    \"modifiedAt\": \"2025-12-04T05:04:38.972+00:00\",\n                    \"isDeleted\": false\n                }\n            }\n        },\n        \"issueTickets\": [],\n        \"routePlans\": [],\n        \"driver\": null,\n        \"mergedRoutePlans\": []\n    }\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS (GET)\nTRIP_RATINGS (GET)\nTRIP_POINTS (GET)\nTRIP_ORDERS (GET)\nPASSENGER_ACCOUNT (GET)\nTRIPS_VOUCHERS (GET)\nVEHICLES (GET)\nVEHICLE_STATUSES (GET)\nVEHICLES_GROUPS (GET)\nAV_GROUPS (GET)\nOPERATORS_GROUPS (GET)"]
[null,4,"/admin/trips/cancel","POST","Api to cancel trip by trip Id","\"Authorization\": \"Bearer <accessToken>\"","{\n    \"tripId\" (R): \"trip-2222-aaaa-bbbb-0002\" - tripid must always be included\n}","N/A","{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"Trip has been cancelled\"\n  }\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Cannot cancel trip because it has already started\n- status.code: 3 => Trip not found or you are not authorized to cancel this trip\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS (GET)\nTRIP_ORDERS (GET, UPDATE)\nTRIPS_VOUCHERS (GET)\n"]
[null,5,"/admin/trips/assignDriver","PUT","Api to assign driver to trip","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"tripId\" (R): \"33a0619b-e60b-41a0-a301-557e5df0b89b\",\n\t\"driverId\" (O): \"a3f6976c-b818-4bef-b06f-880f26a0fe25\" //left null when unassign\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Driver Not Found\n- status.code: 3 => Trip is not found\n- status.code: 4 => Assign Failed. Trip was requested for female driver.\n- status.code: 5 => Unassign Failed. Trip was required safety driver.\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS (GET, UPDATE)\nADMIN_ACCOUNT(GET)\n"]
[null,7,"/admin/trips/mergeRoute/{tripId}","GET","Get merged route by tripId","\"Authorization\": \"Bearer <accessToken>\"","Request path tripID","N/A","{\n    \"status\": {\n        \"code\": 0,\n        \"message\": \"Success\"\n    },\n    \"data\": {\n        \"pickingRoutePlan\" (O): \"\",\n        \"droppingRoutePlan\" (O): \"\"\n    }\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Trip is not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS (GET)\nROUTE_PLAN (GET)\n"]

{"sheet":"API Statistic","index":24,"n_rows":25,"n_cols":11,"rows_kept":25,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","API Report and Dashboard"]
[null,"Description","APIs Report and Dashboard"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-09-10"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-12-22"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Report and Dashboard"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/statistics/totalRideSummary?fromDate=2025-01-03T17:20:00.000+07:00&toDate=2025-11-03T17:20:00.000+07:00","GET","Get ride summary (filter by start date to end date)","\"Authorization\": \"Bearer <accessToken>\"","Request Params: \nfromDate (R)=2025-01-03T17:20:00.000+07:00\ntoDate (R)=2025-11-03T17:20:00.000+07:00","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"totalRides\": 7,\n\t\t\"totalActiveRides\": 3,\n\t\t\"totalCompletedRides\": 4,\n\t\t\"totalCancelledRides\": 0,\n\t\t\"totalIncidentRides\": 1,\n\t\t\"totalAverageRating\": 3.0\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Invalid Date Time Format\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS, TRIP_RATINGS (GET)"]
[null,2,"/admin/statistics/totalVehicleStatuses","GET","Get vehicle status summary","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"totalVehicles\": 532,\n\t\t\"totalMaintenanceVehicles\": 0,\n\t\t\"totalOperationVehicles\": 0,\n\t\t\"totalStandbyVehicles\": 0,\n\t\t\"totalOfflineVehicles\": 0,\n\t\t\"totalAvailableVehicles\": 25,\n\t\t\"totalOnTripVehicles\": 0,\n\t\t\"totalProvisionReadyVehicles\": 25,\n\t\t\"totalUnavailableVehicles\": 1,\n\t\t\"totalPickingVehicles\": 1,\n\t\t\"totalReturningVehicles\": 480,\n\t\t\"totalDisconnectedVehicles\": 0,\n\t\t\"totalFaultedVehicles\": 0,\n\t\t\"totalHibernateVehicles\": 0\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES, VEHICLE_STATUS (GET)"]
[null,3,"/admin/statistics/averageRatingsSummary?fromDate=2025-08-09T00:00:00.050+00:00&toDate=2025-09-09T23:00:00.050+00:00&timezone=+07:00","GET","Get list of average ratings per day (filter by start date to end date)","\"Authorization\": \"Bearer <accessToken>\"","Request Params:\nfromDate (R)=2025-01-03T17:20:00.000+07:00\ntoDate (R)=2025-11-03T17:20:00.000+07:00\ntimezone (IANA zone) (R)=Asia/Ho_Chi_Minh","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"totalAverageRating\": 3.0,\n\t\t\"averageRatingsPerDay\": [\n\t\t\t{\n\t\t\t\t\"averageRatings\": 3.5,\n\t\t\t\t\"date\": \"2025-09-08\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"averageRatings\": 2.0,\n\t\t\t\t\"date\": \"2025-09-09\"\n\t\t\t}\n\t\t]\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Invalid Date Time Format\n- status.code: 3 => Region zone format is not valid\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIP_RATINGS (GET)"]
[null,4,"/admin/statistics/totalRatingsByScore?fromDate=2025-01-09T00:00:00.050+00:00&toDate=2025-09-09T23:00:00.050+00:00","GET","Get list of total rating group by score (filter by start date to end date)","\"Authorization\": \"Bearer <accessToken>\"","Request Params: \nfromDate (R)=2025-01-03T17:20:00.000+07:00\ntoDate (R)=2025-11-03T17:20:00.000+07:00","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"score\": 2,\n\t\t\t\"totalRatings\": 2\n\t\t},\n\t\t{\n\t\t\t\"score\": 5,\n\t\t\t\"totalRatings\": 1\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIP_RATINGS (GET)"]
[null,5,"/admin/statistics/searchTripRatings","POST","Get list of ratings with pagination and filter","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"pageNumber\": 1,\n\t\"pageSize\": 2,\n\t\"sortDirection\": \"ASC\",\n\t\"sortBy\": \"ratingScore\", //ratingScore, createdAt\n\t\"filters\": {\n\t\t\"scoreList\": [1,2,3,4,5],\n\t\t\"createdAt\": {\n\t\t\t\"from\": \"2025-09-08T00:00:00.050+00:00\",\n\t\t\t\"to\": \"2025-09-08T23:00:00.050+00:00\"\n\t\t}\n\t}\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"ratingId\": \"5659879a-b1a2-4d5b-92bc-3e1e19af8d03\",\n\t\t\t\t\"tripId\": \"ea1bf4fa-5492-48ac-be9b-18be7b2a8969\",\n\t\t\t\t\"passengerId\": \"7f508ad5-913a-4d0b-8c33-4a9b02ceb52c\",\n\t\t\t\t\"vehicleId\": \"4\",\n\t\t\t\t\"ratingScore\": 2,\n\t\t\t\t\"feedback\": \"good trip\",\n\t\t\t\t\"createdAt\": \"2025-09-08T08:46:49.922+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-09-08T08:46:49.922+00:00\",\n\t\t\t\t\"vehicle\": {\n\t\t\t\t\t\"vehicleId\": \"4\",\n\t\t\t\t\t\"modelId\": null,\n\t\t\t\t\t\"licensePlate\": \"JP-1003\",\n\t\t\t\t\t\"vin\": \"VIN0003GHI\",\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"cameraLink\": null,\n\t\t\t\t\t\"createdAt\": \"2025-08-03T17:20:00.000+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-03T17:20:00.000+00:00\",\n\t\t\t\t\t\"depotId\": \"1\",\n\t\t\t\t\t\"provisioningStatus\": \"C\",\n\t\t\t\t\t\"vehicleWorkNo\": \"13\",\n\t\t\t\t\t\"vehicleTestNo\": \"13\",\n\t\t\t\t\t\"cityCode\": \"NGY\",\n\t\t\t\t\t\"vehicleBrand\": \"Apollo\",\n\t\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\t\"vehicleColor\": \"Silver\",\n\t\t\t\t\t\"engineId\": \"ENG1003\",\n\t\t\t\t\t\"approvedPassengerNumber\": 4,\n\t\t\t\t\t\"registrationDate\": \"2025-07-27\",\n\t\t\t\t\t\"vehicleFuelType\": \"Electric\",\n\t\t\t\t\t\"tciCompany\": \"NagoyaInsure\",\n\t\t\t\t\t\"tciStartDate\": \"2025-08-03\",\n\t\t\t\t\t\"tciEndDate\": \"2026-08-03\",\n\t\t\t\t\t\"vciCompany\": \"VehicleCare\",\n\t\t\t\t\t\"vciStartDate\": \"2025-08-03\",\n\t\t\t\t\t\"vciEndDate\": \"2026-08-03\",\n\t\t\t\t\t\"fleetId\": null,\n\t\t\t\t\t\"driverId\": null,\n\t\t\t\t\t\"qrUrl\": null,\n\t\t\t\t\t\"qrGeneratedAt\": null\n\t\t\t\t},\n\t\t\t\t\"rideId\": \"R2\",\n\t\t\t\t\"passenger\": {\n\t\t\t\t\t\"passengerId\": \"7f508ad5-913a-4d0b-8c33-4a9b02ceb52c\",\n\t\t\t\t\t\"phone\": \"32323\",\n\t\t\t\t\t\"accountName\": \"TrungNT147\",\n\t\t\t\t\t\"email\": \"trungnt147@fpt.com\",\n\t\t\t\t\t\"address\": null,\n\t\t\t\t\t\"gender\": \"M\",\n\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\"createdStatus\": \"C\",\n\t\t\t\t\t\"avatarUrl\": \"https://kintsugi.blob.core.windows.net/rhp-passenger-dev/promotion-images%2F20250814_093052_422283c9.png\",\n\t\t\t\t\t\"otpRequests\": null,\n\t\t\t\t\t\"totalLoginCount\": null,\n\t\t\t\t\t\"createdAt\": \"2025-07-30T23:23:42.326+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-07-30T23:23:47.828+00:00\",\n\t\t\t\t\t\"totalTrips\": null,\n\t\t\t\t\t\"averageTripRating\": null\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"ratingId\": \"69a7d254-5136-4171-8799-f84c5477e6d3\",\n\t\t\t\t\"tripId\": \"413683ea-bc6b-4b76-8ab3-d17ef9e8b37a\",\n\t\t\t\t\"passengerId\": \"7f508ad5-913a-4d0b-8c33-4a9b02ceb52c\",\n\t\t\t\t\"vehicleId\": \"6\",\n\t\t\t\t\"ratingScore\": 5,\n\t\t\t\t\"feedback\": \"good trip\",\n\t\t\t\t\"createdAt\": \"2025-09-08T08:48:34.252+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-09-08T08:48:34.252+00:00\",\n\t\t\t\t\"vehicle\": {\n\t\t\t\t\t\"vehicleId\": \"6\",\n\t\t\t\t\t\"modelId\": null,\n\t\t\t\t\t\"licensePlate\": \"JP-1005\",\n\t\t\t\t\t\"vin\": \"VIN0005MNO\",\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"cameraLink\": null,\n\t\t\t\t\t\"createdAt\": \"2025-08-05T19:30:00.000+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-05T19:30:00.000+00:00\",\n\t\t\t\t\t\"depotId\": null,\n\t\t\t\t\t\"provisioningStatus\": \"C\",\n\t\t\t\t\t\"vehicleWorkNo\": \"11\",\n\t\t\t\t\t\"vehicleTestNo\": \"11\",\n\t\t\t\t\t\"cityCode\": \"SPO\",\n\t\t\t\t\t\"vehicleBrand\": \"Apollo\",\n\t\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\t\"vehicleColor\": \"Red\",\n\t\t\t\t\t\"engineId\": \"ENG1005\",\n\t\t\t\t\t\"approvedPassengerNumber\": 4,\n\t\t\t\t\t\"registrationDate\": \"2025-07-29\",\n\t\t\t\t\t\"vehicleFuelType\": \"Electric\",\n\t\t\t\t\t\"tciCompany\": \"SapporoInsure\",\n\t\t\t\t\t\"tciStartDate\": \"2025-08-05\",\n\t\t\t\t\t\"tciEndDate\": \"2026-08-05\",\n\t\t\t\t\t\"vciCompany\": \"VehicleCare\",\n\t\t\t\t\t\"vciStartDate\": \"2025-08-05\",\n\t\t\t\t\t\"vciEndDate\": \"2026-08-05\",\n\t\t\t\t\t\"fleetId\": null,\n\t\t\t\t\t\"driverId\": null,\n\t\t\t\t\t\"qrUrl\": null,\n\t\t\t\t\t\"qrGeneratedAt\": null\n\t\t\t\t},\n\t\t\t\t\"rideId\": \"R3\",\n\t\t\t\t\"passenger\": {\n\t\t\t\t\t\"passengerId\": \"7f508ad5-913a-4d0b-8c33-4a9b02ceb52c\",\n\t\t\t\t\t\"phone\": \"32323\",\n\t\t\t\t\t\"accountName\": \"TrungNT147\",\n\t\t\t\t\t\"email\": \"trungnt147@fpt.com\",\n\t\t\t\t\t\"address\": null,\n\t\t\t\t\t\"gender\": \"M\",\n\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\"createdStatus\": \"C\",\n\t\t\t\t\t\"avatarUrl\": \"https://kintsugi.blob.core.windows.net/rhp-passenger-dev/promotion-images%2F20250814_093052_422283c9.png\",\n\t\t\t\t\t\"otpRequests\": null,\n\t\t\t\t\t\"totalLoginCount\": null,\n\t\t\t\t\t\"createdAt\": \"2025-07-30T23:23:42.326+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-07-30T23:23:47.828+00:00\",\n\t\t\t\t\t\"totalTrips\": null,\n\t\t\t\t\t\"averageTripRating\": null\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 2,\n\t\t\"totalElements\": 2,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIP_RATINGS, TRIPS, VEHICLES, PASSENGER_ACCOUNT (GET)"]
[null,6,"/admin/statistics/distance","GET","Get total distance report of vehicles. \n+ if only tripId is provided -> \nthe total distance of trip is shown, totalDistanceOfVehicleOnTrip and notOntrip is shown \n+ if only vehicle is provided -> show total distance\nof that vehicle, and show distance on trip and not on trip\n+ if both tripId and vehicleId -> show totalDistanceOnTrip and totalDistanceNotOnTrip of that vehicle, and totalDistanceOfTrip\n+ If do not provide tripId and vehicle -> show totalDistance of all vehicles, and toal distance on trip, not on trip of all vehicles","\"Authorization\": \"Bearer <accessToken>\"","Request Params: \nfromDate (O)=2025-01-03T17:20:00.000+07:00\ntoDate (O)=2025-11-03T17:20:00.000+07:00\nvehicleId (O)=123\ntripId (O)= 123","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n                       \"vehicleId\" (O): \"AV0001\",\n\t\t\t\"totalDistance\" (O): 24.36,\n\t\t\t\"totalDistanceOnTrip\": 1.32,\n\t\t\t\"totalDistanceNotOnTrip\": 23.04,\n                        \"totalDistanceOfTrip\" (O): 123\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","DAILY_DISTANCE_ STATISTIC, TRIP_DISTANCE_STATISTIC(GET)"]
[null,7,"/admin/statistics/totalRevenuePerDay","GET","Get list of total revenue per day (filter by date range)","\"Authorization\": \"Bearer <accessToken>\"","Request Params:\nfromDate (R)=2025-01-03T17:20:00.000+07:00\ntoDate (R)=2025-11-03T17:20:00.000+07:00\ntimezone (IANA zone) (R)=Asia/Ho_Chi_Minh","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"totalRevenue\": 91.43,\n\t\t\t\"date\": \"2025-02-13\"\n\t\t},\n\t\t{\n\t\t\t\"totalRevenue\": 2.0,\n\t\t\t\"date\": \"2025-04-13\"\n\t\t},\n\t\t{\n\t\t\t\"totalRevenue\": 186.86,\n\t\t\t\"date\": \"2025-08-13\"\n\t\t},\n\t\t{\n\t\t\t\"totalRevenue\": 100.0,\n\t\t\t\"date\": \"2025-08-14\"\n\t\t},\n\t\t{\n\t\t\t\"totalRevenue\": 150.0,\n\t\t\t\"date\": \"2025-08-16\"\n\t\t},\n\t\t{\n\t\t\t\"totalRevenue\": 240.0,\n\t\t\t\"date\": \"2025-08-18\"\n\t\t},\n\t\t{\n\t\t\t\"totalRevenue\": 180.0,\n\t\t\t\"date\": \"2025-08-20\"\n\t\t},\n\t\t{\n\t\t\t\"totalRevenue\": 320.0,\n\t\t\t\"date\": \"2025-08-22\"\n\t\t},\n\t\t{\n\t\t\t\"totalRevenue\": 182.86,\n\t\t\t\"date\": \"2025-09-13\"\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Invalid Date Time Format\n- status.code: 3 => Region zone format is not valid\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS, TRIP_ORDERS (GET)"]
[null,8,"/admin/statistics/totalRevenue","GET","Get total revenue","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"totalRevenue\": 1453.15\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS, TRIP_ORDERS (GET)"]
[null,9,"/admin/statistics/searchVehicleOperationStatistics","POST","Get vehicle operation stats (filter by date range, license plate), sort by total distance, total trips, average rating","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n    \"status\": {\n        \"code\": 0,\n        \"message\": \"Success\"\n    },\n    \"data\": {\n        \"elements\": [\n            {\n                \"vehicleId\": \"04375537-9d55-4435-9430-32d70c6878bf\",\n                \"licensePlate\": \"A\",\n                \"totalTrip\": 0,\n                \"totalTripActive\": 0,\n                \"totalTripFinished\": 0,\n                \"totalTripCancelled\": 0,\n                \"totalTripAutoCancelled\": 0,\n                \"totalTripPassengerCancelled\": 0,\n                \"totalTripOperatorCancelled\": 0,\n                \"totalDistance\": 0.0,\n                \"totalDistanceOnTrip\": 0.0,\n                \"totalDistanceNotOnTrip\": 0.0,\n                \"avgRating\": null\n            },\n            {\n                \"vehicleId\": \"04f42547-e555-4f0e-b304-77e6e3b61f51\",\n                \"licensePlate\": \"416373838\",\n                \"totalTrip\": 0,\n                \"totalTripActive\": 0,\n                \"totalTripFinished\": 0,\n                \"totalTripCancelled\": 0,\n                \"totalTripAutoCancelled\": 0,\n                \"totalTripPassengerCancelled\": 0,\n                \"totalTripOperatorCancelled\": 0,\n                \"totalDistance\": 0.0,\n                \"totalDistanceOnTrip\": 0.0,\n                \"totalDistanceNotOnTrip\": 0.0,\n                \"avgRating\": null\n            },\n            {\n                \"vehicleId\": \"0986bffb-9fdd-4add-be44-25be9654eb78\",\n                \"licensePlate\": \"2A5M03260\",\n                \"totalTrip\": 1,\n                \"totalTripActive\": 0,\n                \"totalTripFinished\": 1,\n                \"totalTripCancelled\": 0,\n                \"totalTripAutoCancelled\": 0,\n                \"totalTripPassengerCancelled\": 0,\n                \"totalTripOperatorCancelled\": 0,\n                \"totalDistance\": 0.0,\n                \"totalDistanceOnTrip\": 0.0,\n                \"totalDistanceNotOnTrip\": 0.0,\n                \"avgRating\": null\n            },\n            {\n                \"vehicleId\": \"0c894a47-501a-4de9-973e-06020631a1c9\",\n                \"licensePlate\": \"HGFGTY1456765430\",\n                \"totalTrip\": 0,\n                \"totalTripActive\": 0,\n                \"totalTripFinished\": 0,\n                \"totalTripCancelled\": 0,\n                \"totalTripAutoCancelled\": 0,\n                \"totalTripPassengerCancelled\": 0,\n                \"totalTripOperatorCancelled\": 0,\n                \"totalDistance\": 0.0,\n                \"totalDistanceOnTrip\": 0.0,\n                \"totalDistanceNotOnTrip\": 0.0,\n                \"avgRating\": null\n            },\n            {\n                \"vehicleId\": \"0cf7734b-f605-4ed9-95fa-0f1ede93ff61\",\n                \"licensePlate\": \"864888888888888\",\n                \"totalTrip\": 0,\n                \"totalTripActive\": 0,\n                \"totalTripFinished\": 0,\n                \"totalTripCancelled\": 0,\n                \"totalTripAutoCancelled\": 0,\n                \"totalTripPassengerCancelled\": 0,\n                \"totalTripOperatorCancelled\": 0,\n                \"totalDistance\": 0.0,\n                \"totalDistanceOnTrip\": 0.0,\n                \"totalDistanceNotOnTrip\": 0.0,\n                \"avgRating\": null\n            },\n            {\n                \"vehicleId\": \"11090c88-10ff-4f56-8ae8-8e64b88f3b6e\",\n                \"licensePlate\": \"12345\",\n                \"totalTrip\": 0,\n                \"totalTripActive\": 0,\n                \"totalTripFinished\": 0,\n                \"totalTripCancelled\": 0,\n                \"totalTripAutoCancelled\": 0,\n                \"totalTripPassengerCancelled\": 0,\n                \"totalTripOperatorCancelled\": 0,\n                \"totalDistance\": 0.0,\n                \"totalDistanceOnTrip\": 0.0,\n                \"totalDistanceNotOnTrip\": 0.0,\n                \"avgRating\": null\n            },\n            {\n                \"vehicleId\": \"11e17046-c6b2-4b59-9dfe-43964d481862\",\n                \"licensePlate\": \"422222\",\n                \"totalTrip\": 0,\n                \"totalTripActive\": 0,\n                \"totalTripFinished\": 0,\n                \"totalTripCancelled\": 0,\n                \"totalTripAutoCancelled\": 0,\n                \"totalTripPassengerCancelled\": 0,\n                \"totalTripOperatorCancelled\": 0,\n                \"totalDistance\": 0.0,\n                \"totalDistanceOnTrip\": 0.0,\n                \"totalDistanceNotOnTrip\": 0.0,\n                \"avgRating\": null\n            },\n            {\n                \"vehicleId\": \"13488f62-7598-41c4-aabc-065a51aa4941\",\n                \"licensePlate\": \"3141343235\",\n                \"totalTrip\": 0,\n                \"totalTripActive\": 0,\n                \"totalTripFinished\": 0,\n                \"totalTripCancelled\": 0,\n                \"totalTripAutoCancelled\": 0,\n                \"totalTripPassengerCancelled\": 0,\n                \"totalTripOperatorCancelled\": 0,\n                \"totalDistance\": 0.0,\n                \"totalDistanceOnTrip\": 0.0,\n                \"totalDistanceNotOnTrip\": 0.0,\n                \"avgRating\": null\n            },\n            {\n                \"vehicleId\": \"153bcfc1-9c20-4679-97d2-98090a1ab051\",\n                \"licensePlate\": \"tutwetwetrrrrrrrrwy\",\n                \"totalTrip\": 0,\n                \"totalTripActive\": 0,\n                \"totalTripFinished\": 0,\n                \"totalTripCancelled\": 0,\n                \"totalTripAutoCancelled\": 0,\n                \"totalTripPassengerCancelled\": 0,\n                \"totalTripOperatorCancelled\": 0,\n                \"totalDistance\": 0.0,\n                \"totalDistanceOnTrip\": 0.0,\n                \"totalDistanceNotOnTrip\": 0.0,\n                \"avgRating\": null\n            },\n            {\n                \"vehicleId\": \"25426ba8-84b4-47c9-8d9a-05271e10de6e\",\n                \"licensePlate\": \"pentest5\",\n                \"totalTrip\": 0,\n                \"totalTripActive\": 0,\n                \"totalTripFinished\": 0,\n                \"totalTripCancelled\": 0,\n                \"totalTripAutoCancelled\": 0,\n                \"totalTripPassengerCancelled\": 0,\n                \"totalTripOperatorCancelled\": 0,\n                \"totalDistance\": 0.0,\n                \"totalDistanceOnTrip\": 0.0,\n                \"totalDistanceNotOnTrip\": 0.0,\n                \"avgRating\": null\n            }\n        ],\n        \"pageNumber\": 0,\n        \"pageSize\": 10,\n        \"totalElements\": 561,\n        \"totalPages\": 57,\n        \"last\": false\n    }\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","TRIPS, TRIP_ORDERS, VEHICLES, DAILY_DISTANCE_STATISTIC, TRIP_STATISTIC, TRIP_RATINGS (GET)"]

{"sheet":"API RoutePlan","index":25,"n_rows":18,"n_cols":11,"rows_kept":18,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","RoutePlan API"]
[null,"Description","APIs to get route plan"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-09-12"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-09-12"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[]
[null,"API RoutePlan"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/routePlan/getLatestRoutePlanToDepotByVehicle/{vehicleId}","GET","Get latest back to depot route plan of vehicle by vehicle ID","\"Authorization\": \"Bearer <accessToken>\"","request path: /{vehicleId}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"routeId\": \"2\",\n\t\t\"orderId\": null,\n\t\t\"vehicleId\": \"2\",\n\t\t\"timestamp\": \"2313132312\",\n\t\t\"distance\": 2112,\n\t\t\"duration\": 1312312313,\n\t\t\"steps\": \"[{\\\"name\\\":\\\"Head east\\\",\\\"distance\\\":48,\\\"duration\\\":17,\\\"points\\\":[{\\\"lon\\\":54.4399269,\\\"lat\\\":24.4178431},{\\\"lon\\\":54.43994,\\\"lat\\\":24.41784},{\\\"lon\\\":54.43998,\\\"lat\\\":24.41784},{\\\"lon\\\":54.44015,\\\"lat\\\":24.41779},{\\\"lon\\\":54.44038,\\\"lat\\\":24.41773}]},{\\\"name\\\":\\\"Turn right toward Az Zumurrud St\\\",\\\"distance\\\":13,\\\"duration\\\":60,\\\"points\\\":[{\\\"lon\\\":54.4403844,\\\"lat\\\":24.4177306},{\\\"lon\\\":54.44036,\\\"lat\\\":24.41761}]},{\\\"name\\\":\\\"Turn right onto Az Zumurrud St\\\",\\\"distance\\\":94,\\\"duration\\\":78,\\\"points\\\":[{\\\"lon\\\":54.4403562,\\\"lat\\\":24.4176144},{\\\"lon\\\":54.43993,\\\"lat\\\":24.41773},{\\\"lon\\\":54.43991,\\\"lat\\\":24.41774},{\\\"lon\\\":54.43985,\\\"lat\\\":24.41775},{\\\"lon\\\":54.43975,\\\"lat\\\":24.41778},{\\\"lon\\\":54.4397,\\\"lat\\\":24.41781},{\\\"lon\\\":54.43967,\\\"lat\\\":24.41783},{\\\"lon\\\":54.43964,\\\"lat\\\":24.41785},{\\\"lon\\\":54.43962,\\\"lat\\\":24.41788},{\\\"lon\\\":54.43956,\\\"lat\\\":24.41798}]},{\\\"name\\\":\\\"Turn right onto Al Mu-Atamarat St\\\",\\\"distance\\\":105,\\\"duration\\\":32,\\\"points\\\":[{\\\"lon\\\":54.4395591,\\\"lat\\\":24.4179777},{\\\"lon\\\":54.43972,\\\"lat\\\":24.41827},{\\\"lon\\\":54.44004,\\\"lat\\\":24.41881}]},{\\\"name\\\":\\\"At the roundabout, take the 2nd exit and stay on Al Mu-Atamarat St\\\",\\\"distance\\\":276,\\\"duration\\\":74,\\\"points\\\":[{\\\"lon\\\":54.4400434,\\\"lat\\\":24.4188111},{\\\"lon\\\":54.44014,\\\"lat\\\":24.41884},{\\\"lon\\\":54.44018,\\\"lat\\\":24.41885},{\\\"lon\\\":54.44024,\\\"lat\\\":24.41888},{\\\"lon\\\":54.4403,\\\"lat\\\":24.41896},{\\\"lon\\\":54.44032,\\\"lat\\\":24.41899},{\\\"lon\\\":54.44034,\\\"lat\\\":24.41902},{\\\"lon\\\":54.44035,\\\"lat\\\":24.41906},{\\\"lon\\\":54.44036,\\\"lat\\\":24.4191},{\\\"lon\\\":54.44037,\\\"lat\\\":24.41913},{\\\"lon\\\":54.44036,\\\"lat\\\":24.41921},{\\\"lon\\\":54.44036,\\\"lat\\\":24.41926},{\\\"lon\\\":54.44034,\\\"lat\\\":24.41929},{\\\"lon\\\":54.44032,\\\"lat\\\":24.41932},{\\\"lon\\\":54.44031,\\\"lat\\\":24.41934},{\\\"lon\\\":54.44029,\\\"lat\\\":24.41936},{\\\"lon\\\":54.44028,\\\"lat\\\":24.41938},{\\\"lon\\\":54.44024,\\\"lat\\\":24.41941},{\\\"lon\\\":54.44016,\\\"lat\\\":24.41946},{\\\"lon\\\":54.44023,\\\"lat\\\":24.4198},{\\\"lon\\\":54.4403,\\\"lat\\\":24.4202},{\\\"lon\\\":54.44038,\\\"lat\\\":24.42099},{\\\"lon\\\":54.44039,\\\"lat\\\":24.42105}]},{\\\"name\\\":\\\"Turn right onto President Joko Widodo St\\\",\\\"distance\\\":391,\\\"duration\\\":67,\\\"points\\\":[{\\\"lon\\\":54.44039129999999,\\\"lat\\\":24.4210487},{\\\"lon\\\":54.44046,\\\"lat\\\":24.42111},{\\\"lon\\\":54.44051,\\\"lat\\\":24.42115},{\\\"lon\\\":54.44054,\\\"lat\\\":24.42118},{\\\"lon\\\":54.44056,\\\"lat\\\":24.42119},{\\\"lon\\\":54.44059,\\\"lat\\\":24.4212},{\\\"lon\\\":54.44061,\\\"lat\\\":24.42121},{\\\"lon\\\":54.44064,\\\"lat\\\":24.42121},{\\\"lon\\\":54.44067,\\\"lat\\\":24.42122},{\\\"lon\\\":54.44072,\\\"lat\\\":24.42122},{\\\"lon\\\":54.44075,\\\"lat\\\":24.42123},{\\\"lon\\\":54.4408,\\\"lat\\\":24.42125},{\\\"lon\\\":54.4416,\\\"lat\\\":24.42114},{\\\"lon\\\":54.44251,\\\"lat\\\":24.42101},{\\\"lon\\\":54.44304,\\\"lat\\\":24.42094},{\\\"lon\\\":54.44378,\\\"lat\\\":24.42083},{\\\"lon\\\":54.44414,\\\"lat\\\":24.42078}]},{\\\"name\\\":\\\"Turn left onto Tunb Al Kubra St (signs for Zayed Sports City)\\\",\\\"distance\\\":555,\\\"duration\\\":84,\\\"points\\\":[{\\\"lon\\\":54.4441396,\\\"lat\\\":24.4207794},{\\\"lon\\\":54.44424,\\\"lat\\\":24.42075},{\\\"lon\\\":54.44433,\\\"lat\\\":24.42074},{\\\"lon\\\":54.44433,\\\"lat\\\":24.42076},{\\\"lon\\\":54.44433,\\\"lat\\\":24.4208},{\\\"lon\\\":54.44433,\\\"lat\\\":24.4209},{\\\"lon\\\":54.44436,\\\"lat\\\":24.42104},{\\\"lon\\\":54.44438,\\\"lat\\\":24.42114},{\\\"lon\\\":54.44461,\\\"lat\\\":24.42274},{\\\"lon\\\":54.44475,\\\"lat\\\":24.4235},{\\\"lon\\\":54.44485,\\\"lat\\\":24.42414},{\\\"lon\\\":54.44487,\\\"lat\\\":24.42425},{\\\"lon\\\":54.44495,\\\"lat\\\":24.42462},{\\\"lon\\\":54.44499,\\\"lat\\\":24.42473},{\\\"lon\\\":54.44504,\\\"lat\\\":24.42484},{\\\"lon\\\":54.44514,\\\"lat\\\":24.425},{\\\"lon\\\":54.44526,\\\"lat\\\":24.42515},{\\\"lon\\\":54.44537,\\\"lat\\\":24.42531},{\\\"lon\\\":54.44545,\\\"lat\\\":24.42538}]},{\\\"name\\\":\\\"At the roundabout, take the 3rd exit onto Sultan Bin Zayed The First St\\\",\\\"distance\\\":1172,\\\"duration\\\":117,\\\"points\\\":[{\\\"lon\\\":54.4454483,\\\"lat\\\":24.4253782},{\\\"lon\\\":54.4455,\\\"lat\\\":24.42539},{\\\"lon\\\":54.44554,\\\"lat\\\":24.4254},{\\\"lon\\\":54.44558,\\\"lat\\\":24.42542},{\\\"lon\\\":54.44563,\\\"lat\\\":24.42544},{\\\"lon\\\":54.44567,\\\"lat\\\":24.42546},{\\\"lon\\\":54.44571,\\\"lat\\\":24.42548},{\\\"lon\\\":54.44575,\\\"lat\\\":24.42551},{\\\"lon\\\":54.44579,\\\"lat\\\":24.42554},{\\\"lon\\\":54.44588,\\\"lat\\\":24.42563},{\\\"lon\\\":54.44596,\\\"lat\\\":24.42574},{\\\"lon\\\":54.44603,\\\"lat\\\":24.42585},{\\\"lon\\\":54.44608,\\\"lat\\\":24.42598},{\\\"lon\\\":54.44609,\\\"lat\\\":24.42604},{\\\"lon\\\":54.4461,\\\"lat\\\":24.42611},{\\\"lon\\\":54.4461,\\\"lat\\\":24.42615},{\\\"lon\\\":54.44611,\\\"lat\\\":24.42625},{\\\"lon\\\":54.44609,\\\"lat\\\":24.42638},{\\\"lon\\\":54.44605,\\\"lat\\\":24.42651},{\\\"lon\\\":54.44604,\\\"lat\\\":24.42653},{\\\"lon\\\":54.44601,\\\"lat\\\":24.42658},{\\\"lon\\\":54.44597,\\\"lat\\\":24.42665},{\\\"lon\\\":54.44589,\\\"lat\\\":24.42674},{\\\"lon\\\":54.44588,\\\"lat\\\":24.42676},{\\\"lon\\\":54.44582,\\\"lat\\\":24.42681},{\\\"lon\\\":54.44576,\\\"lat\\\":24.42687},{\\\"lon\\\":54.4457,\\\"lat\\\":24.42691},{\\\"lon\\\":54.44563,\\\"lat\\\":24.42696},{\\\"lon\\\":54.44556,\\\"lat\\\":24.42699},{\\\"lon\\\":54.44549,\\\"lat\\\":24.42702},{\\\"lon\\\":54.44541,\\\"lat\\\":24.42704},{\\\"lon\\\":54.44508,\\\"lat\\\":24.42707},{\\\"lon\\\":54.44479,\\\"lat\\\":24.42718},{\\\"lon\\\":54.44471,\\\"lat\\\":24.42721},{\\\"lon\\\":54.44465,\\\"lat\\\":24.42724},{\\\"lon\\\":54.44457,\\\"lat\\\":24.4273},{\\\"lon\\\":54.44455,\\\"lat\\\":24.42732},{\\\"lon\\\":54.44449,\\\"lat\\\":24.42737},{\\\"lon\\\":54.44438,\\\"lat\\\":24.42751},{\\\"lon\\\":54.44416,\\\"lat\\\":24.42779},{\\\"lon\\\":54.44364,\\\"lat\\\":24.42845},{\\\"lon\\\":54.44307,\\\"lat\\\":24.4292},{\\\"lon\\\":54.44287,\\\"lat\\\":24.42954},{\\\"lon\\\":54.44258,\\\"lat\\\":24.42991},{\\\"lon\\\":54.442,\\\"lat\\\":24.43065},{\\\"lon\\\":54.44169,\\\"lat\\\":24.43103},{\\\"lon\\\":54.44131,\\\"lat\\\":24.43142},{\\\"lon\\\":54.44125,\\\"lat\\\":24.43148},{\\\"lon\\\":54.4411,\\\"lat\\\":24.43161},{\\\"lon\\\":54.44104,\\\"lat\\\":24.43166},{\\\"lon\\\":54.44087,\\\"lat\\\":24.4318},{\\\"lon\\\":54.44064,\\\"lat\\\":24.43196},{\\\"lon\\\":54.44031,\\\"lat\\\":24.43217},{\\\"lon\\\":54.4402,\\\"lat\\\":24.43222},{\\\"lon\\\":54.43991,\\\"lat\\\":24.4324},{\\\"lon\\\":54.43968,\\\"lat\\\":24.43249},{\\\"lon\\\":54.43954,\\\"lat\\\":24.43255},{\\\"lon\\\":54.43913,\\\"lat\\\":24.43274}]},{\\\"name\\\":\\\"Turn right onto Dhafeer St\\\",\\\"distance\\\":1230,\\\"duration\\\":126,\\\"points\\\":[{\\\"lon\\\":54.4391274,\\\"lat\\\":24.4327423},{\\\"lon\\\":54.43892,\\\"lat\\\":24.43288},{\\\"lon\\\":54.43883,\\\"lat\\\":24.43295},{\\\"lon\\\":54.43877,\\\"lat\\\":24.433},{\\\"lon\\\":54.43871,\\\"lat\\\":24.43307},{\\\"lon\\\":54.43863,\\\"lat\\\":24.43316},{\\\"lon\\\":54.43869,\\\"lat\\\":24.43352},{\\\"lon\\\":54.43875,\\\"lat\\\":24.43388},{\\\"lon\\\":54.43877,\\\"lat\\\":24.43401},{\\\"lon\\\":54.43881,\\\"lat\\\":24.43427},{\\\"lon\\\":54.43882,\\\"lat\\\":24.43436},{\\\"lon\\\":54.43896,\\\"lat\\\":24.43529},{\\\"lon\\\":54.43899,\\\"lat\\\":24.4354},{\\\"lon\\\":54.43901,\\\"lat\\\":24.43552},{\\\"lon\\\":54.43904,\\\"lat\\\":24.43563},{\\\"lon\\\":54.43906,\\\"lat\\\":24.43575},{\\\"lon\\\":54.4391,\\\"lat\\\":24.43602},{\\\"lon\\\":54.4391,\\\"lat\\\":24.43607},{\\\"lon\\\":54.43911,\\\"lat\\\":24.43613},{\\\"lon\\\":54.43919,\\\"lat\\\":24.43653},{\\\"lon\\\":54.4392,\\\"lat\\\":24.43662},{\\\"lon\\\":54.43923,\\\"lat\\\":24.43679},{\\\"lon\\\":54.43924,\\\"lat\\\":24.43685},{\\\"lon\\\":54.43926,\\\"lat\\\":24.437},{\\\"lon\\\":54.43928,\\\"lat\\\":24.43712},{\\\"lon\\\":54.43935,\\\"lat\\\":24.43757},{\\\"lon\\\":54.43941,\\\"lat\\\":24.4379},{\\\"lon\\\":54.43946,\\\"lat\\\":24.43819},{\\\"lon\\\":54.43948,\\\"lat\\\":24.43832},{\\\"lon\\\":54.43949,\\\"lat\\\":24.43837},{\\\"lon\\\":54.43968,\\\"lat\\\":24.4396},{\\\"lon\\\":54.43977,\\\"lat\\\":24.44002},{\\\"lon\\\":54.43983,\\\"lat\\\":24.44034},{\\\"lon\\\":54.43992,\\\"lat\\\":24.44086},{\\\"lon\\\":54.44002,\\\"lat\\\":24.44144},{\\\"lon\\\":54.44014,\\\"lat\\\":24.44212},{\\\"lon\\\":54.44016,\\\"lat\\\":24.44227},{\\\"lon\\\":54.44019,\\\"lat\\\":24.44244},{\\\"lon\\\":54.44021,\\\"lat\\\":24.44255},{\\\"lon\\\":54.44024,\\\"lat\\\":24.44278},{\\\"lon\\\":54.44031,\\\"lat\\\":24.44321},{\\\"lon\\\":54.44031,\\\"lat\\\":24.44327},{\\\"lon\\\":54.44034,\\\"lat\\\":24.44348}]},{\\\"name\\\":\\\"Turn right (signs for Shk. Zayed Bridge/E10/Dubai/Airport)\\\",\\\"distance\\\":747,\\\"duration\\\":57,\\\"points\\\":[{\\\"lon\\\":54.4403356,\\\"lat\\\":24.4434838},{\\\"lon\\\":54.44041,\\\"lat\\\":24.44362},{\\\"lon\\\":54.44046,\\\"lat\\\":24.44368},{\\\"lon\\\":54.44052,\\\"lat\\\":24.44372},{\\\"lon\\\":54.4406,\\\"lat\\\":24.44377},{\\\"lon\\\":54.44085,\\\"lat\\\":24.44386},{\\\"lon\\\":54.44107,\\\"lat\\\":24.44384},{\\\"lon\\\":54.4414,\\\"lat\\\":24.44375},{\\\"lon\\\":54.44151,\\\"lat\\\":24.4437},{\\\"lon\\\":54.44162,\\\"lat\\\":24.44365},{\\\"lon\\\":54.44164,\\\"lat\\\":24.44365},{\\\"lon\\\":54.44167,\\\"lat\\\":24.44363},{\\\"lon\\\":54.44178,\\\"lat\\\":24.44357},{\\\"lon\\\":54.44188,\\\"lat\\\":24.44351},{\\\"lon\\\":54.442,\\\"lat\\\":24.44344},{\\\"lon\\\":54.44216,\\\"lat\\\":24.44337},{\\\"lon\\\":54.4423,\\\"lat\\\":24.44332},{\\\"lon\\\":54.44232,\\\"lat\\\":24.44332},{\\\"lon\\\":54.44236,\\\"lat\\\":24.4433},{\\\"lon\\\":54.44241,\\\"lat\\\":24.44328},{\\\"lon\\\":54.44248,\\\"lat\\\":24.44327},{\\\"lon\\\":54.44264,\\\"lat\\\":24.44323},{\\\"lon\\\":54.44288,\\\"lat\\\":24.44316},{\\\"lon\\\":54.44314,\\\"lat\\\":24.44311},{\\\"lon\\\":54.44379,\\\"lat\\\":24.44292},{\\\"lon\\\":54.44456,\\\"lat\\\":24.44273},{\\\"lon\\\":54.44466,\\\"lat\\\":24.44271},{\\\"lon\\\":54.44516,\\\"lat\\\":24.44261},{\\\"lon\\\":54.44549,\\\"lat\\\":24.44257},{\\\"lon\\\":54.44572,\\\"lat\\\":24.44253},{\\\"lon\\\":54.44598,\\\"lat\\\":24.44247},{\\\"lon\\\":54.44688,\\\"lat\\\":24.44221},{\\\"lon\\\":54.44696,\\\"lat\\\":24.44221},{\\\"lon\\\":54.44723,\\\"lat\\\":24.44226}]},{\\\"name\\\":\\\"Merge onto Sheikh Zayed Bin Sultan St/E10\\\",\\\"distance\\\":601,\\\"duration\\\":26,\\\"points\\\":[{\\\"lon\\\":54.447231,\\\"lat\\\":24.4422642},{\\\"lon\\\":54.44789,\\\"lat\\\":24.44209},{\\\"lon\\\":54.44854,\\\"lat\\\":24.44191},{\\\"lon\\\":54.44894,\\\"lat\\\":24.44179},{\\\"lon\\\":54.44933,\\\"lat\\\":24.44167},{\\\"lon\\\":54.44961,\\\"lat\\\":24.44158},{\\\"lon\\\":54.44967,\\\"lat\\\":24.44156},{\\\"lon\\\":54.45135,\\\"lat\\\":24.44099},{\\\"lon\\\":54.45283,\\\"lat\\\":24.44048}]},{\\\"name\\\":\\\"Take the exit toward Khalifa Park/Ministries Complex\\\",\\\"distance\\\":387,\\\"duration\\\":21,\\\"points\\\":[{\\\"lon\\\":54.4528312,\\\"lat\\\":24.4404797},{\\\"lon\\\":54.45283,\\\"lat\\\":24.44045},{\\\"lon\\\":54.45284,\\\"lat\\\":24.44042},{\\\"lon\\\":54.45286,\\\"lat\\\":24.44039},{\\\"lon\\\":54.45289,\\\"lat\\\":24.44037},{\\\"lon\\\":54.45292,\\\"lat\\\":24.44035},{\\\"lon\\\":54.45295,\\\"lat\\\":24.44033},{\\\"lon\\\":54.45298,\\\"lat\\\":24.44032},{\\\"lon\\\":54.453,\\\"lat\\\":24.44031},{\\\"lon\\\":54.45322,\\\"lat\\\":24.44022},{\\\"lon\\\":54.4534,\\\"lat\\\":24.44015},{\\\"lon\\\":54.45373,\\\"lat\\\":24.44},{\\\"lon\\\":54.4538,\\\"lat\\\":24.43997},{\\\"lon\\\":54.45437,\\\"lat\\\":24.43972},{\\\"lon\\\":54.45514,\\\"lat\\\":24.43935},{\\\"lon\\\":54.45546,\\\"lat\\\":24.43921},{\\\"lon\\\":54.45581,\\\"lat\\\":24.43903},{\\\"lon\\\":54.45606,\\\"lat\\\":24.4389},{\\\"lon\\\":54.45617,\\\"lat\\\":24.43885}]},{\\\"name\\\":\\\"Take the ramp to Al Murouj St St\\\",\\\"distance\\\":238,\\\"duration\\\":18,\\\"points\\\":[{\\\"lon\\\":54.4561741,\\\"lat\\\":24.4388487},{\\\"lon\\\":54.45661,\\\"lat\\\":24.43862},{\\\"lon\\\":54.45729,\\\"lat\\\":24.43827},{\\\"lon\\\":54.4575,\\\"lat\\\":24.43816},{\\\"lon\\\":54.45819,\\\"lat\\\":24.43775}]},{\\\"name\\\":\\\"Slight right onto the ramp to Al Murouj St St\\\",\\\"distance\\\":11,\\\"duration\\\":2,\\\"points\\\":[{\\\"lon\\\":54.4581945,\\\"lat\\\":24.4377525},{\\\"lon\\\":54.45827,\\\"lat\\\":24.43768}]},{\\\"name\\\":\\\"Take the ramp to Khalifa Park/Ministries Complex\\\",\\\"distance\\\":59,\\\"duration\\\":5,\\\"points\\\":[{\\\"lon\\\":54.4582715,\\\"lat\\\":24.4376835},{\\\"lon\\\":54.45833,\\\"lat\\\":24.43761},{\\\"lon\\\":54.45838,\\\"lat\\\":24.43757},{\\\"lon\\\":54.4584,\\\"lat\\\":24.43755},{\\\"lon\\\":54.45842,\\\"lat\\\":24.43752},{\\\"lon\\\":54.45844,\\\"lat\\\":24.43749},{\\\"lon\\\":54.45846,\\\"lat\\\":24.43747},{\\\"lon\\\":54.45847,\\\"lat\\\":24.43744},{\\\"lon\\\":54.45847,\\\"lat\\\":24.43741},{\\\"lon\\\":54.45847,\\\"lat\\\":24.43739},{\\\"lon\\\":54.45847,\\\"lat\\\":24.43736},{\\\"lon\\\":54.45847,\\\"lat\\\":24.43734},{\\\"lon\\\":54.45846,\\\"lat\\\":24.43731},{\\\"lon\\\":54.45846,\\\"lat\\\":24.43728},{\\\"lon\\\":54.45845,\\\"lat\\\":24.43721}]},{\\\"name\\\":\\\"Merge onto Al Murouj St St\\\",\\\"distance\\\":270,\\\"duration\\\":26,\\\"points\\\":[{\\\"lon\\\":54.4584456,\\\"lat\\\":24.4372124},{\\\"lon\\\":54.45825,\\\"lat\\\":24.43701},{\\\"lon\\\":54.45803,\\\"lat\\\":24.43677},{\\\"lon\\\":54.45766,\\\"lat\\\":24.4364},{\\\"lon\\\":54.45671,\\\"lat\\\":24.43537}]},{\\\"name\\\":\\\"Turn right\\\",\\\"distance\\\":17,\\\"duration\\\":10,\\\"points\\\":[{\\\"lon\\\":54.45670579999999,\\\"lat\\\":24.4353735},{\\\"lon\\\":54.45655,\\\"lat\\\":24.43541}]},{\\\"name\\\":\\\"Turn left\\\",\\\"distance\\\":34,\\\"duration\\\":17,\\\"points\\\":[{\\\"lon\\\":54.45654529999999,\\\"lat\\\":24.4354102},{\\\"lon\\\":54.45644,\\\"lat\\\":24.4353},{\\\"lon\\\":54.45633,\\\"lat\\\":24.43518}]},{\\\"name\\\":\\\"Turn rightDestination will be on the left\\\",\\\"distance\\\":58,\\\"duration\\\":88,\\\"points\\\":[{\\\"lon\\\":54.4563292,\\\"lat\\\":24.4351803},{\\\"lon\\\":54.45622,\\\"lat\\\":24.43525},{\\\"lon\\\":54.45607,\\\"lat\\\":24.43535},{\\\"lon\\\":54.45598,\\\"lat\\\":24.43542},{\\\"lon\\\":54.45597,\\\"lat\\\":24.43543},{\\\"lon\\\":54.45595,\\\"lat\\\":24.43543},{\\\"lon\\\":54.45594,\\\"lat\\\":24.43543},{\\\"lon\\\":54.45593,\\\"lat\\\":24.43543},{\\\"lon\\\":54.45592,\\\"lat\\\":24.43543},{\\\"lon\\\":54.45591,\\\"lat\\\":24.43542},{\\\"lon\\\":54.4559,\\\"lat\\\":24.43542},{\\\"lon\\\":54.45589,\\\"lat\\\":24.43541},{\\\"lon\\\":54.45587,\\\"lat\\\":24.4354},{\\\"lon\\\":54.45586,\\\"lat\\\":24.43539},{\\\"lon\\\":54.4558601,\\\"lat\\\":24.4353857}]},{\\\"name\\\":\\\"Head\\\",\\\"distance\\\":0,\\\"duration\\\":0,\\\"points\\\":[{\\\"lon\\\":54.4558601,\\\"lat\\\":24.4353857}]}]\",\n\t\t\"createdAt\": \"2025-09-11T12:42:33.654+00:00\",\n\t\t\"modifiedAt\": \"2025-09-11T12:42:33.654+00:00\"\n\t}\n}","HTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Route Plan Not Found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ROUTE_PLAN (GET)"]

{"sheet":"API MapBox","index":26,"n_rows":23,"n_cols":11,"rows_kept":23,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","MapBox API"]
[null,"Description","APIs that call to mapbox platform such as places autocomplete, finding route between 2 coordinates"]
[null,"Created User","TrungNT147@fpt.com"]
[null,"Created Date","2025-09-10"]
[null,"Updated User","TrungNT147@fpt.com"]
[null,"Updated Date","2025-09-10"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[]
[null,"API MapBox"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/mapbox/places/autocomplete","POST","Search addresses autocompletely using MapBox Platform - Places API (new).\n","\"Authorization\": \"Bearer <accessToken>\"","\"Authorization\": \"Bearer <accessToken>\"","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"suggestions\": [\n\t\t\t{\n\t\t\t\t\"mapboxId\": \"dXJuOm1ieHJldDo2cEJoSENBeThSUDNYMWppdHI1TlVKaWJDWDYyQlJqZkxQX1ZrYmdZMS1nQWRSRk1veDlscGhLY0RGNU5UdlZ4ZDFjY0dXZUFFSzNyeE5jaFc5VDZpS01rZ0otNFhyYnl1VjliU3dxVWlVdGI0elN6VzgzV2tsQ2sza2JxWHRPZVVseXBockF2UGZYYXpIM1VJSFVYWHpSN3h4SGtxT2JaREFnVWl4WmxRal83OVlqSC1lQURKVGktYTVMVTVGT3ZDcV81cWlZRkp3UlYtSnloX3BVQ29OV3NQdE1HRUhQVTN0MVB1Qy04dHd4Z29jakh3Rm1scUZQano4dkxiUlZ6My1KcVU4LWwtMFBvMDFtS19VZnNfVzdwU2JjVHZTVDdJUFEzR2RaZlJ4dDAydjR0NTJMQXdPY1BiRHJnQ2RnSTEyQ3Z2aGNoNVdSWUlOQmtpb1JHMUNqT3E0T3ktRlBVaVJWOHlTZlQ3MXI5WDBBbkhOTl9fMTBrYmlDWW9nTUxOdGlRSHJyQWdJam96TkowbnJJU3pwN2ZEVjMtZi14UWdnN3pJRE5XeHFRSmVEdlYzc0lnWTNtOGxDdnRySGluSlgxd2tWMkNoTmZESG13TkZlSER4NXFWOXdDMGxNSEc3YzJ2dklLMEVrSUJTazgySnN0NjEtamJoWnVYVU9PV3pvZXJzbEpwR3FxeGxrV1VSZUk2NzVDN0dGRi1pTkVHUVFZOV9vZUdzcWprdHMyQlp1Q0lCeGFDbjd5LVpUV2JlYW0yWk9MT0Y1RENWQmctdVVvb1g2Sjl2LThPcmkwdExrMDBwc0F0cTltYkM4X1hYZ1J6UW9zLTBEM081bEluQjFkQVJjMDlHeFJsT2ZTZ3JkbXBYemYxYzQ3YS1BVkMyRXpuUVVTd1lhNWZVQi13NDd3clRXbGZhc0pTeTFGeVpXZVA4bXNJYThWQUtPdTl1VXBXR2JyQkdyampYYTlIT0cwaUE0SVpVVGdiTHJqcnlRMWFPWlNpcW9kbWQ4cWs4dGY1REEwLVA3YkU0SENMaGpZYlpKOHJsc2VaX2RiRHdRVWROMWV6MG1ULWpGS05IZXpydXhINl95Y0NfZHdJUW8xSnZ5d2JHalZDZzhnYm1INk5nV3dBQW55YmZ4Z0dubkZoeTJKcGU4OGotR0t5dzdsd1ZEVHJ0MTc1eVItNDg5TGhTYkJEWmJpTW0zRkRiX1h0U2NBM3pGcnNzWjh3WjdmUm5qNVN3ZGVpYXRtcDdpWXp4VHRNendDSEt0bHlRWS00Q01lTDRLaEhpbE1pOElVcFdOXzlzSWpPRzZzVVBIbGtkMkUxa3dLOFk0YlRMSGo5aVVJeFJhUWVNOUUwQjlqUFpTVHdRQ1ZLQnNnZHNXU01OdGJaRzF3TThOTkFDbWkxRm1DVl9BdzNseWhqSzk3MmhjWlk1M1lBRGRIUVFlR0NLNy1FOGVqM05KekV0dzJzcjdqbm40Mk1hQUE4WDA2dXpXV24xcmN3REdZNWlqZnlPdTBvTnI1YmV2a2hYZ2dlTW1Ob3BWZUFMVFpPT1FtUDBMRDdIR1dlVVJUYjFqRnl3TXY3TGNzcTRRYUlCLXZxQldnNmxoLXdwOC1iUEZQM21SWE92X3Q3TG80NGdKLTBoWjNJRF9Xc3B5OTFYSGZLY0pqSFpEdEZVSjFONnBfbG5Lb0JqLXB4NS1jZXBkd2FaX0dTMjFxSm5RckRjTjctbWJEVGc4aVZENXRlMmRqbzNSdlhXY1AtRHQ1YVpmZFBNZXJBYmgxZ1BpY0lxbGRZX0ZqQVl4UWsyeTYtVDd1djFvS25iUjRBU2lXNkM3UFNkQW1qbjlTemw1aEhPYU5kZ3A0SXoyRUZ2WF9IdXJ1eUFhODlXa2hTMWNLdUZnS21RSGJ2YmxtckZ3ZUFBNWdFSjBOUE5Yd2FSM1lLWVdxeTMyVEpxWUwwbWM3UzJMeTZWZzVER0Q1SUFLeHNRbHpfNElIbENGdlAzakFXSjhzaWtvWmpTd0ExaFlTU1RIbS1TeDdiZkQxbXJDSGhSVTdDekhTNUlfSjBXNjdaSmliNU5NR0xOd0lpc1pXR1hpNmUxMUx0Q05PSVUzNWN4QWNERl8tQkJQRnFQeXNOdW5fY210ZXNJa0lUR0pYdFlDZVhQa3prQkJSdnoyMFg3LXNTeVdEQmpvUGd5eTZVMXZnNEFGaDFIS1lGbFJGaV95Ym5iV2lyclFDaHFGd2lENzhvWGRGOFRRRFFDR2IxS1gzU2VvRk5TZG5hNjBtTXNiTHFGQ29uU21mT0JPQjhYamNvV3ZuV1VNMHRwal9uVTJLeHZwMHdaVGI5dUxfRXN6Uzdqb0JjM3I1UG9FVmc1Y2M2TlFTNVRmQ2wxOGdnOERHNlNoV090UkpuNVBmSy04OGRjbFVIMnZ1V2l1Z0NmTUtaemZxVzR6NU5sNUFfQnpabkVwLXJZNkZuRVNWWW92Z09IOGhJSk91SExrNjJLcndkdmNpM2RJbnFuVHRGXzViZ2RuZzJqNTJGWTRtWlZFblRENUtvWC1mbnQ5YWpnbmFZQVVLV3dkekJRZXU1em1jTW1FRXNGU1Q0eTNxbXNNR3hOOHQxRS1tekNSU3hZLS1adWhyWGxRdDdiczRmNkVqdGN5RzNZaUlNUXZFdjl0ZDViTjJxbVdmcFk4cnk3TF8zVGpQVm9kTXozcEp2UTNtS3lGdmhjNWNleVNleFZaOUtSd0t4UlBNeGhXQzBxQmdsMFQ2Q0NLSER4Q1pYLWg2M2FKUTBQZjNZeUs2WjcwQnQ1WnpVOFh2VEVRWVk2LXBDMkxBNjY1UXNqRUtDVm16LUF6OUJRd2E5N19qVGg3bzRNTmRON0h0N0ZZOHJBNEtGXy1QeXJKYXAteThYc05abEJKX3lpQ0FNWTNkUVBBSnliNU53LWp0cDdac0piaTRSeEZMbThiZDNFbGtDblM5R095SF9KVi11eVNJPQ==\",\n\t\t\t\t\"name\": \"Starbucks\",\n\t\t\t\t\"namePreferred\": null,\n\t\t\t\t\"nameLocal\": null,\n\t\t\t\t\"matchingName\": null,\n\t\t\t\t\"placeFormatted\": \"Brand\",\n\t\t\t\t\"address\": null,\n\t\t\t\t\"featureType\": \"brand\",\n\t\t\t\t\"coordinates\": null,\n\t\t\t\t\"context\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": null,\n\t\t\t\t\t\t\"name\": null,\n\t\t\t\t\t\t\"shortCode\": null\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"externalIds\": {\n\t\t\t\t\t\"federated\": \"brand.starbucks\"\n\t\t\t\t},\n\t\t\t\t\"language\": \"en\",\n\t\t\t\t\"maki\": null\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBvaTplYTFlMmI3Yi1mYjU4LTQzZDYtYmM2Ni04YTYyMWNlZGYzYWI\",\n\t\t\t\t\"name\": \"Starbucks\",\n\t\t\t\t\"namePreferred\": null,\n\t\t\t\t\"nameLocal\": null,\n\t\t\t\t\"matchingName\": null,\n\t\t\t\t\"placeFormatted\": \"Seattle, Washington 98101, United States\",\n\t\t\t\t\"address\": \"1912 Pike Place\",\n\t\t\t\t\"featureType\": \"poi\",\n\t\t\t\t\"coordinates\": null,\n\t\t\t\t\"context\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": null,\n\t\t\t\t\t\t\"name\": null,\n\t\t\t\t\t\t\"shortCode\": null\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"externalIds\": {\n\t\t\t\t\t\"golden\": \"starbucks-301\",\n\t\t\t\t\t\"dataplor\": \"53cb8a32-d34a-49f4-8d8d-4bf7747c82a2\"\n\t\t\t\t},\n\t\t\t\t\"language\": \"en\",\n\t\t\t\t\"maki\": \"bakery\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBvaTo4OGI5ZDYwNS04ZGNlLTQ0OTYtODE2Ny1kMjBlNGQ2ZmNlYjA\",\n\t\t\t\t\"name\": \"Starbucks\",\n\t\t\t\t\"namePreferred\": null,\n\t\t\t\t\"nameLocal\": null,\n\t\t\t\t\"matchingName\": null,\n\t\t\t\t\"placeFormatted\": \"Tacoma, Washington 98408, United States\",\n\t\t\t\t\"address\": \"1723 South 72nd Street\",\n\t\t\t\t\"featureType\": \"poi\",\n\t\t\t\t\"coordinates\": null,\n\t\t\t\t\"context\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": null,\n\t\t\t\t\t\t\"name\": null,\n\t\t\t\t\t\t\"shortCode\": null\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"externalIds\": {\n\t\t\t\t\t\"golden\": \"starbucks-312\",\n\t\t\t\t\t\"dataplor\": \"8dd1d6dc-e59f-4612-a485-6a581385b0cb\"\n\t\t\t\t},\n\t\t\t\t\"language\": \"en\",\n\t\t\t\t\"maki\": \"bakery\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBvaTo3ZjAwZGUwNy1iMTYxLTRhNDEtODYwOS0zY2ViNDEwMjYzNzU\",\n\t\t\t\t\"name\": \"Starbucks\",\n\t\t\t\t\"namePreferred\": null,\n\t\t\t\t\"nameLocal\": null,\n\t\t\t\t\"matchingName\": null,\n\t\t\t\t\"placeFormatted\": \"Ho Chi Minh City, 72400, Vietnam\",\n\t\t\t\t\"address\": \"241Bis Đ. Cách Mạng Tháng 8\",\n\t\t\t\t\"featureType\": \"poi\",\n\t\t\t\t\"coordinates\": null,\n\t\t\t\t\"context\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": null,\n\t\t\t\t\t\t\"name\": null,\n\t\t\t\t\t\t\"shortCode\": null\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"externalIds\": {\n\t\t\t\t\t\"dataplor\": \"b5222461-683a-41c0-b8da-d231908c7e3b\"\n\t\t\t\t},\n\t\t\t\t\"language\": \"en\",\n\t\t\t\t\"maki\": \"cafe\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBvaTpiNDQ2YTM3OS1kN2E0LTQzOTQtODc2Yy05MmZiNjdmMGVjM2Y\",\n\t\t\t\t\"name\": \"Starbucks\",\n\t\t\t\t\"namePreferred\": null,\n\t\t\t\t\"nameLocal\": null,\n\t\t\t\t\"matchingName\": null,\n\t\t\t\t\"placeFormatted\": \"Fresno, California 93726, United States\",\n\t\t\t\t\"address\": \"4171 East Ashlan Avenue\",\n\t\t\t\t\"featureType\": \"poi\",\n\t\t\t\t\"coordinates\": null,\n\t\t\t\t\"context\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": null,\n\t\t\t\t\t\t\"name\": null,\n\t\t\t\t\t\t\"shortCode\": null\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"externalIds\": {\n\t\t\t\t\t\"golden\": \"starbucks-6811\",\n\t\t\t\t\t\"dataplor\": \"cb9572f8-aef7-4318-85d6-3b475b338888\"\n\t\t\t\t},\n\t\t\t\t\"language\": \"en\",\n\t\t\t\t\"maki\": \"bakery\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBvaTplNTQyMjRiMi0wN2IzLTQ3M2QtYWM3MC04ZDMwNGE0NjEyMWY\",\n\t\t\t\t\"name\": \"Starbucks\",\n\t\t\t\t\"namePreferred\": null,\n\t\t\t\t\"nameLocal\": null,\n\t\t\t\t\"matchingName\": null,\n\t\t\t\t\"placeFormatted\": \"Chicago, Illinois 60611, United States\",\n\t\t\t\t\"address\": \"646 North Michigan Avenue\",\n\t\t\t\t\"featureType\": \"poi\",\n\t\t\t\t\"coordinates\": null,\n\t\t\t\t\"context\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": null,\n\t\t\t\t\t\t\"name\": null,\n\t\t\t\t\t\t\"shortCode\": null\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"externalIds\": {\n\t\t\t\t\t\"dataplor\": \"eab90b83-ea56-44eb-b93b-66cc08d6858b\",\n\t\t\t\t\t\"golden\": \"starbucks-53313\"\n\t\t\t\t},\n\t\t\t\t\"language\": \"en\",\n\t\t\t\t\"maki\": \"bakery\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBvaTpmMmIzYzZhNi04OTM2LTQ5MTYtODE5YS1iYzVhZDdiYWFjMjY\",\n\t\t\t\t\"name\": \"Starbucks\",\n\t\t\t\t\"namePreferred\": null,\n\t\t\t\t\"nameLocal\": null,\n\t\t\t\t\"matchingName\": null,\n\t\t\t\t\"placeFormatted\": \"Arvin, California 93203, United States\",\n\t\t\t\t\"address\": \"5555 Laval Road\",\n\t\t\t\t\"featureType\": \"poi\",\n\t\t\t\t\"coordinates\": null,\n\t\t\t\t\"context\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": null,\n\t\t\t\t\t\t\"name\": null,\n\t\t\t\t\t\t\"shortCode\": null\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"externalIds\": {\n\t\t\t\t\t\"dataplor\": \"05bded5d-a335-4cb6-8539-1659488e8d10\",\n\t\t\t\t\t\"golden\": \"starbucks-24310\"\n\t\t\t\t},\n\t\t\t\t\"language\": \"en\",\n\t\t\t\t\"maki\": \"bakery\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBvaToxY2I2MjJiZC05ZTc0LTRiYTEtYmI2NS0yNWEyOTM3Y2M2NWE\",\n\t\t\t\t\"name\": \"Starbucks\",\n\t\t\t\t\"namePreferred\": null,\n\t\t\t\t\"nameLocal\": null,\n\t\t\t\t\"matchingName\": null,\n\t\t\t\t\"placeFormatted\": \"Lebec, California 93243, United States\",\n\t\t\t\t\"address\": \"5844 Dennis Mccarthy Drive\",\n\t\t\t\t\"featureType\": \"poi\",\n\t\t\t\t\"coordinates\": null,\n\t\t\t\t\"context\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": null,\n\t\t\t\t\t\t\"name\": null,\n\t\t\t\t\t\t\"shortCode\": null\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"externalIds\": {\n\t\t\t\t\t\"golden\": \"starbucks-6689\",\n\t\t\t\t\t\"dataplor\": \"84c3fb94-ea19-4f39-b0b4-c0e64b0ec193\"\n\t\t\t\t},\n\t\t\t\t\"language\": \"en\",\n\t\t\t\t\"maki\": \"bakery\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBvaTpkNzJhY2E3OS1hN2Q5LTQ2YmEtOTMwOC0xYmI1NWMwNGMzZjI\",\n\t\t\t\t\"name\": \"Starbucks\",\n\t\t\t\t\"namePreferred\": null,\n\t\t\t\t\"nameLocal\": null,\n\t\t\t\t\"matchingName\": null,\n\t\t\t\t\"placeFormatted\": \"Barstow, California 92311, United States\",\n\t\t\t\t\"address\": \"1620 East Main Street\",\n\t\t\t\t\"featureType\": \"poi\",\n\t\t\t\t\"coordinates\": null,\n\t\t\t\t\"context\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": null,\n\t\t\t\t\t\t\"name\": null,\n\t\t\t\t\t\t\"shortCode\": null\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"externalIds\": {\n\t\t\t\t\t\"dataplor\": \"916a10b5-d4b9-42c6-acb6-166d26b03499\",\n\t\t\t\t\t\"golden\": \"starbucks-8106\"\n\t\t\t\t},\n\t\t\t\t\"language\": \"en\",\n\t\t\t\t\"maki\": \"bakery\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBvaTozZjkwODczMi01Y2E1LTQ4ZDItYTI3OC1kNWVhZDNiNDM1MTg\",\n\t\t\t\t\"name\": \"Starbucks\",\n\t\t\t\t\"namePreferred\": null,\n\t\t\t\t\"nameLocal\": null,\n\t\t\t\t\"matchingName\": null,\n\t\t\t\t\"placeFormatted\": \"Los Angeles, California 90007, United States\",\n\t\t\t\t\"address\": \"2735 South Figueroa Street\",\n\t\t\t\t\"featureType\": \"poi\",\n\t\t\t\t\"coordinates\": null,\n\t\t\t\t\"context\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": null,\n\t\t\t\t\t\t\"name\": null,\n\t\t\t\t\t\t\"shortCode\": null\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"externalIds\": {\n\t\t\t\t\t\"golden\": \"starbucks-24005\",\n\t\t\t\t\t\"dataplor\": \"f350ebbf-e147-4682-8027-c9acb55e952e\"\n\t\t\t\t},\n\t\t\t\t\"language\": \"en\",\n\t\t\t\t\"maki\": \"bakery\"\n\t\t\t}\n\t\t],\n\t\t\"attribution\": \"© 2025 Mapbox and its suppliers. All rights reserved. Use of this data is subject to the Mapbox Terms of Service. (https://www.mapbox.com/about/maps/)\"\n\t}\n}","HTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","N/A"]
[null,2,"/mapbox/places/:mapBoxId","GET","get place details with cache\nExample: \n/core/mapbox/places/dXJuOm1ieHBsYzpKUFE?sessionToken=123","\"Authorization\": \"Bearer <accessToken>\"","// request param\nsessionToken (O) = \"ChIJ25gGRbkdNHcR9fM30ZbS9jQ\"\n\nExample: \n/core/mapbox/places/dXJuOm1ieHBsYzpKUFE?sessionToken=123","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"type\": \"FeatureCollection\",\n\t\t\"features\": [\n\t\t\t{\n\t\t\t\t\"id\": null,\n\t\t\t\t\"type\": \"Feature\",\n\t\t\t\t\"placeType\": null,\n\t\t\t\t\"relevance\": null,\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"address\": \"241Bis Đ. Cách Mạng Tháng 8\",\n\t\t\t\t\t\"category\": null,\n\t\t\t\t\t\"maki\": \"cafe\",\n\t\t\t\t\t\"externalIds\": {},\n\t\t\t\t\t\"landmark\": null,\n\t\t\t\t\t\"tel\": null,\n\t\t\t\t\t\"website\": null,\n\t\t\t\t\t\"foursquare\": null\n\t\t\t\t},\n\t\t\t\t\"text\": null,\n\t\t\t\t\"placeName\": null,\n\t\t\t\t\"matchingText\": null,\n\t\t\t\t\"matchingPlaceName\": null,\n\t\t\t\t\"geometry\": {\n\t\t\t\t\t\"type\": \"Point\",\n\t\t\t\t\t\"coordinates\": [\n\t\t\t\t\t\t106.6837966,\n\t\t\t\t\t\t10.7765132\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"context\": null,\n\t\t\t\t\"bbox\": null,\n\t\t\t\t\"center\": null,\n\t\t\t\t\"language\": null,\n\t\t\t\t\"metadata\": null\n\t\t\t}\n\t\t],\n\t\t\"attribution\": \"© 2025 Mapbox and its suppliers. All rights reserved. Use of this data is subject to the Mapbox Terms of Service. (https://www.mapbox.com/about/maps/)\"\n\t}\n}","HTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","N/A"]
[null,3,"/mapbox/places/:mapBoxId/nocache","GET","get place details without caching\nExample: \n/core/mapbox/places/dXJuOm1ieHBsYzpKUFE?sessionToken=123","\"Authorization\": \"Bearer <accessToken>\"","// request param\nsessionToken (O) = \"ChIJ25gGRbkdNHcR9fM30ZbS9jQ\"\n\nExample: \n/core/mapbox/places/dXJuOm1ieHBsYzpKUFE?sessionToken=123","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"type\": \"FeatureCollection\",\n\t\t\"features\": [\n\t\t\t{\n\t\t\t\t\"id\": null,\n\t\t\t\t\"type\": \"Feature\",\n\t\t\t\t\"placeType\": null,\n\t\t\t\t\"relevance\": null,\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"address\": \"241Bis Đ. Cách Mạng Tháng 8\",\n\t\t\t\t\t\"category\": null,\n\t\t\t\t\t\"maki\": \"cafe\",\n\t\t\t\t\t\"externalIds\": {},\n\t\t\t\t\t\"landmark\": null,\n\t\t\t\t\t\"tel\": null,\n\t\t\t\t\t\"website\": null,\n\t\t\t\t\t\"foursquare\": null\n\t\t\t\t},\n\t\t\t\t\"text\": null,\n\t\t\t\t\"placeName\": null,\n\t\t\t\t\"matchingText\": null,\n\t\t\t\t\"matchingPlaceName\": null,\n\t\t\t\t\"geometry\": {\n\t\t\t\t\t\"type\": \"Point\",\n\t\t\t\t\t\"coordinates\": [\n\t\t\t\t\t\t106.6837966,\n\t\t\t\t\t\t10.7765132\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"context\": null,\n\t\t\t\t\"bbox\": null,\n\t\t\t\t\"center\": null,\n\t\t\t\t\"language\": null,\n\t\t\t\t\"metadata\": null\n\t\t\t}\n\t\t],\n\t\t\"attribution\": \"© 2025 Mapbox and its suppliers. All rights reserved. Use of this data is subject to the Mapbox Terms of Service. (https://www.mapbox.com/about/maps/)\"\n\t}\n}","HTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","N/A"]
[null,4,"/mapbox/geocoding/forward","POST","Convert addresses to geographic coordinates","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"searchText\" (R): \"Starbucks, Ho Chi Minh City\",\n  \"permanent\" (O): false,\n  \"bbox\" (O): [106.6, 10.75, 106.7, 10.78],\n  \"limit\" (O): 5,\n  \"language\" (O): \"vi,en\",\n  \"country\" (O): \"VN,US\",\n  \"types\" (O): [\"place\", \"address\"],\n  \"autocomplete\" (O): true,\n  \"worldview\" (O): \"us\",\n  \"format\" (O): \"geojson\",\n  \"proximity\" (O): \"106.660172,10.762622\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"type\": \"FeatureCollection\",\n\t\t\"features\": [\n\t\t\t{\n\t\t\t\t\"id\": \"address.5854326251950872\",\n\t\t\t\t\"type\": \"Feature\",\n\t\t\t\t\"geometry\": {\n\t\t\t\t\t\"type\": \"Point\",\n\t\t\t\t\t\"coordinates\": [\n\t\t\t\t\t\t55.640369,\n\t\t\t\t\t\t24.258917\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"mapboxId\": \"address.5854326251950872\",\n\t\t\t\t\t\"featureType\": \"street\",\n\t\t\t\t\t\"name\": \"Airport Street\",\n\t\t\t\t\t\"namePreferred\": \"Airport Street\",\n\t\t\t\t\t\"placeFormatted\": \"Al Dahmaa, Al Ain, Abu Dhabi, United Arab Emirates\",\n\t\t\t\t\t\"fullAddress\": \"Airport Street, Al Dahmaa, Al Ain, Abu Dhabi, United Arab Emirates\",\n\t\t\t\t\t\"context\": {\n\t\t\t\t\t\t\"street\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"address.5854326251950872\",\n\t\t\t\t\t\t\t\"name\": \"Airport Street\",\n\t\t\t\t\t\t\t\"wikidataId\": null,\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"neighborhood\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpCTXdE\",\n\t\t\t\t\t\t\t\"name\": \"Al Dahmaa\",\n\t\t\t\t\t\t\t\"wikidataId\": null,\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"place\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzp5QU0\",\n\t\t\t\t\t\t\t\"name\": \"Al Ain\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q234600\",\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"region\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpoQU0\",\n\t\t\t\t\t\t\t\"name\": \"Abu Dhabi\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q187712\",\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"country\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpJZ00\",\n\t\t\t\t\t\t\t\"name\": \"United Arab Emirates\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q878\",\n\t\t\t\t\t\t\t\"countryCode\": \"AE\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"coordinates\": {\n\t\t\t\t\t\t\"longitude\": 55.640369,\n\t\t\t\t\t\t\"latitude\": 24.258917,\n\t\t\t\t\t\t\"accuracy\": null,\n\t\t\t\t\t\t\"routablePoints\": null\n\t\t\t\t\t},\n\t\t\t\t\t\"bbox\": null\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t\"attribution\": \"NOTICE: © 2025 Mapbox and its suppliers. All rights reserved. Use of this data is subject to the Mapbox Terms of Service (https://www.mapbox.com/about/maps/). This response and the information it contains may not be retained.\"\n\t}\n}","HTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","N/A"]
[null,5,"/mapbox/geocoding/reverse","POST","Convert geographic coordinates to human-readable addresses\n","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"longitude\" (R): 55.2708,\n\t\"latitude\" (R): 25.2048,\n\t\"permanent\" (O): false,\n\t\"language\" (O): \"en\",\n\t\"routing\" (O): true,\n\t\"country\" (O): \"AE\",\n\t\"types\" (O): [\n\t\t\"address\"\n\t],\n\t\"limit\" (O): 3,\n\t\"worldview\" (O): \"us\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"type\": \"FeatureCollection\",\n\t\t\"features\": [\n\t\t\t{\n\t\t\t\t\"id\": \"address.227995783705782\",\n\t\t\t\t\"type\": \"Feature\",\n\t\t\t\t\"geometry\": {\n\t\t\t\t\t\"type\": \"Point\",\n\t\t\t\t\t\"coordinates\": [\n\t\t\t\t\t\t55.270787,\n\t\t\t\t\t\t25.204778\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"mapboxId\": \"address.227995783705782\",\n\t\t\t\t\t\"featureType\": \"street\",\n\t\t\t\t\t\"name\": \"Financial Center Street\",\n\t\t\t\t\t\"namePreferred\": \"Financial Center Street\",\n\t\t\t\t\t\"placeFormatted\": \"Trade Center Second, Dubai, Dubai, United Arab Emirates\",\n\t\t\t\t\t\"fullAddress\": \"Financial Center Street, Trade Center Second, Dubai, Dubai, United Arab Emirates\",\n\t\t\t\t\t\"context\": {\n\t\t\t\t\t\t\"street\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"address.227995783705782\",\n\t\t\t\t\t\t\t\"name\": \"Financial Center Street\",\n\t\t\t\t\t\t\t\"wikidataId\": null,\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"neighborhood\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpNbXdE\",\n\t\t\t\t\t\t\t\"name\": \"Trade Center Second\",\n\t\t\t\t\t\t\t\"wikidataId\": null,\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"place\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpCYWdE\",\n\t\t\t\t\t\t\t\"name\": \"Dubai\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q612\",\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"region\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzo1QU0\",\n\t\t\t\t\t\t\t\"name\": \"Dubai\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q613\",\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"country\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpJZ00\",\n\t\t\t\t\t\t\t\"name\": \"United Arab Emirates\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q878\",\n\t\t\t\t\t\t\t\"countryCode\": \"AE\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"coordinates\": {\n\t\t\t\t\t\t\"longitude\": 55.270787,\n\t\t\t\t\t\t\"latitude\": 25.204778,\n\t\t\t\t\t\t\"accuracy\": null,\n\t\t\t\t\t\t\"routablePoints\": null\n\t\t\t\t\t},\n\t\t\t\t\t\"bbox\": null\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"dXJuOm1ieHBsYzpNbXdE\",\n\t\t\t\t\"type\": \"Feature\",\n\t\t\t\t\"geometry\": {\n\t\t\t\t\t\"type\": \"Point\",\n\t\t\t\t\t\"coordinates\": [\n\t\t\t\t\t\t55.280878,\n\t\t\t\t\t\t25.21636\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpNbXdE\",\n\t\t\t\t\t\"featureType\": \"neighborhood\",\n\t\t\t\t\t\"name\": \"Trade Center Second\",\n\t\t\t\t\t\"namePreferred\": \"Trade Center Second\",\n\t\t\t\t\t\"placeFormatted\": \"Dubai, Dubai, United Arab Emirates\",\n\t\t\t\t\t\"fullAddress\": \"Trade Center Second, Dubai, Dubai, United Arab Emirates\",\n\t\t\t\t\t\"context\": {\n\t\t\t\t\t\t\"place\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpCYWdE\",\n\t\t\t\t\t\t\t\"name\": \"Dubai\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q612\",\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"region\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzo1QU0\",\n\t\t\t\t\t\t\t\"name\": \"Dubai\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q613\",\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"country\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpJZ00\",\n\t\t\t\t\t\t\t\"name\": \"United Arab Emirates\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q878\",\n\t\t\t\t\t\t\t\"countryCode\": \"AE\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"neighborhood\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpNbXdE\",\n\t\t\t\t\t\t\t\"name\": \"Trade Center Second\",\n\t\t\t\t\t\t\t\"wikidataId\": null,\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"coordinates\": {\n\t\t\t\t\t\t\"longitude\": 55.280878,\n\t\t\t\t\t\t\"latitude\": 25.21636,\n\t\t\t\t\t\t\"accuracy\": null,\n\t\t\t\t\t\t\"routablePoints\": null\n\t\t\t\t\t},\n\t\t\t\t\t\"bbox\": [\n\t\t\t\t\t\t55.270626,\n\t\t\t\t\t\t25.200451,\n\t\t\t\t\t\t55.291805,\n\t\t\t\t\t\t25.229376\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"dXJuOm1ieHBsYzpCYWdE\",\n\t\t\t\t\"type\": \"Feature\",\n\t\t\t\t\"geometry\": {\n\t\t\t\t\t\"type\": \"Point\",\n\t\t\t\t\t\"coordinates\": [\n\t\t\t\t\t\t55.297558,\n\t\t\t\t\t\t25.25809\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpCYWdE\",\n\t\t\t\t\t\"featureType\": \"place\",\n\t\t\t\t\t\"name\": \"Dubai\",\n\t\t\t\t\t\"namePreferred\": \"Dubai\",\n\t\t\t\t\t\"placeFormatted\": \"Dubai, United Arab Emirates\",\n\t\t\t\t\t\"fullAddress\": \"Dubai, Dubai, United Arab Emirates\",\n\t\t\t\t\t\"context\": {\n\t\t\t\t\t\t\"region\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzo1QU0\",\n\t\t\t\t\t\t\t\"name\": \"Dubai\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q613\",\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"country\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpJZ00\",\n\t\t\t\t\t\t\t\"name\": \"United Arab Emirates\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q878\",\n\t\t\t\t\t\t\t\"countryCode\": \"AE\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"place\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpCYWdE\",\n\t\t\t\t\t\t\t\"name\": \"Dubai\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q612\",\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"coordinates\": {\n\t\t\t\t\t\t\"longitude\": 55.297558,\n\t\t\t\t\t\t\"latitude\": 25.25809,\n\t\t\t\t\t\t\"accuracy\": null,\n\t\t\t\t\t\t\"routablePoints\": null\n\t\t\t\t\t},\n\t\t\t\t\t\"bbox\": [\n\t\t\t\t\t\t55.081573,\n\t\t\t\t\t\t24.94976,\n\t\t\t\t\t\t55.564983,\n\t\t\t\t\t\t25.393956\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"dXJuOm1ieHBsYzo1QU0\",\n\t\t\t\t\"type\": \"Feature\",\n\t\t\t\t\"geometry\": {\n\t\t\t\t\t\"type\": \"Point\",\n\t\t\t\t\t\"coordinates\": [\n\t\t\t\t\t\t55.292491,\n\t\t\t\t\t\t25.265347\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzo1QU0\",\n\t\t\t\t\t\"featureType\": \"region\",\n\t\t\t\t\t\"name\": \"Dubai\",\n\t\t\t\t\t\"namePreferred\": \"Dubai\",\n\t\t\t\t\t\"placeFormatted\": \"United Arab Emirates\",\n\t\t\t\t\t\"fullAddress\": \"Dubai, United Arab Emirates\",\n\t\t\t\t\t\"context\": {\n\t\t\t\t\t\t\"country\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpJZ00\",\n\t\t\t\t\t\t\t\"name\": \"United Arab Emirates\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q878\",\n\t\t\t\t\t\t\t\"countryCode\": \"AE\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"region\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzo1QU0\",\n\t\t\t\t\t\t\t\"name\": \"Dubai\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q613\",\n\t\t\t\t\t\t\t\"countryCode\": null\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"coordinates\": {\n\t\t\t\t\t\t\"longitude\": 55.292491,\n\t\t\t\t\t\t\"latitude\": 25.265347,\n\t\t\t\t\t\t\"accuracy\": null,\n\t\t\t\t\t\t\"routablePoints\": null\n\t\t\t\t\t},\n\t\t\t\t\t\"bbox\": [\n\t\t\t\t\t\t54.782523,\n\t\t\t\t\t\t24.620369,\n\t\t\t\t\t\t56.205636,\n\t\t\t\t\t\t25.446058\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"dXJuOm1ieHBsYzpJZ00\",\n\t\t\t\t\"type\": \"Feature\",\n\t\t\t\t\"geometry\": {\n\t\t\t\t\t\"type\": \"Point\",\n\t\t\t\t\t\"coordinates\": [\n\t\t\t\t\t\t54.256172,\n\t\t\t\t\t\t23.85206\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpJZ00\",\n\t\t\t\t\t\"featureType\": \"country\",\n\t\t\t\t\t\"name\": \"United Arab Emirates\",\n\t\t\t\t\t\"namePreferred\": \"United Arab Emirates\",\n\t\t\t\t\t\"placeFormatted\": null,\n\t\t\t\t\t\"fullAddress\": \"United Arab Emirates\",\n\t\t\t\t\t\"context\": {\n\t\t\t\t\t\t\"country\": {\n\t\t\t\t\t\t\t\"mapboxId\": \"dXJuOm1ieHBsYzpJZ00\",\n\t\t\t\t\t\t\t\"name\": \"United Arab Emirates\",\n\t\t\t\t\t\t\t\"wikidataId\": \"Q878\",\n\t\t\t\t\t\t\t\"countryCode\": \"AE\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"coordinates\": {\n\t\t\t\t\t\t\"longitude\": 54.256172,\n\t\t\t\t\t\t\"latitude\": 23.85206,\n\t\t\t\t\t\t\"accuracy\": null,\n\t\t\t\t\t\t\"routablePoints\": null\n\t\t\t\t\t},\n\t\t\t\t\t\"bbox\": [\n\t\t\t\t\t\t51.42123,\n\t\t\t\t\t\t22.631514,\n\t\t\t\t\t\t56.474329,\n\t\t\t\t\t\t26.069392\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t\"attribution\": \"NOTICE: © 2025 Mapbox and its suppliers. All rights reserved. Use of this data is subject to the Mapbox Terms of Service (https://www.mapbox.com/about/maps/). This response and the information it contains may not be retained.\"\n\t}\n}","HTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","N/A"]
[null,6,"/mapbox/routes","POST","Compute route between points with comprehensive options and traffic data.\nIf alternatives set to true, server will return multiple routes with traffic aware.\nParamater request body:\n+ profile: driving, driving-traffic, walking, cycling\n+ geometriespolyline, polyline6, geojson\n+ coordinates: format [[lng. lat], ...]\nBy default the first index of coordinates is start point, the last index is dest points, and the indexes in the middle are the way points","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"profile\": \"driving-traffic\",\n\t\"coordinates\": [\n\t [54.641503099999994, 24.4285608],\n\t [54.439926899999996, 1.4179288]\n\t],\n\t\"alternatives\": false,\n\t\"annotations\": \"duration,distance,speed\",\n\t\"geometries\": \"polyline6\",\n\t\"language\": \"en\",\n\t\"overview\": \"full\",\n\t\"steps\": false,\n\t\"voiceInstructions\": false,\n\t\"voiceUnits\": \"metric\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"routes\": [\n\t\t\t{\n\t\t\t\t\"geometry\": \"uv~qm@_l`fgBoH`K_AlApAbBv@dA\\\\t@Rz@J|@F~@aHfIsBdC_CpCw@r@a@Ze@Vw@V}@LeAJmAPiAb@_Ap@q@t@e@r@Yz@M`AC`AD`AZ~@^x@l@p@r@b@bAXfADfAM`Aa@t@q@j@iAv@}Bx@{B`AwBz@aB`A_B|j@yo@lLgNhFeGfNkRpHsL`I{L~Ymd@pCmElBh@pBrAlAlB|@zBb@hCDlCQzCe@~COdDJtBe@lEe@tBy@~BuAbCwApBwlBdyC{AtBgBhBoB|AyBnA{A@yAZoAr@aAfAo@tAY`BCxALtAh@fB`AtArA|@bBb@xA@zASrAm@dAaAr@sA^_BHeBOcB`@cDh@oCbAgCrA}BvMuS\",\n\t\t\t\t\"distance\": 1218.839,\n\t\t\t\t\"duration\": 229.734,\n\t\t\t\t\"weight\": 575.658,\n\t\t\t\t\"weightName\": \"auto\",\n\t\t\t\t\"legs\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"summary\": \"Al Tirhal Street, Ad Diyafah Street\",\n\t\t\t\t\t\t\"weight\": 575.658,\n\t\t\t\t\t\t\"duration\": 229.734,\n\t\t\t\t\t\t\"distance\": 1218.839,\n\t\t\t\t\t\t\"steps\": []\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\t\"waypoints\": [\n\t\t\t{\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"location\": [\n\t\t\t\t\t54.64136,\n\t\t\t\t\t24.428411\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"شارع الضِّيافة\",\n\t\t\t\t\"location\": [\n\t\t\t\t\t54.64,\n\t\t\t\t\t24.428014\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\t\"code\": \"Ok\",\n\t\t\"uuid\": \"t-WHOAUW3e4Omj-wbTl_0ghJxz7tUEgyW_uQxar2ZMOa3BA--bhxLw==\"\n\t}\n}","HTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","N/A"]

{"sheet":"API Vehicle Management","index":27,"n_rows":34,"n_cols":11,"rows_kept":34,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","Vehicle Management"]
[null,"Description","APIs that used to vehicle management (view list, view detail, add, update, delete)"]
[null,"Created User","NamLT12@fpt.com"]
[null,"Created Date","2025-07-02"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2026-04-10"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Vehicle Management"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/vehicles","POST","Admin can search for vehicles with many filters; \n\nCurrent user can view list vehicle by group which managed by current user. Admin can view all vehicles.\nThe search query is built using URL and request body  in a POST request. For example: \n\t-/vehicles\n\tRequestBody:\n\t{\n  \"globalSearch\":\"\",\n  \"pageNumber\": 0,\n  \"pageSize\": 10,\n  \"sortDirection\": \"ASC\",\n  \"filters\": {\n    \"licensePlate\": \"123\"\n  }\n}\n\nHere is the defined list of filter parameters:\n\t-license_plate (O): search for vehicles with lícense plate (LIKE)\n\t-vin (O): search for vehicles with vin (LIKE) \n\nBackend applies sensible default values if these parameters are not provided:\n\t-page: defaults to 0.\n\t-limit: defaults to 10.\n\nBackend validates strictly with these parameter:\n\t-status: only positive integer and in (0,1,2)\n\t-page: only positive integer.\n\t-limit: only positive integer. \n\t-sortDirection: must be in (\"asc\", \"desc\").\n\nInternal vehicle status code\n1: AVAILABLE\n2: PICKING\n3: ON_TRIP\n4: RETURNING\n5: OPERATIONS\n6: MAINTENANCE\n7: OFFLINE\n8: DISCONNECTED\n9: FAULTED\n10: HIBERNATE","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"globalSearch\":\"\",\n  \"pageNumber\" (R): 0,\n  \"pageSize\" (R): 10,\n  \"sortDirection\" (R): \"ASC\",\n  \"filters\" (O): {\n    \"licensePlate\": \"123\"\n  }\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Get list vehicle successfully\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"vehicleId\": \"765ce5dd-a36a-4984-b9e3-dd603f1cb6bd\",\n\"qrUrl\": \"https://....\",\n\t\t\t\t\"vehicleWorkNumber\": \"12312451\",\n\t\t\t\t\"vehicleTestNumber\": \"1234551\",\n\t\t\t\t\"vehicleModel\": \"Toyota\",\n\t\t\t\t\"licensePlate\": \"51K12341\",\n\t\t\t\t\"vinNumber\": \"1234540121\",\n\t\t\t\t\"createdAt\": \"2025-07-30T03:11:22.707+00:00\",\n\t\t\t\t\"provisionStatus\": \"R\",\n\t\t\t\t\"defaultDepot\": {\n\t\t\t\t\t\"depotId\": \"1\",\n\t\t\t\t\t\"name\": \"1\",\n\t\t\t\t\t\"latitude\": 1.0,\n\t\t\t\t\t\"longitude\": 1.0,\n\t\t\t\t\t\"createdAt\": \"2025-07-30T03:11:11.258+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-07-30T03:11:11.258+00:00\"\n\t\t\t\t},\n\t\t\t\t\"groups\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"groupId\": \"1\",\n\t\t\t\t\t\t\"groupCode\": \"1\",\n\t\t\t\t\t\t\"groupName\": \"1\",\n\t\t\t\t\t\t\"description\": \"1\",\n\t\t\t\t\t\t\"createdAt\": \"2025-07-30T03:10:59.158+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-07-30T03:10:59.158+00:00\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"vehicleStatus\": {\n\t\t\t\t\t\"vehicleStatusId\": \"1\",\n\t\t\t\t\t\"eventCode\": null,\n\t\t\t\t\t\"eventDetail\": null,\n\t\t\t\t\t\"currentSpeed\": 12.0,\n\t\t\t\t\t\"deviceTime\": \"123123\",\n\t\t\t\t\t\"status\": \"5\",\n\t\t\t\t\t\"timeStamp\": \"1231\",\n\t\t\t\t\t\"batteryLevel\": 10,\n\t\t\t\t\t\"latitude\": 121.0,\n\t\t\t\t\t\"longitude\": 122.0,\n\t\t\t\t\t\"engineStatus\": \"3\",\n\t\t\t\t\t\"createdAt\": \"2025-07-30T03:18:53.159+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-07-30T03:18:53.159+00:00\",\n\t\t\t\t\t\"accuracy\": 11,\n\t\t\t\t\t\"direction\": 11,\n\t\t\t\t\t\"height\": 11,\n\t\t\t\t\t\"remainingDistance\": null,\n\t\t\t\t\t\"remainingDuration\": null,\n\"internalVehicleStatus\": 1, \"isConnected\": true\n\t\t\t\t},\n\t\t\t\t\"vehicleType\": {\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\t\"vehicleTypeCode\": \"APRT6\",\n\t\t\t\t\t\"vehicleTypeName\": \"APOLLO RT6\",\n\t\t\t\t\t\"description\": \"APOLLO RT6 V1\",\n\t\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\t\"imageUrl\": null,\n\t\t\t\t\t\"baseFare\": 100.0,\n\t\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\t\"createdAt\": \"2025-07-30T03:10:24.985+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-07-30T03:10:24.985+00:00\",\n\t\t\t\t\t\"disable\": false\n\t\t\t\t},\n\"platform\": {\n\t\t\t\t\t\t\"platformId\": \"1\",\n\t\t\t\t\t\t\"name\": \"MOMENTA\",\n\t\t\t\t\t\t\"description\": \"MOMENTA PLATFORM\",\n\t\t\t\t\t\t\"linkUrl\": null,\n\t\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\t\"createdAt\": \"2025-11-14T02:48:07.202+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-11-14T02:48:07.202+00:00\",\n\t\t\t\t\t\t\"isDeleted\": false\n\t\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 1,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES, VEHICLE_TYPES, VEHICLE_STATUS, VEHICLE_MODELS, OPERATORS_GROUPS, VEHICLES_GROUPS(GET)"]
[null,2,"/admin/getVehicle","GET","API to get detail data of one vehicle by vehicleId.\nExample request : /getVehicle?vehicleId=<vehicleId>\n\nInternal vehicle status code\n1: AVAILABLE\n2: PICKING\n3: ON_TRIP\n4: RETURNING\n5: OPERATIONS\n6: MAINTENANCE\n7: OFFLINE\n8: DISCONNECTED (field isConnected : false)\n9: FAULTED\n10: HIBERNATE","\"Authorization\": \"Bearer <accessToken>\"","Request Param: vehicleId (R) - Identify of vehicle","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Get detail vehicle successfully\"\n\t},\n\t\"data\": {\n\t\t\"vehicleId\": \"765ce5dd-a36a-4984-b9e3-dd603f1cb6bd\",\n\"qrUrl\": \"https://....\",\n\"qrGeneratedAt\": \"2025-07-30T03:11:22.707+00:00\",\n\t\t\"vehicleWorkNumber\": \"12312451\",\n\t\t\"vehicleTestNumber\": \"1234551\",\n\t\t\"vehicleModel\": \"Toyota\",\n\t\t\"licensePlate\": \"51K12341\",\n\t\t\"vinNumber\": \"1234540121\",\n\t\t\"createdAt\": \"2025-07-30T03:11:22.707+00:00\",\n\t\t\"provisionStatus\": \"R\",\n\t\t\"defaultDepot\": {\n\t\t\t\"depotId\": \"1\",\n\t\t\t\"name\": \"1\",\n\t\t\t\"latitude\": 1.0,\n\t\t\t\"longitude\": 1.0,\n\t\t\t\"createdAt\": \"2025-07-30T03:11:11.258+00:00\",\n\t\t\t\"modifiedAt\": \"2025-07-30T03:11:11.258+00:00\"\n\t\t},\n\t\t\"groups\": [\n\t\t\t{\n\t\t\t\t\"groupId\": \"1\",\n\t\t\t\t\"groupCode\": \"1\",\n\t\t\t\t\"groupName\": \"1\",\n\t\t\t\t\"description\": \"1\",\n\t\t\t\t\"createdAt\": \"2025-07-30T03:10:59.158+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-30T03:10:59.158+00:00\"\n\t\t\t}\n\t\t],\n\t\t\"vehicleStatus\": {\n\t\t\t\"vehicleStatusId\": \"1\",\n\t\t\t\"eventCode\": null,\n\t\t\t\"eventDetail\": null,\n\t\t\t\"currentSpeed\": 12.0,\n\t\t\t\"deviceTime\": \"123123\",\n\t\t\t\"status\": \"5\",\n\t\t\t\"timeStamp\": \"1231\",\n\t\t\t\"batteryLevel\": 10,\n\t\t\t\"latitude\": 121.0,\n\t\t\t\"longitude\": 122.0,\n\t\t\t\"engineStatus\": \"3\",\n\t\t\t\"createdAt\": \"2025-07-30T03:18:53.159+00:00\",\n\t\t\t\"modifiedAt\": \"2025-07-30T03:18:53.159+00:00\",\n\t\t\t\"accuracy\": 11,\n\t\t\t\"direction\": 11,\n\t\t\t\"height\": 11,\n\t\t\t\"remainingDistance\": null,\n\t\t\t\"remainingDuration\": null,\"internalVehicleStatus\": 1,\n\"internalVehicleStatus\": 1, \"isConnected\": true,\n\"remainingBattery\": 20\n\t\t},\n\t\t\"vehicleType\": {\n\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\"vehicleTypeCode\": \"APRT6\",\n\t\t\t\"vehicleTypeName\": \"APOLLO RT6\",\n\t\t\t\"description\": \"APOLLO RT6 V1\",\n\t\t\t\"seatCapacity\": 4,\n\t\t\t\"imageUrl\": null,\n\t\t\t\"baseFare\": 100.0,\n\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\"createdAt\": \"2025-07-30T03:10:24.985+00:00\",\n\t\t\t\"modifiedAt\": \"2025-07-30T03:10:24.985+00:00\",\n\t\t\t\"disable\": false\n\t\t},\n\"platform\": {\n\t\t\t\t\t\t\"platformId\": \"1\",\n\t\t\t\t\t\t\"name\": \"MOMENTA\",\n\t\t\t\t\t\t\"description\": \"MOMENTA PLATFORM\",\n\t\t\t\t\t\t\"linkUrl\": null,\n\t\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\t\"createdAt\": \"2025-11-14T02:48:07.202+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-11-14T02:48:07.202+00:00\",\n\t\t\t\t\t\t\"isDeleted\": false\n\t\t\t\t\t}\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 => Can not found vehicle with id\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES, VEHICLE_TYPES, VEHICLE_STATUS, VEHICLE_MODELS (GET)"]
[null,3,"/createVehicle","PUT","API to create new Vehicle with master data.\n'-vehicleId: Indentify of vehicle \n-modelName: Name of vehicle's model\n-modelYear: Year of manufacture of vehicle model\n-licensePlate: license plate number\n-vin: VIN number\n-color: color of vehicle\n-vehicleTypeCode: Code of vehicle type\n-cameraLink: Link to streaming camera in vehicle","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"vehicleWorkNo\" (R): \"12312451\",\n  \"vehicleTestNo\" (R): \"1234551\",\n  \"licensePlate\" (R): \"51K12341\",\n  \"vehicleVin\" (R): \"1234540121\",\n  \"vehicleTypeCode\" (R): \"APRT6\",\n\"depotId\" (R):\"1\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Create vehicle successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 5 => Unique field exist. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES (INSERT)"]
[null,4,"admin/updateVehicle","PUT","API to update Vehicle with master data.\n'-modelName: Name of vehicle's model\n-modelYear: Year of manufacture of vehicle model\n-licensePlate: license plate number\n-vin: VIN number\n-color: color of vehicle\n-vehicleTypeCode: Code of vehicle type\n-cameraLink: Link to streaming camera in vehicle","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"vehicleId\" (R): \"64c65542-c11b-4b83-8459-d4c247df81e2\",\n  \"licensePlate\" (O): \"51K12345\",\n  \"workNumber\" (O): \"123124\",\n  \"testNumber\" (O): \"2312445\",\n  \"vin\" (O): \"1234540127\",\n  \"vehicleTypeCode\" (O): \"APRT6\",\n  \"depotId\" (O): \"1\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Update vehicle successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 =>  Vehicle is currently synchronizing\n- status.code: 3 => CCMomenta service error: {momentaError} - data: {momentaData}\n- status.code: 5 => Unique field exist. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 6 => Vehicle is not found\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES (UPDATE)"]
[null,5,"/admin/deleteVehicle","DELETE","Delete vehicle with vehicleId.\nFor example request :\nadmin/deleteVehicle?vehicleId=9618ca10-4de4-4797-9b9c-89d56cf50c66","\"Authorization\": \"Bearer <accessToken>\"","Request param: \nvehicleId: Id of vehicle","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete vehicle successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 2 =>  Delete vehicle failed\n- status.code: 3 => Vehicle is currently synchronizing\n- status.code: 6 => Vehicle is not found\n- status.code: 7 => CCMomenta service error: {momentaError} - data: {momentaData}\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES (UPDATE)"]
[null,6,"/admin/vehicles/getDefaultDepots","GET","Get all default depots","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"depotId\": \"1\",\n\t\t\t\"name\": \"Airport\",\n\t\t\t\"latitude\": 101.12332,\n\t\t\t\"longitude\": 102.123123,\n\t\t\t\"createdAt\": \"2025-07-23T07:16:01.937+00:00\",\n\t\t\t\"modifiedAt\": \"2025-07-23T07:16:01.937+00:00\"\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","DEPOTS (GET)"]
[null,7,"/admin/vehicles/provisioning","POST","Admin can provisioning vehicle to sync with CCRobotaxi","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"vehicleId\": \"V002\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Start provisioning vehicle\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n- status.code: 3 => Vehicle has already been synchronizing\n- status.code: 4 => Vehicle is currently synchronizing\n- status.code: 5 => Vehicle is not found\n- status.code: 6 => CCMomenta service error: {momentaError} - data: {momentaData}\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES (UPDATE)"]
[null,8,"/admin/vehicle/telemetryLogs","POST","Admin can get telemetry logs of vehicle","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"vehicleId\": \"4d360f66-cd20-44db-a082-088331f67dd7\",\n  \"searchCriteria\": {\n    \"pageNumber\": 0,\n    \"pageSize\": 10,\n    \"sortDirection\": \"DESC\",\n    \"filters\": {},\n    \"globalSearch\": \"\"\n  }\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"commandId\": \"1\",\n\t\t\t\"oid\": null,\n\t\t\t\"operatorName\": \"admin\",\n\t\t\t\"sceneType\": \"START_TRIP\",\n\t\t\t\"result\": \"Failed\",\n\t\t\t\"responseTime\": \"2025-07-29T15:48:52.344+00:00\",\n\t\t\t\"createdAt\": \"2025-07-29T15:53:51.689+00:00\",\n\t\t\t\"modifiedAt\": null\n\t\t},\n\t\t{\n\t\t\t\"commandId\": \"1\",\n\t\t\t\"oid\": null,\n\t\t\t\"operatorName\": \"admin\",\n\t\t\t\"sceneType\": \"START_TRIP\",\n\t\t\t\"result\": \"SUCCESS\",\n\t\t\t\"responseTime\": \"2025-07-29T15:48:52.344+00:00\",\n\t\t\t\"createdAt\": \"2025-07-29T15:48:52.344+00:00\",\n\t\t\t\"modifiedAt\": null\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES (GET)\nVEHICLE_TELEMETRY_LOGS(GET)"]
[null,9,"/admin/vehicles/operation/summary","GET","Admin can view total numbers of all vehicles in operation. Operator can view total numbers of all vehicles in operation that he/she operates","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Get list vehicle successfully\"\n\t},\n\t\"data\": {\n\t\t\"totalVehicles\": 506,\n\t\t\"totalMaintenanceVehicles\": 0,\n\t\t\"totalOperationVehicles\": 0,\n\t\t\"totalStandbyVehicles\": 0,\n\t\t\"totalOfflineVehicles\": 0,\n\t\t\"totalAvailableVehicles\": 25,\n\t\t\"totalOnTripVehicles\": 0,\n\t\t\"totalPickingVehicles\": 1,\n\t\t\"totalReturningVehicles\": 480,\n\t\t\"totalDisconnectedVehicles\": 0,\n\t\t\"totalFaultedVehicles\": 0,\n\t\t\"totalHibernateVehicles\": 0,\n\"totalUndefinedVehicles\": 0 \n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES, VEHICLE_TYPES, VEHICLE_STATUS, VEHICLE_MODELS, OPERATORS_GROUPS, VEHICLES_GROUPS(GET)"]
[null,10,"/admin/vehicles/operation/search","POST","Admin can view total numbers of all vehicles in operation. Operator can view total numbers of all vehicles in operation that he/she operates.\n\nInternal vehicle status code\n1: AVAILABLE\n2: PICKING\n3: ON_TRIP\n4: RETURNING\n5: OPERATIONS\n6: MAINTENANCE\n7: OFFLINE\n8: DISCONNECTED  (field isConnected : false)\n9: FAULTED\n10: HIBERNATE\n\nMust always include \"vehicleStatusList\" in filter object for this API. \nInclude sort by created at for this API\nInclude sort direction DESC for this API\n\nGlobal Search: search by License Plate","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"pageNumber\" (R): 0,\n\t\"pageSize\" (R): 10,\n\t\"sortBy\": \"createdAt\",\n\t\"sortDirection\": \"ASC\",\n\t\"filters\": {\n\t\t\"vehicleStatusList\" (R): [1,2,3,4,5,6],\n\"isConnected\" : false //filter for disconnected vehicles\n\t},\n\t\"globalSearch\" (O): \"\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Get list vehicle successfully\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"vehicleId\": \"2\",\n\t\t\t\t\"vehicleWorkNumber\": \"1\",\n\t\t\t\t\"vehicleTestNumber\": \"1\",\n\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\"color\": \"White\",\n\t\t\t\t\"licensePlate\": \"JP-1001\",\n\t\t\t\t\"vinNumber\": \"VIN0001ABC\",\n\t\t\t\t\"createdAt\": \"2025-08-01T15:10:00.000+00:00\",\n\t\t\t\t\"qrUrl\": \"\",\n\t\t\t\t\"provisionStatus\": \"C\",\n\t\t\t\t\"groups\": [],\n\"platform\": {\n\t\t\t\t\t\t\"platformId\": \"1\",\n\t\t\t\t\t\t\"name\": \"MOMENTA\",\n\t\t\t\t\t\t\"description\": \"MOMENTA PLATFORM\",\n\t\t\t\t\t\t\"linkUrl\": null,\n\t\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\t\"createdAt\": \"2025-11-14T02:48:07.202+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-11-14T02:48:07.202+00:00\",\n\t\t\t\t\t\t\"isDeleted\": false\n\t\t\t\t\t},\n\t\t\t\t\"driver\": {\n\t\t\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742a\",\n\t\t\t\t\t\"roles\": \"DRIVER\",\n\t\t\t\t\t\"name\": \"admin\",\n\t\t\t\t\t\"email\": \"driver@fpt.com\",\n\t\t\t\t\t\"phone\": \"12\",\n\t\t\t\t\t\"preferredLanguage\": \"en\",\n\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\"createdAt\": \"2025-06-27T07:59:48.576+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-06-27T07:59:48.576+00:00\"\n\t\t\t\t},\n\t\t\t\t\"vehicleStatus\": {\n\t\t\t\t\t\"vehicleStatusId\": \"vs_2\",\n\t\t\t\t\t\"eventCode\": \"MAINT\",\n\t\t\t\t\t\"eventDetail\": \"Scheduled Maintenance\",\n\t\t\t\t\t\"currentSpeed\": 0.0,\n\t\t\t\t\t\"deviceTime\": \"1755475200000\",\n\t\t\t\t\t\"status\": 6,\n\t\t\t\t\t\"timeStamp\": \"2025-08-18 16:00:00\",\n\t\t\t\t\t\"batteryLevel\": 80,\n\t\t\t\t\t\"latitude\": 35.6895,\n\t\t\t\t\t\"longitude\": 139.6917,\n\t\t\t\t\t\"engineStatus\": \"OFF\",\n\t\t\t\t\t\"createdAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"remainingDistance\": \"0\",\n\t\t\t\t\t\"remainingDuration\": \"0\",\n\t\t\t\t\t\"direction\": 0.0,\n\t\t\t\t\t\"height\": null,\n\t\t\t\t\t\"accuracy\": 99.0,\"internalVehicleStatus\": 1, \"isConnected\" : true\n\t\t\t\t},\n\t\t\t\t\"vehicleType\": {\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\t\"vehicleTypeCode\": \"APRT9\",\n\t\t\t\t\t\"vehicleTypeName\": \"APOLLo rT698\",\n\t\t\t\t\t\"description\": \"Apollo RT6 is a self-driving electric vehicle designed for ride-hailing services1\",\n\t\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\t\"imageUrl\": \"https://kintsugi.blob.core.windows.net/rhp-passenger-dev/vehicle-type%2F1%2F20250829_023715_a274a46f.png\",\n\t\t\t\t\t\"baseFare\": 93.0,\n\t\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:39:39.579+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-09-03T15:17:21.960+00:00\",\n\t\t\t\t\t\"disable\": false\n\t\t\t\t},\n\t\t\t\t\"activeRide\": {\n\t\t\t\t\t\"tripId\": \"ebf1c4f2-f35c-4c75-9633-96bfbe763ef0\",\n\t\t\t\t\t\"rideId\": null,\n\t\t\t\t\t\"vehicleId\": null,\n\t\t\t\t\t\"tripTypeId\": null,\n\t\t\t\t\t\"tripStatus\": null,\n\t\t\t\t\t\"totalDistance\": null,\n\t\t\t\t\t\"totalAmount\": null,\n\t\t\t\t\t\"discountAmount\": null,\n\t\t\t\t\t\"finalAmount\": null,\n\t\t\t\t\t\"currencyCode\": null,\n\t\t\t\t\t\"estimatedDurationSeconds\": null,\n\t\t\t\t\t\"actualDurationSeconds\": null,\n\t\t\t\t\t\"ratingScore\": null,\n\t\t\t\t\t\"feedback\": null,\n\t\t\t\t\t\"internalOrderId\": null,\n\t\t\t\t\t\"momentaOrderId\": null,\n\t\t\t\t\t\"tripPoints\": null,\n\t\t\t\t\t\"scheduledAt\": null,\n\t\t\t\t\t\"createdAt\": null,\n\t\t\t\t\t\"modifiedAt\": null,\n\t\t\t\t\t\"routes\": null,\n\t\t\t\t\t\"passenger\": null,\n\t\t\t\t\t\"voucherId\": null,\n\t\t\t\t\t\"vehicle\": null,\n\t\t\t\t\t\"issueTickets\": null,\n\t\t\t\t\t\"routePlans\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"routeId\": \"3\",\n\t\t\t\t\t\t\t\"orderId\": \"mo2\",\n\t\t\t\t\t\t\t\"vehicleId\": \"1\",\n\t\t\t\t\t\t\t\"timestamp\": \"2323\",\n\t\t\t\t\t\t\t\"distance\": 1212,\n\t\t\t\t\t\t\t\"duration\": 1212,\n\t\t\t\t\t\t\t\"steps\": \"gfhgfh\",\n\t\t\t\t\t\t\t\"createdAt\": \"2025-08-26T07:45:13.322+00:00\",\n\t\t\t\t\t\t\t\"modifiedAt\": \"2025-08-26T07:45:13.322+00:00\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"routeId\": \"4\",\n\t\t\t\t\t\t\t\"orderId\": \"3\",\n\t\t\t\t\t\t\t\"vehicleId\": \"1\",\n\t\t\t\t\t\t\t\"timestamp\": \"2323\",\n\t\t\t\t\t\t\t\"distance\": 2323,\n\t\t\t\t\t\t\t\"duration\": 2323,\n\t\t\t\t\t\t\t\"steps\": \"sdasdf\",\n\t\t\t\t\t\t\t\"createdAt\": \"2027-08-26T09:42:20.330+00:00\",\n\t\t\t\t\t\t\t\"modifiedAt\": \"2025-08-26T09:42:20.330+00:00\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"vehicleId\": \"3\",\n\t\t\t\t\"vehicleWorkNumber\": \"1\",\n\t\t\t\t\"vehicleTestNumber\": \"1\",\n\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\"color\": \"Black\",\n\t\t\t\t\"licensePlate\": \"JP-1002\",\n\t\t\t\t\"vinNumber\": \"VIN0002DEF\",\n\t\t\t\t\"createdAt\": \"2025-08-02T16:15:00.000+00:00\",\n\t\t\t\t\"qrUrl\": \"https://rhpfrontendendpointstd-fjapb2gjdxhbbbfk.a02.azurefd.net/rhp-passenger-dev/vehicles-qr%2F20250829_041112_d55299dc\",\n\t\t\t\t\"provisionStatus\": \"C\",\n\t\t\t\t\"groups\": [],\n\t\t\t\t\"vehicleStatus\": {\n\t\t\t\t\t\"vehicleStatusId\": \"vs_3\",\n\t\t\t\t\t\"eventCode\": \"OPER\",\n\t\t\t\t\t\"eventDetail\": \"In Operation\",\n\t\t\t\t\t\"currentSpeed\": 50.0,\n\t\t\t\t\t\"deviceTime\": \"1755475500000\",\n\t\t\t\t\t\"status\": 2,\n\t\t\t\t\t\"timeStamp\": \"2025-08-18 16:05:00\",\n\t\t\t\t\t\"batteryLevel\": 85,\n\t\t\t\t\t\"latitude\": 34.6937,\n\t\t\t\t\t\"longitude\": 135.5023,\n\t\t\t\t\t\"engineStatus\": \"ON\",\n\t\t\t\t\t\"createdAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"remainingDistance\": \"100\",\n\t\t\t\t\t\"remainingDuration\": \"60\",\n\t\t\t\t\t\"direction\": 90.0,\n\t\t\t\t\t\"height\": null,\n\t\t\t\t\t\"accuracy\": 98.0\n\t\t\t\t},\n\t\t\t\t\"vehicleType\": {\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\t\"vehicleTypeCode\": \"APRT9\",\n\t\t\t\t\t\"vehicleTypeName\": \"APOLLo rT698\",\n\t\t\t\t\t\"description\": \"Apollo RT6 is a self-driving electric vehicle designed for ride-hailing services1\",\n\t\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\t\"imageUrl\": \"https://kintsugi.blob.core.windows.net/rhp-passenger-dev/vehicle-type%2F1%2F20250829_023715_a274a46f.png\",\n\t\t\t\t\t\"baseFare\": 93.0,\n\t\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:39:39.579+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-09-03T15:17:21.960+00:00\",\n\t\t\t\t\t\"disable\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"vehicleId\": \"4\",\n\t\t\t\t\"vehicleWorkNumber\": \"1\",\n\t\t\t\t\"vehicleTestNumber\": \"1\",\n\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\"color\": \"Silver\",\n\t\t\t\t\"licensePlate\": \"JP-1003\",\n\t\t\t\t\"vinNumber\": \"VIN0003GHI\",\n\t\t\t\t\"createdAt\": \"2025-08-03T17:20:00.000+00:00\",\n\t\t\t\t\"qrUrl\": \"\",\n\t\t\t\t\"provisionStatus\": \"C\",\n\t\t\t\t\"defaultDepot\": {\n\t\t\t\t\t\"depotId\": \"1\",\n\t\t\t\t\t\"name\": \"ds dddddfd\",\n\t\t\t\t\t\"latitude\": 35.0,\n\t\t\t\t\t\"longitude\": 134.0,\n\t\t\t\t\t\"createdAt\": \"2025-08-20T17:08:14.177+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-29T04:41:45.974+00:00\",\n\t\t\t\t\t\"address\": null,\n\t\t\t\t\t\"isDeleted\": null\n\t\t\t\t},\n\t\t\t\t\"groups\": [],\n\t\t\t\t\"vehicleStatus\": {\n\t\t\t\t\t\"vehicleStatusId\": \"vs_4\",\n\t\t\t\t\t\"eventCode\": \"STBY\",\n\t\t\t\t\t\"eventDetail\": \"Standby at depot\",\n\t\t\t\t\t\"currentSpeed\": 0.0,\n\t\t\t\t\t\"deviceTime\": \"1755475800000\",\n\t\t\t\t\t\"status\": 3,\n\t\t\t\t\t\"timeStamp\": \"2025-08-18 16:10:00\",\n\t\t\t\t\t\"batteryLevel\": 90,\n\t\t\t\t\t\"latitude\": 35.1815,\n\t\t\t\t\t\"longitude\": 136.9066,\n\t\t\t\t\t\"engineStatus\": \"OFF\",\n\t\t\t\t\t\"createdAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"remainingDistance\": \"0\",\n\t\t\t\t\t\"remainingDuration\": \"0\",\n\t\t\t\t\t\"direction\": 180.0,\n\t\t\t\t\t\"height\": null,\n\t\t\t\t\t\"accuracy\": 97.0\n\t\t\t\t},\n\t\t\t\t\"vehicleType\": {\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\t\"vehicleTypeCode\": \"APRT9\",\n\t\t\t\t\t\"vehicleTypeName\": \"APOLLo rT698\",\n\t\t\t\t\t\"description\": \"Apollo RT6 is a self-driving electric vehicle designed for ride-hailing services1\",\n\t\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\t\"imageUrl\": \"https://kintsugi.blob.core.windows.net/rhp-passenger-dev/vehicle-type%2F1%2F20250829_023715_a274a46f.png\",\n\t\t\t\t\t\"baseFare\": 93.0,\n\t\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:39:39.579+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-09-03T15:17:21.960+00:00\",\n\t\t\t\t\t\"disable\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"vehicleId\": \"5\",\n\t\t\t\t\"vehicleWorkNumber\": \"1\",\n\t\t\t\t\"vehicleTestNumber\": \"1\",\n\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\"color\": \"Blue\",\n\t\t\t\t\"licensePlate\": \"JP-1004\",\n\t\t\t\t\"vinNumber\": \"VIN0004JKL\",\n\t\t\t\t\"createdAt\": \"2025-08-04T18:25:00.000+00:00\",\n\t\t\t\t\"qrUrl\": \"\",\n\t\t\t\t\"provisionStatus\": \"C\",\n\t\t\t\t\"groups\": [],\n\t\t\t\t\"vehicleStatus\": {\n\t\t\t\t\t\"vehicleStatusId\": \"vs_5\",\n\t\t\t\t\t\"eventCode\": \"OFFL\",\n\t\t\t\t\t\"eventDetail\": \"Offline for update\",\n\t\t\t\t\t\"currentSpeed\": 0.0,\n\t\t\t\t\t\"deviceTime\": \"1755476100000\",\n\t\t\t\t\t\"status\": 4,\n\t\t\t\t\t\"timeStamp\": \"2025-08-18 16:15:00\",\n\t\t\t\t\t\"batteryLevel\": 70,\n\t\t\t\t\t\"latitude\": 33.5902,\n\t\t\t\t\t\"longitude\": 130.4017,\n\t\t\t\t\t\"engineStatus\": \"OFF\",\n\t\t\t\t\t\"createdAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"remainingDistance\": \"0\",\n\t\t\t\t\t\"remainingDuration\": \"0\",\n\t\t\t\t\t\"direction\": 270.0,\n\t\t\t\t\t\"height\": null,\n\t\t\t\t\t\"accuracy\": 90.0\n\t\t\t\t},\n\t\t\t\t\"vehicleType\": {\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\t\"vehicleTypeCode\": \"APRT9\",\n\t\t\t\t\t\"vehicleTypeName\": \"APOLLo rT698\",\n\t\t\t\t\t\"description\": \"Apollo RT6 is a self-driving electric vehicle designed for ride-hailing services1\",\n\t\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\t\"imageUrl\": \"https://kintsugi.blob.core.windows.net/rhp-passenger-dev/vehicle-type%2F1%2F20250829_023715_a274a46f.png\",\n\t\t\t\t\t\"baseFare\": 93.0,\n\t\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:39:39.579+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-09-03T15:17:21.960+00:00\",\n\t\t\t\t\t\"disable\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"vehicleId\": \"6\",\n\t\t\t\t\"vehicleWorkNumber\": \"1\",\n\t\t\t\t\"vehicleTestNumber\": \"1\",\n\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\"color\": \"Red\",\n\t\t\t\t\"licensePlate\": \"JP-1005\",\n\t\t\t\t\"vinNumber\": \"VIN0005MNO\",\n\t\t\t\t\"createdAt\": \"2025-08-05T19:30:00.000+00:00\",\n\t\t\t\t\"qrUrl\": \"\",\n\t\t\t\t\"provisionStatus\": \"C\",\n\t\t\t\t\"groups\": [],\n\t\t\t\t\"vehicleStatus\": {\n\t\t\t\t\t\"vehicleStatusId\": \"vs_6\",\n\t\t\t\t\t\"eventCode\": \"AVAIL\",\n\t\t\t\t\t\"eventDetail\": \"Available for trip\",\n\t\t\t\t\t\"currentSpeed\": 0.0,\n\t\t\t\t\t\"deviceTime\": \"1755476400000\",\n\t\t\t\t\t\"status\": 5,\n\t\t\t\t\t\"timeStamp\": \"2025-08-18 16:20:00\",\n\t\t\t\t\t\"batteryLevel\": 95,\n\t\t\t\t\t\"latitude\": 43.0642,\n\t\t\t\t\t\"longitude\": 141.3545,\n\t\t\t\t\t\"engineStatus\": \"ON\",\n\t\t\t\t\t\"createdAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"remainingDistance\": \"0\",\n\t\t\t\t\t\"remainingDuration\": \"0\",\n\t\t\t\t\t\"direction\": 0.0,\n\t\t\t\t\t\"height\": null,\n\t\t\t\t\t\"accuracy\": 99.0\n\t\t\t\t},\n\t\t\t\t\"vehicleType\": {\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\t\"vehicleTypeCode\": \"APRT9\",\n\t\t\t\t\t\"vehicleTypeName\": \"APOLLo rT698\",\n\t\t\t\t\t\"description\": \"Apollo RT6 is a self-driving electric vehicle designed for ride-hailing services1\",\n\t\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\t\"imageUrl\": \"https://kintsugi.blob.core.windows.net/rhp-passenger-dev/vehicle-type%2F1%2F20250829_023715_a274a46f.png\",\n\t\t\t\t\t\"baseFare\": 93.0,\n\t\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:39:39.579+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-09-03T15:17:21.960+00:00\",\n\t\t\t\t\t\"disable\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"vehicleId\": \"10\",\n\t\t\t\t\"vehicleWorkNumber\": \"1\",\n\t\t\t\t\"vehicleTestNumber\": \"1\",\n\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\"color\": \"White\",\n\t\t\t\t\"licensePlate\": \"JP-1009\",\n\t\t\t\t\"vinNumber\": \"VIN0009YZA\",\n\t\t\t\t\"createdAt\": \"2025-08-09T23:50:00.000+00:00\",\n\t\t\t\t\"qrUrl\": \"\",\n\t\t\t\t\"provisionStatus\": \"C\",\n\t\t\t\t\"groups\": [],\n\t\t\t\t\"vehicleStatus\": {\n\t\t\t\t\t\"vehicleStatusId\": \"vs_10\",\n\t\t\t\t\t\"eventCode\": \"OPER\",\n\t\t\t\t\t\"eventDetail\": \"In Operation\",\n\t\t\t\t\t\"currentSpeed\": 50.0,\n\t\t\t\t\t\"deviceTime\": \"1755475500000\",\n\t\t\t\t\t\"status\": 2,\n\t\t\t\t\t\"timeStamp\": \"2025-08-18 16:05:00\",\n\t\t\t\t\t\"batteryLevel\": 85,\n\t\t\t\t\t\"latitude\": 34.6937,\n\t\t\t\t\t\"longitude\": 135.5023,\n\t\t\t\t\t\"engineStatus\": \"ON\",\n\t\t\t\t\t\"createdAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"remainingDistance\": \"100\",\n\t\t\t\t\t\"remainingDuration\": \"60\",\n\t\t\t\t\t\"direction\": 90.0,\n\t\t\t\t\t\"height\": null,\n\t\t\t\t\t\"accuracy\": 98.0\n\t\t\t\t},\n\t\t\t\t\"vehicleType\": {\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\t\"vehicleTypeCode\": \"APRT9\",\n\t\t\t\t\t\"vehicleTypeName\": \"APOLLo rT698\",\n\t\t\t\t\t\"description\": \"Apollo RT6 is a self-driving electric vehicle designed for ride-hailing services1\",\n\t\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\t\"imageUrl\": \"https://kintsugi.blob.core.windows.net/rhp-passenger-dev/vehicle-type%2F1%2F20250829_023715_a274a46f.png\",\n\t\t\t\t\t\"baseFare\": 93.0,\n\t\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:39:39.579+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-09-03T15:17:21.960+00:00\",\n\t\t\t\t\t\"disable\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"vehicleId\": \"1\",\n\t\t\t\t\"vehicleWorkNumber\": \"1\",\n\t\t\t\t\"vehicleTestNumber\": \"1\",\n\t\t\t\t\"vehicleModel\": \"model\",\n\t\t\t\t\"color\": \"Fe\",\n\t\t\t\t\"licensePlate\": \"LICENSE\",\n\t\t\t\t\"vinNumber\": \"123123123\",\n\t\t\t\t\"createdAt\": \"2025-08-12T02:41:29.053+00:00\",\n\t\t\t\t\"qrUrl\": \"https://rhpfrontendendpointstd-fjapb2gjdxhbbbfk.a02.azurefd.net/rhp-passenger-dev/vehicles-qr%2F20250829_040902_1d8c4f08\",\n\t\t\t\t\"provisionStatus\": \"C\",\n\t\t\t\t\"groups\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"groupId\": \"1\",\n\t\t\t\t\t\t\"groupCode\": \"Abc\",\n\t\t\t\t\t\t\"groupName\": \"Group Test\",\n\t\t\t\t\t\t\"description\": \"Group Test\",\n\t\t\t\t\t\t\"createdAt\": \"2025-08-18T14:14:56.157+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-08-18T14:14:56.157+00:00\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"vehicleStatus\": {\n\t\t\t\t\t\"vehicleStatusId\": \"vs_11\",\n\t\t\t\t\t\"eventCode\": \"OPER\",\n\t\t\t\t\t\"eventDetail\": \"In Operation\",\n\t\t\t\t\t\"currentSpeed\": 50.0,\n\t\t\t\t\t\"deviceTime\": \"1755475500000\",\n\t\t\t\t\t\"status\": 2,\n\t\t\t\t\t\"timeStamp\": \"2025-08-18 16:05:00\",\n\t\t\t\t\t\"batteryLevel\": 85,\n\t\t\t\t\t\"latitude\": 34.6937,\n\t\t\t\t\t\"longitude\": 135.5023,\n\t\t\t\t\t\"engineStatus\": \"ON\",\n\t\t\t\t\t\"createdAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"remainingDistance\": \"100\",\n\t\t\t\t\t\"remainingDuration\": \"60\",\n\t\t\t\t\t\"direction\": 90.0,\n\t\t\t\t\t\"height\": null,\n\t\t\t\t\t\"accuracy\": 98.0\n\t\t\t\t},\n\t\t\t\t\"vehicleType\": {\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\t\"vehicleTypeCode\": \"APRT9\",\n\t\t\t\t\t\"vehicleTypeName\": \"APOLLo rT698\",\n\t\t\t\t\t\"description\": \"Apollo RT6 is a self-driving electric vehicle designed for ride-hailing services1\",\n\t\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\t\"imageUrl\": \"https://kintsugi.blob.core.windows.net/rhp-passenger-dev/vehicle-type%2F1%2F20250829_023715_a274a46f.png\",\n\t\t\t\t\t\"baseFare\": 93.0,\n\t\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:39:39.579+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-09-03T15:17:21.960+00:00\",\n\t\t\t\t\t\"disable\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"vehicleId\": \"7\",\n\t\t\t\t\"vehicleWorkNumber\": \"1\",\n\t\t\t\t\"vehicleTestNumber\": \"1\",\n\t\t\t\t\"vehicleModel\": \"RT6\",\n\t\t\t\t\"color\": \"Green\",\n\t\t\t\t\"licensePlate\": \"JP-1006\",\n\t\t\t\t\"vinNumber\": \"VIN0006PQR\",\n\t\t\t\t\"createdAt\": \"2028-08-06T20:35:00.000+00:00\",\n\t\t\t\t\"qrUrl\": \"\",\n\t\t\t\t\"provisionStatus\": \"C\",\n\t\t\t\t\"groups\": [],\n\t\t\t\t\"vehicleStatus\": {\n\t\t\t\t\t\"vehicleStatusId\": \"vs_7\",\n\t\t\t\t\t\"eventCode\": \"ONTRP\",\n\t\t\t\t\t\"eventDetail\": \"On trip to destination\",\n\t\t\t\t\t\"currentSpeed\": 40.0,\n\t\t\t\t\t\"deviceTime\": \"1755476700000\",\n\t\t\t\t\t\"status\": 6,\n\t\t\t\t\t\"timeStamp\": \"2025-08-18 16:25:00\",\n\t\t\t\t\t\"batteryLevel\": 88,\n\t\t\t\t\t\"latitude\": 35.0116,\n\t\t\t\t\t\"longitude\": 135.7681,\n\t\t\t\t\t\"engineStatus\": \"ON\",\n\t\t\t\t\t\"createdAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-08-18T08:01:53.056+00:00\",\n\t\t\t\t\t\"remainingDistance\": \"15\",\n\t\t\t\t\t\"remainingDuration\": \"10\",\n\t\t\t\t\t\"direction\": 45.0,\n\t\t\t\t\t\"height\": null,\n\t\t\t\t\t\"accuracy\": 98.0\n\t\t\t\t},\n\t\t\t\t\"vehicleType\": {\n\t\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\t\"vehicleTypeGroup\": \"CAR\",\n\t\t\t\t\t\"vehicleTypeCode\": \"APRT9\",\n\t\t\t\t\t\"vehicleTypeName\": \"APOLLo rT698\",\n\t\t\t\t\t\"description\": \"Apollo RT6 is a self-driving electric vehicle designed for ride-hailing services1\",\n\t\t\t\t\t\"seatCapacity\": 4,\n\t\t\t\t\t\"imageUrl\": \"https://kintsugi.blob.core.windows.net/rhp-passenger-dev/vehicle-type%2F1%2F20250829_023715_a274a46f.png\",\n\t\t\t\t\t\"baseFare\": 93.0,\n\t\t\t\t\t\"farePerDistance\": 10.0,\n\t\t\t\t\t\"createdAt\": \"2025-08-12T02:39:39.579+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2025-09-03T15:17:21.960+00:00\",\n\t\t\t\t\t\"disable\": false\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 8,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES, VEHICLE_TYPES, VEHICLE_STATUS, VEHICLE_MODELS, OPERATORS_GROUPS, VEHICLES_GROUPS, TRIP_ORDERS (GET)"]
[null,11,"/vehicles/search?licensePlate=","GET","Admin can search for vehicles by license plate. Operator can search for vehicles that he operates\n\nInternal vehicle status code\n1: AVAILABLE\n2: PICKING\n3: ON_TRIP\n4: RETURNING\n5: OPERATIONS\n6: MAINTENANCE\n7: OFFLINE\n8: DISCONNECTED  (field isConnected : false)\n9: FAULTED\n10: HIBERNATE","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"vehicleId\": \"e694d66d-4161-4f84-b20f-a5c41df4fd24\",\n\t\t\t\"vehicleWorkNumber\": \"asdasdasd\",\n\t\t\t\"vehicleTestNumber\": \"test\",\n\t\t\t\"color\": \"Black\",\n\t\t\t\"licensePlate\": \"test\",\n\t\t\t\"vinNumber\": \"VIN11111111111111\",\n\t\t\t\"createdAt\": \"2025-08-15T06:56:37.484+00:00\",\n\t\t\t\"provisionStatus\": \"R\",\n\t\t\t\"vehicleStatus\": {\n\t\t\t\t\"vehicleStatusId\": null,\n\t\t\t\t\"eventCode\": null,\n\t\t\t\t\"eventDetail\": null,\n\t\t\t\t\"currentSpeed\": null,\n\t\t\t\t\"deviceTime\": null,\n\t\t\t\t\"status\": null,\n\t\t\t\t\"timeStamp\": null,\n\t\t\t\t\"batteryLevel\": null,\n\t\t\t\t\"latitude\": null,\n\t\t\t\t\"longitude\": null,\n\t\t\t\t\"engineStatus\": null,\n\t\t\t\t\"createdAt\": \"2025-08-15T06:56:37.484+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-15T06:56:37.484+00:00\",\n\t\t\t\t\"remainingDistance\": null,\n\t\t\t\t\"remainingDuration\": null,\n\t\t\t\t\"direction\": null,\n\t\t\t\t\"height\": null,\n\t\t\t\t\"accuracy\": null, \"internalVehicleStatus\": 1\n\t\t\t},\n\t\t\t\"vehicleType\": {\n\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\"vehicleTypeGroup\": null,\n\t\t\t\t\"vehicleTypeCode\": null,\n\t\t\t\t\"vehicleTypeName\": null,\n\t\t\t\t\"description\": null,\n\t\t\t\t\"seatCapacity\": null,\n\t\t\t\t\"imageUrl\": null,\n\t\t\t\t\"baseFare\": null,\n\t\t\t\t\"farePerDistance\": null,\n\t\t\t\t\"createdAt\": \"2025-08-15T06:56:37.484+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-15T06:56:37.484+00:00\",\n\t\t\t\t\"disable\": false\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"vehicleId\": \"VEHICLE_MOMENTA_1234\",\n\t\t\t\"vehicleWorkNumber\": \"VW001\",\n\t\t\t\"vehicleTestNumber\": \"VT001\",\n\t\t\t\"vehicleModel\": \"Model 3\",\n\t\t\t\"color\": \"White\",\n\t\t\t\"licensePlate\": \"TEST-001\",\n\t\t\t\"vinNumber\": \"VIN232323232\",\n\t\t\t\"cameraLink\": \"https://camera.example.com/vehicle1\",\n\t\t\t\"createdAt\": \"2025-07-30T18:25:57.556+00:00\",\n\t\t\t\"provisionStatus\": \"R\",\n\t\t\t\"vehicleStatus\": {\n\t\t\t\t\"vehicleStatusId\": null,\n\t\t\t\t\"eventCode\": null,\n\t\t\t\t\"eventDetail\": null,\n\t\t\t\t\"currentSpeed\": null,\n\t\t\t\t\"deviceTime\": null,\n\t\t\t\t\"status\": null,\n\t\t\t\t\"timeStamp\": null,\n\t\t\t\t\"batteryLevel\": null,\n\t\t\t\t\"latitude\": null,\n\t\t\t\t\"longitude\": null,\n\t\t\t\t\"engineStatus\": null,\n\t\t\t\t\"createdAt\": \"2025-07-30T18:25:57.556+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-30T18:25:57.556+00:00\",\n\t\t\t\t\"remainingDistance\": null,\n\t\t\t\t\"remainingDuration\": null,\n\t\t\t\t\"direction\": null,\n\t\t\t\t\"height\": null,\n\t\t\t\t\"accuracy\": null\n\t\t\t},\n\t\t\t\"vehicleType\": {\n\t\t\t\t\"vehicleTypeId\": \"1\",\n\t\t\t\t\"vehicleTypeGroup\": null,\n\t\t\t\t\"vehicleTypeCode\": null,\n\t\t\t\t\"vehicleTypeName\": null,\n\t\t\t\t\"description\": null,\n\t\t\t\t\"seatCapacity\": null,\n\t\t\t\t\"imageUrl\": null,\n\t\t\t\t\"baseFare\": null,\n\t\t\t\t\"farePerDistance\": null,\n\t\t\t\t\"createdAt\": \"2025-07-30T18:25:57.556+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-07-30T18:25:57.556+00:00\",\n\t\t\t\t\"disable\": false\n\t\t\t}\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","VEHICLES, VEHICLES_GROUPS(GET)"]
[null,12,"/vehicles/searchVehicleHistories/{id}","POST","Admin can search for vehicle history by vehicle id","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"pageNumber\": 0,\n\t\"pageSize\": 20,\n\t\t\"sortDirection\": \"DESC\",\n\t\"sortBy\": \"createdAt\",\n\t\"filters\": {\n\t\t\"createdAt\": {\n\t\t\t\"from\":\"2024-09-04T05:04:24.363+00:00\",\n\t\t\t\"to\":\"2028-09-04T05:04:24.363+00:00\"\n\t\t}\n\t}\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n                \"id\": 9303644,\n                \"vehicleId\": \"P0001\",\n                \"lon\": 54.44004738,\n                \"lat\": 24.41769431,\n                \"accuracy\": 0.0,\n                \"direction\": 286.7451,\n                \"speed\": 0.0,\n                \"height\": 0.0,\n                \"deviceTime\": 1775804052579,\n                \"momentaOrderId\": \"\",\n                \"momentaRouteId\": \"847824070650213584\",\n                \"remainingDistance\": \"17\",\n                \"remainingDuration\": \"1\",\n                \"momentaTaskId\": \"PAYLOAD_NODERED_HARDCODE_VP0001\",\n                \"vehicleStatus\": 2,\n                \"tripId\": null,\n                \"rideId\": null,\n\"remainingBattery\": 100,\n                \"createdAt\": \"2026-04-10T06:54:12.730+00:00\",\n                \"modifiedAt\": \"2026-04-10T06:54:12.730+00:00\"\n            },\n            {\n                \"id\": 9303586,\n                \"vehicleId\": \"P0001\",\n                \"lon\": 54.44013808,\n                \"lat\": 24.41766946,\n                \"accuracy\": 0.0,\n                \"direction\": 286.7451,\n                \"speed\": 0.0,\n                \"height\": 0.0,\n                \"deviceTime\": 1775804051579,\n                \"momentaOrderId\": \"\",\n                \"momentaRouteId\": \"847824070650213584\",\n                \"remainingDistance\": \"26\",\n                \"remainingDuration\": \"2\",\n                \"momentaTaskId\": \"PAYLOAD_NODERED_HARDCODE_VP0001\",\n                \"vehicleStatus\": 2,\n                \"tripId\": null,\n                \"rideId\": null,\n\"remainingBattery\": 100,\n                \"createdAt\": \"2026-04-10T06:54:11.696+00:00\",\n                \"modifiedAt\": \"2026-04-10T06:54:11.696+00:00\"\n            }\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 20,\n\t\t\"totalElements\": 1,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","HEARTBEAT_DATA, TRIPS, TRIP_ORDERS (GET)"]
[null,13,"/admin/generateQR","GET","Api to generate and reponse with QR link","\"Authorization\": \"Bearer <accessToken>\"","request params: ?vehicleId","N/A",null,"HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n-status.code:2 => Can not found vehicle id\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","vehicles (UPDATE)"]
[null,14,"/admin/vehicles/assignDriver","PUT","Api to assign driver to vehicle","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"vehicleId\" (R): \"P0001\",\n\t\"driverId\":  null //can be null when unassign\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n-status.code: 2 => Driver Not Found\n-status.code: 3=> Get detail vehicle failed\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","vehicles (GET, UPDATE), admin_account (GET), vehicle_statuses (GET)"]
[null,15,"/admin/vehicles/checkDriverLinkedOtherVehicles","GET","Api to check whether driver is assigned to vehicles or not.\nRequest param:\n/core/admin/vehicles/checkDriverLinkedOtherVehicles?driverId=a3f6976c-b818-4bef-b06f-880f26a0fe25&vehicleId=AV0004\n\nIf data is true means warning should be shown","\"Authorization\": \"Bearer <accessToken>\"","request params:\n\ndriverId (R): must always include driverId\nvehicleId (O); when assign driver to vehicle (edit), include vehicleId. When assign driver to vehicle (create vehicle page), the vehicleId can be left empty ","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Warning! Driver is already linked to other vehicles\"\n\t},\n\"data\": true\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n-status.code: 2 => Driver Not Found\n-status.code: 3=> Get detail vehicle failed\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","vehicles (GET),\nadmin_account (GET)"]
[null,16,"/admin/vehicles/control","POST","Send a vehicle control command from the admin portal.","\"Authorization\": \"Bearer <accessToken>\"","tripId (R, string): Platform trip ID.\n\nsceneType (R, string):\nSTART_TRIP\nFLASH_FIND\nEMERGENCY_STOP\nLOCK_DOOR\nUNLOCK_DOOR\nBACK_TO_DEPOT (được phép ở validation nhưng service hiện chưa support → sẽ lỗi code 10)","N/A","\n\"status\": {\t\t\t\t\t\t\t\t\t\n\"code\": 0,\n\"message\": \"VEHICLE_CONTROL_SUCCESS\"\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\ninvalid/missing accessToken in request header\n\nHTTP CODE: 400\n-status.code: 1 => invalid/missing input. error field: [{ field : <field name>, error: <error message> }]\ntripId: Trip ID is required\nsceneType: Scene type is required / Scene type must be one of: START_TRIP, FLASH_FIND, EMERGENCY_STOP, LOCK_DOOR, UNLOCK_DOOR, BACK_TO_DEPOT\n-status.code: 2 => Trip is not found.\n-status.code: 3 => No vehicle has been assigned to this trip yet.\n-status.code: 4 => No active trip order found for this vehicle.\n-status.code: 5 => Trip inspection failed (return with inspectionResult in data, message = exception message)\n-status.code: 6 => Unable to start the trip. The passenger must be ready to depart.\n-status.code: 7 => Unable to activate flash find. This action is only available while the vehicle is enroute to pickup or the passenger is aboard.\n-status.code: 8 => Unable to trigger emergency stop. This action is only available while the vehicle is actively moving.\n-status.code: 9 => Unable to lock the door. This action is only available while the passenger is aboard or after the trip has ended.\n-status.code: 10 => Unable to unlock the door. This action is only available when the vehicle has arrived at the pickup point, the passenger is aboard, or the vehicle has arrived at the destination.\n-status.code: 11 => The requested vehicle control action is not supported.\n-status.code: 12 => Cannot call inspection to CCMomenta Service.\n-status.code: 13 => Cannot call inspection to Connected Car.\n-status.code: 14 => Cannot call vehicle control to CCMomenta Service.\n-status.code: 15 => Cannot call vehicle control to Connected Car.\n\nHTTP CODE: 500\nstatus.code = 9999 => unknown error occurred, contact administrator","TRIPS, TRIP_ORDERS (GET)"]
[null,17,"/admin/vehicles/exportVehicleHistories/{id}/token","POST","Create a signed download token containing vehicleId + export params + expiry. Response with the download link file with token","\"Authorization\": \"Bearer <accessToken>\"","Request path id: vehicleID","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}, \n\"data\": {\n\"downloadUrl\": \"/admin/vehicles/exportVehicleHistories/download/{token}\"\n}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\ninvalid/missing accessToken in request header\n\nHTTP CODE: 500\nstatus.code = 9999 => unknown error occurred, contact administrator"]
[null,18,"/exportVehicleHistories/download/{token}","GET","Stream CSV download. Parses and validates the signed token (checks\n     * signature + expiry). No JWT or server-side lookup needed.\n\nResponse with csv file, csv header\n\"No.\", \"VIN\", \"License Plate\", \"Latitude\", \"Longitude\", \"Accuracy\",\n            \"Speed\", \"Heading\", \"Height\", \"Vehicle Status\", \"Internal Vehicle Status\", \"Battery\", \"Device Time\",\n            \"Momenta Order ID\", \"Momenta Route ID\", \"Remaining Distance\", \"Remaining Duration\", \"Momenta Task ID\",\n            \"Ride ID\", \"Time\"","\"Authorization\": \"Bearer <accessToken>\"","Request path token: token ","N/A","file: ","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\ninvalid/missing accessToken in request header\n\nHTTP CODE: 500\nstatus.code = 9999 => unknown error occurred, contact administrator","TRIPS, TRIP_ORDERS, HEARTBEAT_DATA (GET)"]

{"sheet":"API Notifications","index":28,"n_rows":25,"n_cols":11,"rows_kept":25,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","API admin's notifications"]
[null,"Description","APIs for admin's notifications"]
[null,"Created User","KietHT9@fpt.com"]
[null,"Created Date","2025-08-14"]
[null,"Updated User","KietHT9@fpt.com"]
[null,"Updated Date","2025-12-22"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Notifications"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/admin/notifications/search","POST","\nAPI to get admin's notifications. \n\nTotal Notifications Not Read\nThe filter can be used in the future, based on design, the filters and global search can be left empty. \n\n{\n\t\"pageNumber\": 0,\n\t\"pageSize\": 100,\n\t\"sortBy\": \"createdAt\", //type, content, createdAt, readAt, title, isRead\n\t\"sortDirection\": \"DESC\",\n\t\"filters\": {\n\t}\n}","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"pageNumber\": 0,\n\t\"pageSize\": 100,\n\t\"sortBy\": \"createdAt\",\n\t\"sortDirection\": \"ASC\",\n\t\"filters\" (R): {\n\t\t\"isRead\" (O): true,\n\t\t\"content\" (O): \"System\",\n\t\t\"type\" (O): \"SYSTEM\",\n\t\t\"title\" (O): \"Title\",\n\t\t\"readAt\" (O): \"2025-08-13T08:57:48.786+00:00\",\n\t\t\"createdAt\" (O): \"2025-08-13T08:57:48.786+00:00\"\n\t},\n\t\"globalSearch\" (O): \"SYSTEM1\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"notificationId\": \"088be308-d837-4a5e-ac17-39bb83d236cd\",\n\t\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n\t\t\t\t\"type\": \"SYSTEM_ALERT1\",\n\t\t\t\t\"title\": \"System maintenance scheduled123\",\n\t\t\t\t\"content\": \"The system will be down for scheduled maintenance at 23:00 tonight.1\",\n\t\t\t\t\"data\": null,\n\t\t\t\t\"isRead\": false,\n\t\t\t\t\"readAt\": null,\n\t\t\t\t\"createdAt\": \"2025-08-13T08:57:48.786+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-13T08:57:48.786+00:00\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"notificationId\": \"21fd79cf-53de-4a58-b3ea-91c8d1fe8901\",\n\t\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n\t\t\t\t\"type\": \"SYSTEM_ALERT2\",\n\t\t\t\t\"title\": \"System maintenance scheduled123\",\n\t\t\t\t\"content\": \"The system will be down for scheduled maintenance at 23:00 tonight.2\",\n\t\t\t\t\"data\": null,\n\t\t\t\t\"isRead\": false,\n\t\t\t\t\"readAt\": null,\n\t\t\t\t\"createdAt\": \"2025-08-13T08:58:17.360+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-15T04:12:39.971+00:00\"\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 2,\n\t\t\"totalElements\": 2,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true,\n\t\t\"totalNotificationsNotRead\": 2\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_NOTIFICATION_HISTORIES(GET)"]
[null,2,"/admin/notifications/passenger/search","POST","API for admin to get passengers' notifications","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"pageNumber\": 0,\n\t\"pageSize\": 10,\n\t\"sortBy\": \"createdAt\", //createdAt, type, content\n\t\"sortDirection\": \"ASC\",\n\t\"filters\": {\n\t\t\"content\":\"hello world\",\n\t\t\"type\": \"hello\"\n\t}\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"elements\": [\n\t\t\t{\n\t\t\t\t\"notificationId\": \"25ee45a1-fbca-464b-b5e4-065f0810a0a3\",\n\t\t\t\t\"title\": \"hello\",\n\t\t\t\t\"content\": \"hello world 1\",\n\t\t\t\t\"data\": \"{title=hello, body=hello world}\",\n\t\t\t\t\"type\": \"1\",\n\t\t\t\t\"isRead\": false,\n\t\t\t\t\"readAt\": null,\n\t\t\t\t\"createdAt\": \"2021-08-13T08:14:30.966+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-13T08:14:30.966+00:00\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"notificationId\": \"5dd35a86-984d-4697-a128-18f05a5b1581\",\n\t\t\t\t\"title\": \"hello\",\n\t\t\t\t\"content\": \"hello world 2\",\n\t\t\t\t\"data\": \"{title=hello, body=hello world}\",\n\t\t\t\t\"type\": \"2\",\n\t\t\t\t\"isRead\": false,\n\t\t\t\t\"readAt\": \"2022-08-13T08:14:39.312+00:00\",\n\t\t\t\t\"createdAt\": \"2022-08-13T08:14:39.312+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-13T08:14:39.312+00:00\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"notificationId\": \"35aa5d33-0c38-4cac-b2ae-a516775ae1c1\",\n\t\t\t\t\"title\": \"hello\",\n\t\t\t\t\"content\": \"hello world 3\",\n\t\t\t\t\"data\": \"{title=hello, body=hello world}\",\n\t\t\t\t\"type\": \"3\",\n\t\t\t\t\"isRead\": true,\n\t\t\t\t\"readAt\": null,\n\t\t\t\t\"createdAt\": \"2023-08-13T08:16:46.169+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-13T08:16:46.169+00:00\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"notificationId\": \"0ea9a7e3-4c21-4054-9482-2dde3040127b\",\n\t\t\t\t\"title\": \"hello\",\n\t\t\t\t\"content\": \"hello world 4\",\n\t\t\t\t\"data\": \"{title=hello, body=hello world}\",\n\t\t\t\t\"type\": \"4\",\n\t\t\t\t\"isRead\": false,\n\t\t\t\t\"readAt\": null,\n\t\t\t\t\"createdAt\": \"2024-08-13T08:23:42.396+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-13T08:23:42.396+00:00\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"notificationId\": \"bed8f737-c05d-4659-80d6-57962c20dc68\",\n\t\t\t\t\"title\": \"hello\",\n\t\t\t\t\"content\": \"hello world 5\",\n\t\t\t\t\"data\": \"{title=hello, body=hello world}\",\n\t\t\t\t\"type\": \"5\",\n\t\t\t\t\"isRead\": false,\n\t\t\t\t\"readAt\": null,\n\t\t\t\t\"createdAt\": \"2025-08-13T08:24:15.756+00:00\",\n\t\t\t\t\"modifiedAt\": \"2025-08-13T08:24:15.756+00:00\"\n\t\t\t}\n\t\t],\n\t\t\"pageNumber\": 0,\n\t\t\"pageSize\": 10,\n\t\t\"totalElements\": 5,\n\t\t\"totalPages\": 1,\n\t\t\"last\": true\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","NOTIFICATION_HISTORIES (GET)"]
[null,3,"/admin/notifications/:id/read","PUT","API call when admin read a notificaiton by notification id","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Notification marked as read successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_NOTIFICATION_HISTORIES(UPDATE)"]
[null,4,"/admin/notifications/read","PUT","API call when admin marks read all notificaitons","\"Authorization\": \"Bearer <accessToken>\"",null,"N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"All notifications have been marked as read successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_NOTIFICATION_HISTORIES(UPDATE)"]
[null,5,"/admins/fcm/tokens/register","POST","API call when admin register fcm token","\"Authorization\": \"Bearer <accessToken>\"","{\n  \"fcmToken\" (R): \"aaaaa\",\n  \"browser\" (O): \"EDGE\",\n  \"browserVer\" (O): \"114.0.5735.111\",\n  \"os\" (O): \"Windows\",\n  \"osVer\" (O): \"10\",\n  \"userAgent\" (O): \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.110 Safari/537.36\"\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","WEB_PUSH_TOKENS(INSERT)"]
[null,6,"/admins/fcm/tokens","GET","Get all active web tokens of admin.\nExample req:\n/admins/fcm/tokens?adminId=1a260e38-79c9-4833-9333-ee9f1e07742f","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": [\n\t\t{\n\t\t\t\"webTokenId\": \"fab610fb-94b2-4f4d-8838-15b09d7f8a54\",\n\t\t\t\"adminId\": \"1a260e38-79c9-4833-9333-ee9f1e07742f\",\n\t\t\t\"fcmToken\": \"aaaaaaaaaaaaaaaaa\",\n\t\t\t\"browser\": \"EDGE\",\n\t\t\t\"browserVer\": \"114.0.5735.111\",\n\t\t\t\"os\": \"Windows\",\n\t\t\t\"osVer\": \"10\",\n\t\t\t\"userAgent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.110 Safari/537.36\",\n\t\t\t\"isActive\": true,\n\t\t\t\"lastUsedAt\": \"2025-08-20T03:08:46.567+00:00\",\n\t\t\t\"createdAt\": \"2025-08-13T04:52:37.986+00:00\",\n\t\t\t\"modifiedAt\": \"2025-08-20T03:08:46.567+00:00\"\n\t\t}\n\t]\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","WEB_PUSH_TOKENS(GET)"]
[null,7,"/admin/notifications","DELETE","Delete all notifications of admin.","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete all notifications successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_NOTIFICATION_HISTORIES(UPDATE)"]
[null,8,"/admin/notifications/:id","DELETE","Delete notification by id of admin.\n\nexample: /core/admin/notifications/3802f1d1-26bf-40f6-876e-96e71eb05112","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete notification successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_NOTIFICATION_HISTORIES(UPDATE)"]
[null,9,"/admin/notifications/bulk","DELETE","Delete multiple notifications of admin.\n","\"Authorization\": \"Bearer <accessToken>\"","{\n\t\"notificationIds\": [\n\t\t\"488cbc5a-fca4-4aac-9f2c-23a85344fdc5\",\n\t\t\"0cc8ca2c-6921-41d2-b803-cd93d6b71fb6\",\n\t\t\"06003c80-8163-476c-9a24-2e8f5a26820b\"\n\t]\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Delete notification successfully\"\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","ADMIN_NOTIFICATION_HISTORIES(UPDATE)"]

{"sheet":"API Get Log Management","index":29,"n_rows":18,"n_cols":11,"rows_kept":18,"cut":false,"hidden":false,"merged":[]}
[]
[null,"API Specification"]
[null,"Business Name","API admin get logs"]
[null,"Description","APIs for admin get logs"]
[null,"Created User","TrungNT147@fpt.com"]
[null,"Created Date","2025-12-22"]
[null,"Updated User","TrungNT147@fpt.com"]
[null,"Updated Date","2025-12-22"]
[]
[null,"MARKER","DESCRIPTION"]
[null,"R","Required"]
[null,"O","Optional (use null or empty string \"\" or not define field)"]
[]
[null,"API Notifications"]
[]
[null,"#","URL","METHOD","DESCRIPTION","REQUEST HEADER","REQUEST BODY","RESPONSE HEADER","RESPONSE BODY","RESPONSE HANDLING","DATABASE"]
[null,1,"/core/admin/api-logs/search","POST","\nAPI to get admin's notifications. \n\nTotal Notifications Not Read\nThe filter can be used in the future, based on design, the filters and global search can be left empty. \n\n{\n  \"pageNumber\": 0,                       \n  \"pageSize\": 20,                           // Items per page (min: 1, max: 100)\n  \"sortBy\": \"createdAt\",                    // createdAt | requestTime | durationMs | responseTime\n  \"sortDirection\": \"DESC\",                  // ASC | DESC\n  \"filters\": {\n    // Business Context Filters\n    \"tripId\": \"trip-123\",                   // Filter by trip ID (exact match)\n    \"vehicleId\": \"vehicle-456\",             // Filter by vehicle ID (exact match)\n    \"orderId\": \"order-789\",                 // Filter by order ID (exact match)\n    \"rideId\": \"RIDE-123\",                   // Filter by ride_id from trips table (pattern match, case-insensitive)\n    \"licensePlate\": \"51F\",                  // Filter by license_plate from vehicles table (pattern match, case-insensitive)\n\n    // Platform & API Filters\n    \"platformName\": \"Momenta\",              // Filter by platform name (exact match)\n    \"apiNames\": [\"VEHICLE_CONTROL\", \"...\"], // Single or multiple API names\n    \"apiType\": \"Async\",                     // \"Sync\" or \"Async\"\n\n    // Status Filters\n    \"statuses\": [\"S\", \"F\"],                 // P/S/F/T (request status)\n    \"callbackStatus\": \"S\",                  // P/S/E (callback status)\n\n    // Date Range\n    \"fromDate\": \"2024-01-01T00:00:00Z\",     // ISO 8601 format\n    \"toDate\": \"2024-01-31T23:59:59Z\",       // ISO 8601 format\n\n    // Performance Options\n    \"includeRequestBody\": false,            // Include request body (default: false)\n    \"includeResponseBody\": false,           // Include response body (default: false)\n    \"onlyWithCallbacks\": false              // Only show requests with callbacks\n  }\n}","\"Authorization\": \"Bearer <accessToken>\"","\nAPI to get admin's notifications. \n\nTotal Notifications Not Read\nThe filter can be used in the future, based on design, the filters and global search can be left empty. \n\n{\n  \"pageNumber\": 0,                       \n  \"pageSize\": 20,                           // Items per page (min: 1, max: 100)\n  \"sortBy\": \"createdAt\",                    // createdAt | requestTime | durationMs | responseTime\n  \"sortDirection\": \"DESC\",                  // ASC | DESC\n  \"filters\": {\n    // Business Context Filters\n    \"tripId\": \"trip-123\" (O),                   // Filter by trip ID (exact match)\n    \"vehicleId\": \"vehicle-456\"  (O),             // Filter by vehicle ID (exact match)\n    \"orderId\": \"order-789\"  (O),                 // Filter by order ID (exact match)\n    \"rideId\": \"RIDE-123\"  (O),                   // Filter by ride_id from trips table (pattern match, case-insensitive)\n    \"licensePlate\": \"51F\"  (O),                  // Filter by license_plate from vehicles table (pattern match, case-insensitive)\n\n    // Platform & API Filters\n    \"platformName\": \"Momenta\"  (O),              // Filter by platform name (exact match)\n    \"apiNames\": [\"VEHICLE_CONTROL\", \"...\"]  (O), // Single or multiple API names\n    \"apiType\": \"Async\"  (O),                     // \"Sync\" or \"Async\"\n\n    // Status Filters\n    \"statuses\": [\"S\", \"F\"]  (O),                 // P/S/F/T (request status)\n    \"callbackStatus\": \"S\"  (O),                  // P/S/E (callback status)\n\n    // Date Range\n    \"fromDate\": \"2024-01-01T00:00:00Z\"  (O),     // ISO 8601 format\n    \"toDate\": \"2024-01-31T23:59:59Z\"  (O),       // ISO 8601 format\n\n    // Performance Options\n    \"includeRequestBody\": false  (O),            // Include request body (default: false)\n    \"includeResponseBody\": false  (O),           // Include response body (default: false)\n    \"onlyWithCallbacks\": false     (O)          // Only show requests with callbacks\n  }\n}","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"pairs\": [\n\t\t\t{\n\t\t\t\t\"request\": {\n\t\t\t\t\t\"id\": 40,\n\t\t\t\t\t\"correlationId\": \"443cca0d-c69a-4bbb-8757-538cf895ddfe\",\n\t\t\t\t\t\"externalRefId\": \"8b009693-31e4-4b60-af55-105a9068f124\",\n\t\t\t\t\t\"tripId\": \"21cfd0be-bc47-4984-8cdf-f8e52c598473\",\n\t\t\t\t\t\"vehicleId\": \"AV0004\",\n\t\t\t\t\t\"orderId\": \"f3cfc4d1-4894-445b-a9b6-b38c326618f9\",\n\t\t\t\t\t\"platform\": {\n\t\t\t\t\t\t\"platformId\": \"1\",\n\t\t\t\t\t\t\"name\": \"MOMENTA\",\n\t\t\t\t\t\t\"description\": \"MOMENTA PLATFORM\",\n\t\t\t\t\t\t\"linkUrl\": null,\n\t\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\t\"createdAt\": \"2025-11-12T07:56:02.056+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-11-12T07:56:02.056+00:00\",\n\t\t\t\t\t\t\"isDeleted\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"endpoint\": \"/v1/td/order/vehicle_control\",\n\t\t\t\t\t\"httpMethod\": \"POST\",\n\t\t\t\t\t\"apiName\": \"VEHICLE_CONTROL\",\n\t\t\t\t\t\"requestBody\": null,\n\t\t\t\t\t\"responseCode\": 10000,\n\t\t\t\t\t\"responseBody\": null,\n\t\t\t\t\t\"requestTime\": \"2026-01-29T09:57:08.926+00:00\",\n\t\t\t\t\t\"responseTime\": \"2026-01-29T09:57:10.015+00:00\",\n\t\t\t\t\t\"durationMs\": 0,\n\t\t\t\t\t\"status\": \"S\",\n\t\t\t\t\t\"apiType\": \"async\",\n\t\t\t\t\t\"errorMessage\": null,\n\t\t\t\t\t\"hasCallback\": false,\n\t\t\t\t\t\"callbackCount\": 0,\n\t\t\t\t\t\"createdAt\": \"2026-01-29T09:57:08.926+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2026-01-29T09:57:10.015+00:00\"\n\t\t\t\t},\n\t\t\t\t\"callbacks\": [],\n\t\t\t\t\"totalCallbacks\": 0,\n\t\t\t\t\"successCallbacks\": 0,\n\t\t\t\t\"errorCallbacks\": 0,\n\t\t\t\t\"pendingCallbacks\": 0,\n\t\t\t\t\"totalLifecycleDurationMs\": null\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"request\": {\n\t\t\t\t\t\"id\": 41,\n\t\t\t\t\t\"correlationId\": \"14a0e3b5-6dea-4a26-a8a4-ffc6b83bdc63\",\n\t\t\t\t\t\"externalRefId\": \"f4c24926-1cca-4598-a8c1-01deeb4987b0\",\n\t\t\t\t\t\"tripId\": \"21cfd0be-bc47-4984-8cdf-f8e52c598473\",\n\t\t\t\t\t\"vehicleId\": \"AV0004\",\n\t\t\t\t\t\"orderId\": \"f3cfc4d1-4894-445b-a9b6-b38c326618f9\",\n\t\t\t\t\t\"platform\": {\n\t\t\t\t\t\t\"platformId\": \"1\",\n\t\t\t\t\t\t\"name\": \"MOMENTA\",\n\t\t\t\t\t\t\"description\": \"MOMENTA PLATFORM\",\n\t\t\t\t\t\t\"linkUrl\": null,\n\t\t\t\t\t\t\"isActive\": true,\n\t\t\t\t\t\t\"createdAt\": \"2025-11-12T07:56:02.056+00:00\",\n\t\t\t\t\t\t\"modifiedAt\": \"2025-11-12T07:56:02.056+00:00\",\n\t\t\t\t\t\t\"isDeleted\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"endpoint\": \"/v1/td/order/vehicle_control\",\n\t\t\t\t\t\"httpMethod\": \"POST\",\n\t\t\t\t\t\"apiName\": \"VEHICLE_CONTROL\",\n\t\t\t\t\t\"requestBody\": null,\n\t\t\t\t\t\"responseCode\": 10000,\n\t\t\t\t\t\"responseBody\": null,\n\t\t\t\t\t\"requestTime\": \"2026-01-29T10:02:10.203+00:00\",\n\t\t\t\t\t\"responseTime\": \"2026-01-29T10:02:11.431+00:00\",\n\t\t\t\t\t\"durationMs\": 1021,\n\t\t\t\t\t\"status\": \"S\",\n\t\t\t\t\t\"apiType\": \"async\",\n\t\t\t\t\t\"errorMessage\": null,\n\t\t\t\t\t\"hasCallback\": false,\n\t\t\t\t\t\"callbackCount\": 0,\n\t\t\t\t\t\"createdAt\": \"2026-01-29T10:02:10.203+00:00\",\n\t\t\t\t\t\"modifiedAt\": \"2026-01-29T10:02:11.431+00:00\"\n\t\t\t\t},\n\t\t\t\t\"callbacks\": [],\n\t\t\t\t\"totalCallbacks\": 0,\n\t\t\t\t\"successCallbacks\": 0,\n\t\t\t\t\"errorCallbacks\": 0,\n\t\t\t\t\"pendingCallbacks\": 0,\n\t\t\t\t\"totalLifecycleDurationMs\": null\n\t\t\t}\n\t\t],\n\t\t\"orphanedCallbacks\": null,\n\t\t\"currentPage\": 1,\n\t\t\"pageSize\": 2,\n\t\t\"totalRequests\": 6,\n\t\t\"totalOrphanedCallbacks\": 0,\n\t\t\"totalPages\": 3\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","API_REQUEST_LOGS(GET)\nAPI_CALLBACK_LOGS(GET)"]
[null,2,"/admin/statistics/apiLogSummary","GET","API for admin to get statistic logs\n+ tripId: String (Filter by trip ID). Ex: trip-123\n+ vehicleId: String (Filter by vehicle ID). Ex: vehicle-456\n+ orderId: String (Filter by order ID). Ex: order-789\n+ rideId: String (Filter by ride ID, pattern match). Ex: RIDE-123\n+ licensePlate: String (Filter by license plate, pattern match). Ex: 51F\n+ platformName: String (Filter by platform name). Ex: Momenta\n+ apiNames: List (Filter by API names). Ex: VEHICLE_CONTROL, ORDER_EVENT\n+ apiType: String (Filter by API type). Ex: async or sync\n+ statuses: List (Filter by status). Ex: S, F (Success, Failed)\n+ fromDate: String (Start date, ISO 8601 format). Ex: 2024-01-01T00:00:00Z\n+ toDate: String (End date, ISO 8601 format). Ex: 2024-01-31T23:59:59Z\n+ onlyWithCallbacks: Boolean (Only include requests with callbacks). Ex: true or false","\"Authorization\": \"Bearer <accessToken>\"","N/A","N/A","{\n\t\"status\": {\n\t\t\"code\": 0,\n\t\t\"message\": \"Success\"\n\t},\n\t\"data\": {\n\t\t\"totalRequests\": 25,\n\t\t\"successfulRequests\": 11,\n\t\t\"failedRequests\": 11,\n\t\t\"timeoutRequests\": 0,\n\t\t\"pendingRequests\": 3,\n\t\t\"asyncWithCallbacks\": 0,\n\t\t\"asyncWithoutCallbacks\": 0,\n\t\t\"totalCallbacks\": 7,\n\t\t\"orphanedCallbacks\": 14,\n\t\t\"averageDurationMs\": 2202.0,\n\t\t\"minDurationMs\": 0,\n\t\t\"maxDurationMs\": 4914\n\t}\n}","HTTP CODE: 403\nthe request is not authorized\n\nHTTP CODE: 401\n- invalid/missing accessToken in request header\n\nHTTP CODE: 400\n- status.code: 1 => invalid/missing input. error field: [{ \"field\" : \"<field name>\", \"error\": \"<error message>\" }]\n\nHTTP CODE: 500\n- status.code = 9999 => unknown error occurred, contact administrator","API_REQUEST_LOGS(GET)\nAPI_CALLBACK_LOGS(GET)"]