diff --git a/WalkGuide API.postman_collection.json b/WalkGuide API.postman_collection.json new file mode 100644 index 0000000..604251e --- /dev/null +++ b/WalkGuide API.postman_collection.json @@ -0,0 +1,6189 @@ +{ + "info": { + "_postman_id": "04be63e3-5b7b-49c0-99f6-95eefaa8c081", + "name": "WalkGuide API", + "description": "Postman collection untuk testing WalkGuide API. Gunakan variabel {{baseUrl}} dan {{token}}.", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "48307750", + "_collection_link": "https://go.postman.co/collection/48307750-04be63e3-5b7b-49c0-99f6-95eefaa8c081?source=collection_link" + }, + "item": [ + { + "name": "Auth", + "item": [ + { + "name": "Ping (Health Check)", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/api/v1/auth/ping", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "ping" + ] + } + }, + "response": [ + { + "name": "Ping (Health Check)", + "originalRequest": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/api/v1/auth/ping", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "ping" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:12:09 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": \"pong\",\n \"message\": \"Server aktif\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:12:09.107875400Z\"\n}" + } + ] + }, + { + "name": "Register", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"email\": \"user@example.com\",\n \"password\": \"password123\",\n \"displayName\": \"Budi Santoso\",\n \"role\": \"USER\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/register", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "register" + ] + } + }, + "response": [ + { + "name": "Register", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"email\": \"budi2@example.com\",\n \"password\": \"password123\",\n \"displayName\": \"Budi Santoso\",\n \"role\": \"USER\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/register", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "register" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:24:22 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"accessToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiUk9MRV9VU0VSIiwidXNlcklkIjo3MzYsInN1YiI6ImJ1ZGkyQGV4YW1wbGUuY29tIiwiaWF0IjoxNzc5MDA2MjYwLCJleHAiOjE3NzkwMDk4NjB9.9RWY8u7f7HC1p9gC84uioqfi2CuWt-C7aYi0ZWJwilo\",\n \"refreshToken\": \"82c630ef-f556-444d-b422-40cb953c31ee-8385755f-4c5a-470f-8f2e-014ee880d133\",\n \"role\": \"ROLE_USER\",\n \"userId\": 736,\n \"displayName\": \"Budi Santoso\",\n \"uniqueUserId\": \"72HGEIW5F9WI\"\n },\n \"message\": \"Registrasi berhasil\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:24:22.309033100Z\"\n}" + } + ] + }, + { + "name": "Register (Guardian)", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"email\": \"guardian@example.com\",\n \"password\": \"password123\",\n \"displayName\": \"Siti Rahayu\",\n \"role\": \"GUARDIAN\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/register", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "register" + ] + } + }, + "response": [ + { + "name": "Register (Guardian)", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"email\": \"guardian@example.com\",\n \"password\": \"password123\",\n \"displayName\": \"Siti Rahayu\",\n \"role\": \"GUARDIAN\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/register", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "register" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:12:50 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"accessToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiUk9MRV9HVUFSRElBTiIsInVzZXJJZCI6NzM1LCJzdWIiOiJndWFyZGlhbkBleGFtcGxlLmNvbSIsImlhdCI6MTc3OTAwNTU3MCwiZXhwIjoxNzc5MDA5MTcwfQ.swiGGgNyqN6QiGDauumof8TPLZZX9K2XGvXVKr283eA\",\n \"refreshToken\": \"cc5e116d-cf69-4761-a570-ba610c894b09-13dd0d05-c154-428c-ac42-8509fef0a7a9\",\n \"role\": \"ROLE_GUARDIAN\",\n \"userId\": 735,\n \"displayName\": \"Siti Rahayu\",\n \"uniqueUserId\": null\n },\n \"message\": \"Registrasi berhasil\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:12:50.736607500Z\"\n}" + }, + { + "name": "Register (Guardian)", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"email\": \"guardian2@example.com\",\n \"password\": \"password123\",\n \"displayName\": \"Siti Rahayu\",\n \"role\": \"GUARDIAN\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/register", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "register" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:32:12 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"accessToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiUk9MRV9HVUFSRElBTiIsInVzZXJJZCI6NzM3LCJzdWIiOiJndWFyZGlhbjJAZXhhbXBsZS5jb20iLCJpYXQiOjE3NzkwMDY3MzEsImV4cCI6MTc3OTAxMDMzMX0.SOJG_puNWOZQQporgyClzzW6YMbtW0LsSME6fqFw8dQ\",\n \"refreshToken\": \"7d035305-45a8-4154-b4ce-ef1f09064dc9-b5da5c4c-772a-4886-9085-aec2974ce01e\",\n \"role\": \"ROLE_GUARDIAN\",\n \"userId\": 737,\n \"displayName\": \"Siti Rahayu\",\n \"uniqueUserId\": null\n },\n \"message\": \"Registrasi berhasil\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:32:12.086151200Z\"\n}" + } + ] + }, + { + "name": "Login", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var json = pm.response.json();", + "if (json.data && json.data.accessToken) {", + " pm.collectionVariables.set('token', json.data.accessToken);", + " pm.collectionVariables.set('refreshToken', json.data.refreshToken);", + "}" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"email\": \"user@example.com\",\n \"password\": \"password123\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/login", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "login" + ] + } + }, + "response": [ + { + "name": "Login", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"email\": \"user@example.com\",\n \"password\": \"password123\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/login", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "login" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:12:59 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"accessToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiUk9MRV9VU0VSIiwidXNlcklkIjo3MzQsInN1YiI6InVzZXJAZXhhbXBsZS5jb20iLCJpYXQiOjE3NzkwMDU1NzksImV4cCI6MTc3OTAwOTE3OX0.SWm0yMJ3ANggmTiYrVE6sBf_apb8ip-DL9q-zcRwBqY\",\n \"refreshToken\": \"ff007b99-89be-4925-bc55-420224cb9f39-bc869f72-f978-47f3-8c32-81e5d8dae3a6\",\n \"role\": \"ROLE_USER\",\n \"userId\": 734,\n \"displayName\": \"John Doe\",\n \"uniqueUserId\": \"2Q9DUIN649IA\"\n },\n \"message\": \"Login berhasil\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:12:59.932871200Z\"\n}" + }, + { + "name": "Login", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"email\": \"guardian@example.com\",\n \"password\": \"password123\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/login", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "login" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:38:14 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"accessToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiUk9MRV9HVUFSRElBTiIsInVzZXJJZCI6NzM1LCJzdWIiOiJndWFyZGlhbkBleGFtcGxlLmNvbSIsImlhdCI6MTc3OTAwNzA5NCwiZXhwIjoxNzc5MDEwNjk0fQ.vs95nxc75dTt5Mb80rKJC_Jf8X3UXLN_oFZKJ3zQtIw\",\n \"refreshToken\": \"8f971b90-d72e-4810-bbec-cf8a4f8f4df8-5252732d-ed8c-46e3-bd61-f43fc7cf099f\",\n \"role\": \"ROLE_GUARDIAN\",\n \"userId\": 735,\n \"displayName\": \"Siti Rahayu\",\n \"uniqueUserId\": null\n },\n \"message\": \"Login berhasil\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:38:14.633973Z\"\n}" + } + ] + }, + { + "name": "Refresh Token", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"refreshToken\": \"{{refreshToken}}\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/refresh", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "refresh" + ] + } + }, + "response": [ + { + "name": "Refresh Token", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"refreshToken\": \"{{refreshToken}}\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/refresh", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "refresh" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:13:08 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"accessToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiUk9MRV9VU0VSIiwidXNlcklkIjo3MzQsInN1YiI6InVzZXJAZXhhbXBsZS5jb20iLCJpYXQiOjE3NzkwMDU1ODgsImV4cCI6MTc3OTAwOTE4OH0.Z4dkQlQ7rpTo8c6TjrfQYAo8ShYDvMQGKyPu2lciD08\",\n \"refreshToken\": \"ff007b99-89be-4925-bc55-420224cb9f39-bc869f72-f978-47f3-8c32-81e5d8dae3a6\",\n \"role\": \"ROLE_USER\",\n \"userId\": 734,\n \"displayName\": \"John Doe\",\n \"uniqueUserId\": \"2Q9DUIN649IA\"\n },\n \"message\": \"Token diperbarui\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:13:08.198550200Z\"\n}" + } + ] + }, + { + "name": "Logout", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/auth/logout", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "logout" + ] + } + }, + "response": [ + { + "name": "Logout", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/auth/logout", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "logout" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:14:50 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": null,\n \"message\": \"Logout berhasil\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:14:50.532163Z\"\n}" + } + ] + }, + { + "name": "Update FCM Token", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"fcmToken\": \"fcm-device-token-here\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/fcm-token", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "fcm-token" + ] + } + }, + "response": [ + { + "name": "Update FCM Token", + "originalRequest": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"fcmToken\": \"fcm-device-token-here\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/auth/fcm-token", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "auth", + "fcm-token" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:15:32 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": null,\n \"message\": \"FCM token diperbarui\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:15:32.533304800Z\"\n}" + } + ] + } + ] + }, + { + "name": "User", + "item": [ + { + "name": "Get Profile", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/profile", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "profile" + ] + } + }, + "response": [ + { + "name": "Get Profile", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/profile", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "profile" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:15:49 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"uniqueUserId\": \"2Q9DUIN649IA\",\n \"email\": \"user@example.com\",\n \"displayName\": \"John Doe\",\n \"role\": \"ROLE_USER\",\n \"id\": 734\n },\n \"message\": \"Profil user\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:15:49.526872800Z\"\n}" + } + ] + }, + { + "name": "Get Settings", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/settings", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "settings" + ] + } + }, + "response": [ + { + "name": "Get Settings", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/settings", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "settings" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:16:05 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 727,\n \"ttsLanguage\": \"id-ID\",\n \"ttsPitch\": 1,\n \"ttsSpeed\": 0.9,\n \"warnNoGuardian\": true,\n \"hapticEnabled\": true\n },\n \"message\": \"Settings user\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:16:05.574702200Z\"\n}" + } + ] + }, + { + "name": "Update Settings", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"ttsLanguage\": \"id-ID\",\n \"ttsPitch\": 1.0,\n \"ttsSpeed\": 1.0,\n \"warnNoGuardian\": true,\n \"hapticEnabled\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/user/settings", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "settings" + ] + } + }, + "response": [ + { + "name": "Update Settings", + "originalRequest": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"ttsLanguage\": \"id-ID\",\n \"ttsPitch\": 1.0,\n \"ttsSpeed\": 1.0,\n \"warnNoGuardian\": true,\n \"hapticEnabled\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/user/settings", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "settings" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:16:20 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 727,\n \"ttsLanguage\": \"id-ID\",\n \"ttsPitch\": 1,\n \"ttsSpeed\": 1,\n \"warnNoGuardian\": true,\n \"hapticEnabled\": true\n },\n \"message\": \"Settings diperbarui\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:16:20.149708700Z\"\n}" + } + ] + }, + { + "name": "Get Voice Commands", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/voice-commands", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "voice-commands" + ] + } + }, + "response": [ + { + "name": "Get Voice Commands", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/voice-commands", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "voice-commands" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:16:34 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": [],\n \"message\": \"Voice commands\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:16:34.882890800Z\"\n}" + } + ] + }, + { + "name": "Get Hardware Shortcuts", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/shortcuts", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "shortcuts" + ] + } + }, + "response": [ + { + "name": "Get Hardware Shortcuts", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/shortcuts", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "shortcuts" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:16:53 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": [],\n \"message\": \"Hardware shortcuts\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:16:53.083083800Z\"\n}" + }, + { + "name": "Get Hardware Shortcuts", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/shortcuts", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "shortcuts" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:25:08 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": [\n {\n \"id\": 11,\n \"shortcutKey\": \"CALL_GUARDIAN\",\n \"buttonName\": null,\n \"buttonCode\": null,\n \"enabled\": true\n },\n {\n \"id\": 12,\n \"shortcutKey\": \"START_WALKGUIDE\",\n \"buttonName\": null,\n \"buttonCode\": null,\n \"enabled\": true\n },\n {\n \"id\": 13,\n \"shortcutKey\": \"SEND_SOS\",\n \"buttonName\": null,\n \"buttonCode\": null,\n \"enabled\": true\n },\n {\n \"id\": 14,\n \"shortcutKey\": \"STOP_WALKGUIDE\",\n \"buttonName\": null,\n \"buttonCode\": null,\n \"enabled\": true\n },\n {\n \"id\": 15,\n \"shortcutKey\": \"OPEN_NOTIFICATION\",\n \"buttonName\": null,\n \"buttonCode\": null,\n \"enabled\": true\n }\n ],\n \"message\": \"Hardware shortcuts\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:25:08.257459100Z\"\n}" + } + ] + }, + { + "name": "Update Hardware Shortcut", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"shortcutKey\": \"CALL_GUARDIAN\",\n \"buttonName\": \"Volume Up\",\n \"buttonCode\": 24,\n \"enabled\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/user/shortcuts", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "shortcuts" + ] + } + }, + "response": [ + { + "name": "Update Hardware Shortcut", + "originalRequest": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"shortcutKey\": \"CALL_GUARDIAN\",\n \"buttonName\": \"Volume Up\",\n \"buttonCode\": 24,\n \"enabled\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/user/shortcuts", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "shortcuts" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:26:27 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 11,\n \"shortcutKey\": \"CALL_GUARDIAN\",\n \"buttonName\": \"Volume Up\",\n \"buttonCode\": 24,\n \"enabled\": true\n },\n \"message\": \"Shortcut diperbarui\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:26:27.808175100Z\"\n}" + } + ] + }, + { + "name": "Get AI Config", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/ai-config", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "ai-config" + ] + } + }, + "response": [ + { + "name": "Get AI Config", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/ai-config", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "ai-config" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:26:57 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 6,\n \"confidenceThreshold\": 0.5,\n \"alertDistanceClose\": 1.5,\n \"alertDistanceMedium\": 3,\n \"maxInferenceFps\": 5,\n \"enabledLabels\": \"ALL\"\n },\n \"message\": \"AI config\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:26:57.230981700Z\"\n}" + } + ] + }, + { + "name": "Update Location", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"lat\": -7.2575,\n \"lng\": 112.7521,\n \"accuracy\": 10.5,\n \"speed\": 1.2,\n \"heading\": 90.0\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/user/location", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "location" + ] + } + }, + "response": [ + { + "name": "Update Location", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"lat\": -7.2575,\n \"lng\": 112.7521,\n \"accuracy\": 10.5,\n \"speed\": 1.2,\n \"heading\": 90.0\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/user/location", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "location" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:27:14 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 3,\n \"lat\": -7.2575,\n \"lng\": 112.7521,\n \"accuracy\": 10.5,\n \"speed\": 1.2,\n \"heading\": 90,\n \"createdAt\": \"2026-05-17T15:27:14.6184828\"\n },\n \"message\": \"Lokasi diperbarui\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:27:14.921951Z\"\n}" + } + ] + }, + { + "name": "Log Obstacle", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"label\": \"car\",\n \"confidence\": 0.92,\n \"direction\": \"front\",\n \"estimatedDist\": \"2m\",\n \"lat\": -7.2575,\n \"lng\": 112.7521\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/user/obstacle", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "obstacle" + ] + } + }, + "response": [ + { + "name": "Log Obstacle", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"label\": \"car\",\n \"confidence\": 0.92,\n \"direction\": \"front\",\n \"estimatedDist\": \"2m\",\n \"lat\": -7.2575,\n \"lng\": 112.7521\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/user/obstacle", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "obstacle" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:27:33 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 8,\n \"label\": \"car\",\n \"confidence\": 0.92,\n \"direction\": \"front\",\n \"estimatedDist\": \"2m\",\n \"lat\": -7.2575,\n \"lng\": 112.7521,\n \"createdAt\": \"2026-05-17T15:27:32.6965729\"\n },\n \"message\": \"Obstacle dicatat\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:27:33.118746Z\"\n}" + } + ] + }, + { + "name": "Trigger SOS", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"triggerType\": \"MANUAL\",\n \"lat\": -7.2575,\n \"lng\": 112.7521\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/user/sos", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "sos" + ] + } + }, + "response": [ + { + "name": "Trigger SOS", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"triggerType\": \"MANUAL\",\n \"lat\": -7.2575,\n \"lng\": 112.7521\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/user/sos", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "sos" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:27:52 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 4,\n \"userId\": 736,\n \"triggerType\": \"MANUAL\",\n \"lat\": -7.2575,\n \"lng\": 112.7521,\n \"status\": \"TRIGGERED\",\n \"acknowledgedAt\": null,\n \"createdAt\": \"2026-05-17T15:27:51.995202\"\n },\n \"message\": \"SOS dikirim! Guardian sudah diberitahu.\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:27:52.369127400Z\"\n}" + } + ] + }, + { + "name": "Get Activity Logs", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/activity-logs?page=0&size=20", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "activity-logs" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "response": [ + { + "name": "Get Activity Logs", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/activity-logs?page=0&size=20", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "activity-logs" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:28:14 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"content\": [\n {\n \"id\": 1510,\n \"logType\": \"SOS_TRIGGERED\",\n \"description\": \"SOS dikirim via MANUAL\",\n \"metadata\": null,\n \"createdAt\": \"2026-05-17T15:27:52.162779\"\n },\n {\n \"id\": 1509,\n \"logType\": \"OBSTACLE_DETECTED\",\n \"description\": \"Obstacle terdeteksi: car (front)\",\n \"metadata\": \"{\\\"label\\\":\\\"car\\\",\\\"direction\\\":\\\"front\\\",\\\"dist\\\":\\\"2m\\\",\\\"confidence\\\":0.92}\",\n \"createdAt\": \"2026-05-17T15:27:32.970501\"\n }\n ],\n \"pageable\": {\n \"pageNumber\": 0,\n \"pageSize\": 20,\n \"sort\": {\n \"empty\": true,\n \"sorted\": false,\n \"unsorted\": true\n },\n \"offset\": 0,\n \"paged\": true,\n \"unpaged\": false\n },\n \"last\": true,\n \"totalPages\": 1,\n \"totalElements\": 2,\n \"first\": true,\n \"size\": 20,\n \"number\": 0,\n \"sort\": {\n \"empty\": true,\n \"sorted\": false,\n \"unsorted\": true\n },\n \"numberOfElements\": 2,\n \"empty\": false\n },\n \"message\": \"Log aktivitas\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:28:14.875624100Z\"\n}" + } + ] + }, + { + "name": "Get Notifications", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/notifications?page=0&size=20", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "notifications" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "response": [ + { + "name": "Get Notifications", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/notifications?page=0&size=20", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "notifications" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:28:34 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"content\": [],\n \"pageable\": {\n \"pageNumber\": 0,\n \"pageSize\": 20,\n \"sort\": {\n \"empty\": true,\n \"sorted\": false,\n \"unsorted\": true\n },\n \"offset\": 0,\n \"paged\": true,\n \"unpaged\": false\n },\n \"last\": true,\n \"totalPages\": 0,\n \"totalElements\": 0,\n \"first\": true,\n \"size\": 20,\n \"number\": 0,\n \"sort\": {\n \"empty\": true,\n \"sorted\": false,\n \"unsorted\": true\n },\n \"numberOfElements\": 0,\n \"empty\": true\n },\n \"message\": \"Notifikasi\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:28:34.076792900Z\"\n}" + } + ] + }, + { + "name": "Get Unread Notification Count", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/notifications/unread-count", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "notifications", + "unread-count" + ] + } + }, + "response": [ + { + "name": "Get Unread Notification Count", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/notifications/unread-count", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "notifications", + "unread-count" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:28:55 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": 0,\n \"message\": \"Jumlah notifikasi belum dibaca\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:28:55.537546100Z\"\n}" + } + ] + }, + { + "name": "Mark All Notifications Read", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/notifications/mark-all-read", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "notifications", + "mark-all-read" + ] + } + }, + "response": [ + { + "name": "Mark All Notifications Read", + "originalRequest": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/notifications/mark-all-read", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "notifications", + "mark-all-read" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:29:16 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": null,\n \"message\": \"Semua notifikasi ditandai sudah dibaca\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:29:16.637186Z\"\n}" + } + ] + }, + { + "name": "Mark One Notification Read", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/notifications/1/read", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "notifications", + "1", + "read" + ] + } + }, + "response": [ + { + "name": "Mark One Notification Read", + "originalRequest": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/notifications/1/read", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "notifications", + "1", + "read" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:29:37 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": null,\n \"message\": \"Notifikasi ditandai sudah dibaca\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:29:37.117488700Z\"\n}" + } + ] + }, + { + "name": "WalkGuide Start", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/walkguide/start", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "walkguide", + "start" + ] + } + }, + "response": [ + { + "name": "WalkGuide Start", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/walkguide/start", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "walkguide", + "start" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:29:56 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": null,\n \"message\": \"WalkGuide dimulai\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:29:56.755781300Z\"\n}" + } + ] + }, + { + "name": "WalkGuide Stop", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/walkguide/stop", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "walkguide", + "stop" + ] + } + }, + "response": [ + { + "name": "WalkGuide Stop", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/user/walkguide/stop", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "user", + "walkguide", + "stop" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:30:20 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": null,\n \"message\": \"WalkGuide dihentikan\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:30:20.509510300Z\"\n}" + } + ] + } + ] + }, + { + "name": "Guardian", + "item": [ + { + "name": "Get Dashboard", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/dashboard", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "dashboard" + ] + } + }, + "response": [ + { + "name": "Get Dashboard", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/dashboard", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "dashboard" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:33:03 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"pairedUserId\": null,\n \"pairedUserName\": null,\n \"pairedUserEmail\": null,\n \"uniqueUserId\": null,\n \"lastLocation\": null,\n \"unreadSosCount\": 0,\n \"unreadNotifCount\": 0,\n \"recentActivity\": []\n },\n \"message\": \"Dashboard Guardian\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:33:03.071330800Z\"\n}" + } + ] + }, + { + "name": "Get User Location", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/user-location", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "user-location" + ] + } + }, + "response": [ + { + "name": "Get User Location", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/user-location", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "user-location" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:33:31 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": null,\n \"message\": \"Lokasi terakhir user\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:33:31.948646Z\"\n}" + } + ] + }, + { + "name": "Get Location History", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/location-history?page=0&size=50", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "location-history" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "50" + } + ] + } + }, + "response": [ + { + "name": "Get Location History", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/location-history?page=0&size=50", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "location-history" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "50" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:33:55 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"content\": [],\n \"pageable\": {\n \"pageNumber\": 0,\n \"pageSize\": 50,\n \"sort\": {\n \"empty\": false,\n \"sorted\": true,\n \"unsorted\": false\n },\n \"offset\": 0,\n \"paged\": true,\n \"unpaged\": false\n },\n \"last\": true,\n \"totalPages\": 0,\n \"totalElements\": 0,\n \"first\": true,\n \"size\": 50,\n \"number\": 0,\n \"sort\": {\n \"empty\": false,\n \"sorted\": true,\n \"unsorted\": false\n },\n \"numberOfElements\": 0,\n \"empty\": true\n },\n \"message\": \"Riwayat lokasi\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:33:55.315007300Z\"\n}" + } + ] + }, + { + "name": "Get Activity Logs", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/activity-logs?page=0&size=20", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "activity-logs" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "response": [ + { + "name": "Get Activity Logs", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/activity-logs?page=0&size=20", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "activity-logs" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:41:59 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"content\": [\n {\n \"id\": 1516,\n \"logType\": \"PAIRING_ACCEPTED\",\n \"description\": \"User menerima pairing dengan Guardian Siti Rahayu\",\n \"metadata\": null,\n \"createdAt\": \"2026-05-17T15:41:38.167364\"\n },\n {\n \"id\": 1513,\n \"logType\": \"LOGIN\",\n \"description\": \"User login\",\n \"metadata\": null,\n \"createdAt\": \"2026-05-17T15:36:19.057155\"\n },\n {\n \"id\": 1508,\n \"logType\": \"LOGIN\",\n \"description\": \"User login\",\n \"metadata\": null,\n \"createdAt\": \"2026-05-17T15:15:18.58048\"\n },\n {\n \"id\": 1507,\n \"logType\": \"LOGOUT\",\n \"description\": \"User logout\",\n \"metadata\": null,\n \"createdAt\": \"2026-05-17T15:14:50.333068\"\n },\n {\n \"id\": 1506,\n \"logType\": \"LOGIN\",\n \"description\": \"User login\",\n \"metadata\": null,\n \"createdAt\": \"2026-05-17T15:12:59.597611\"\n }\n ],\n \"pageable\": {\n \"pageNumber\": 0,\n \"pageSize\": 20,\n \"sort\": {\n \"empty\": true,\n \"sorted\": false,\n \"unsorted\": true\n },\n \"offset\": 0,\n \"paged\": true,\n \"unpaged\": false\n },\n \"last\": true,\n \"totalPages\": 1,\n \"totalElements\": 5,\n \"first\": true,\n \"size\": 20,\n \"number\": 0,\n \"sort\": {\n \"empty\": true,\n \"sorted\": false,\n \"unsorted\": true\n },\n \"numberOfElements\": 5,\n \"empty\": false\n },\n \"message\": \"Log aktivitas user\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:41:59.213054Z\"\n}" + } + ] + }, + { + "name": "Get Obstacle Logs", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/obstacle-logs?page=0&size=20", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "obstacle-logs" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "response": [ + { + "name": "Get Obstacle Logs", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/obstacle-logs?page=0&size=20", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "obstacle-logs" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:43:15 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"content\": [],\n \"pageable\": {\n \"pageNumber\": 0,\n \"pageSize\": 20,\n \"sort\": {\n \"empty\": true,\n \"sorted\": false,\n \"unsorted\": true\n },\n \"offset\": 0,\n \"paged\": true,\n \"unpaged\": false\n },\n \"last\": true,\n \"totalPages\": 0,\n \"totalElements\": 0,\n \"first\": true,\n \"size\": 20,\n \"number\": 0,\n \"sort\": {\n \"empty\": true,\n \"sorted\": false,\n \"unsorted\": true\n },\n \"numberOfElements\": 0,\n \"empty\": true\n },\n \"message\": \"Log obstacle user\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:43:15.379233100Z\"\n}" + } + ] + }, + { + "name": "Send Notification to User", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"notifType\": \"TEXT\",\n \"content\": \"Hati-hati di persimpangan!\",\n \"voiceNoteUrl\": null,\n \"voiceNoteDuration\": null\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/notifications/send", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "notifications", + "send" + ] + } + }, + "response": [ + { + "name": "Send Notification to User", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"notifType\": \"TEXT\",\n \"content\": \"Hati-hati di persimpangan!\",\n \"voiceNoteUrl\": null,\n \"voiceNoteDuration\": null\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/notifications/send", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "notifications", + "send" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:43:37 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 1,\n \"notifType\": \"TEXT\",\n \"content\": \"Hati-hati di persimpangan!\",\n \"voiceNoteUrl\": null,\n \"voiceNoteDuration\": null,\n \"isRead\": false,\n \"readAt\": null,\n \"createdAt\": \"2026-05-17T15:43:37.7264323\"\n },\n \"message\": \"Notifikasi terkirim\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:43:37.942978500Z\"\n}" + } + ] + }, + { + "name": "Get SOS Events", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/sos-events?page=0&size=20", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "sos-events" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "response": [ + { + "name": "Get SOS Events", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/sos-events?page=0&size=20", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "sos-events" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:45:07 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"content\": [],\n \"pageable\": {\n \"pageNumber\": 0,\n \"pageSize\": 20,\n \"sort\": {\n \"empty\": true,\n \"sorted\": false,\n \"unsorted\": true\n },\n \"offset\": 0,\n \"unpaged\": false,\n \"paged\": true\n },\n \"last\": true,\n \"totalPages\": 0,\n \"totalElements\": 0,\n \"size\": 20,\n \"number\": 0,\n \"sort\": {\n \"empty\": true,\n \"sorted\": false,\n \"unsorted\": true\n },\n \"first\": true,\n \"numberOfElements\": 0,\n \"empty\": true\n },\n \"message\": \"SOS events\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:45:07.527902500Z\"\n}" + } + ] + }, + { + "name": "Acknowledge SOS", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/sos/1/acknowledge", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "sos", + "1", + "acknowledge" + ] + } + }, + "response": [ + { + "name": "Acknowledge SOS", + "originalRequest": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/sos/1/acknowledge", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "sos", + "1", + "acknowledge" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:45:37 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 1,\n \"userId\": 8,\n \"triggerType\": \"MANUAL\",\n \"lat\": -7.2575,\n \"lng\": 112.7521,\n \"status\": \"ACKNOWLEDGED\",\n \"acknowledgedAt\": \"2026-05-17T15:45:36.7476425\",\n \"createdAt\": \"2026-05-07T09:59:44.52949\"\n },\n \"message\": \"SOS diakui\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:45:37.207351700Z\"\n}" + } + ] + }, + { + "name": "Get AI Config", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/ai-config", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "ai-config" + ] + } + }, + "response": [ + { + "name": "Get AI Config", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/ai-config", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "ai-config" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:46:07 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 8,\n \"confidenceThreshold\": 0.5,\n \"alertDistanceClose\": 1.5,\n \"alertDistanceMedium\": 3,\n \"maxInferenceFps\": 5,\n \"enabledLabels\": \"ALL\"\n },\n \"message\": \"AI config\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:46:07.097221900Z\"\n}" + } + ] + }, + { + "name": "Update AI Config", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"confidenceThreshold\": 0.7,\n \"alertDistanceClose\": 1.5,\n \"alertDistanceMedium\": 3.0,\n \"maxInferenceFps\": 10,\n \"enabledLabels\": \"car,truck,motorcycle,person,bicycle\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/ai-config", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "ai-config" + ] + } + }, + "response": [ + { + "name": "Update AI Config", + "originalRequest": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"confidenceThreshold\": 0.7,\n \"alertDistanceClose\": 1.5,\n \"alertDistanceMedium\": 3.0,\n \"maxInferenceFps\": 10,\n \"enabledLabels\": \"car,truck,motorcycle,person,bicycle\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/ai-config", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "ai-config" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:46:34 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 7,\n \"confidenceThreshold\": 0.7,\n \"alertDistanceClose\": 1.5,\n \"alertDistanceMedium\": 3,\n \"maxInferenceFps\": 10,\n \"enabledLabels\": \"car,truck,motorcycle,person,bicycle\"\n },\n \"message\": \"AI config diperbarui\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:46:34.367357600Z\"\n}" + } + ] + }, + { + "name": "Get Voice Commands", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/voice-commands", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "voice-commands" + ] + } + }, + "response": [ + { + "name": "Get Voice Commands", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/voice-commands", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "voice-commands" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:47:05 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": [],\n \"message\": \"Voice commands\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:47:05.445512700Z\"\n}" + } + ] + }, + { + "name": "Update Voice Command", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"commandKey\": \"SEND_SOS\",\n \"triggerPhrase\": \"tolong saya\",\n \"enabled\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/voice-commands", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "voice-commands" + ] + } + }, + "response": [ + { + "name": "Update Voice Command", + "originalRequest": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"commandKey\": \"SEND_SOS\",\n \"triggerPhrase\": \"tolong saya\",\n \"enabled\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/voice-commands", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "voice-commands" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:47:35 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 50,\n \"commandKey\": \"SEND_SOS\",\n \"triggerPhrase\": \"tolong saya\",\n \"enabled\": true,\n \"description\": \"Kirim sinyal darurat SOS\"\n },\n \"message\": \"Voice command diperbarui\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:47:35.585518700Z\"\n}" + } + ] + }, + { + "name": "Get Hardware Shortcuts", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/shortcuts", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "shortcuts" + ] + } + }, + "response": [ + { + "name": "Get Hardware Shortcuts", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/shortcuts", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "shortcuts" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:48:05 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": [],\n \"message\": \"Hardware shortcuts\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:48:05.899882800Z\"\n}" + } + ] + }, + { + "name": "Get Geofence Config", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/geofence", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "geofence" + ] + } + }, + "response": [ + { + "name": "Get Geofence Config", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/geofence", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "geofence" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:48:36 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": null,\n \"centerLat\": null,\n \"centerLng\": null,\n \"radiusMeters\": 500,\n \"enabled\": false\n },\n \"message\": \"Geofence config\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:48:36.875617900Z\"\n}" + } + ] + }, + { + "name": "Update Geofence Config", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"centerLat\": -7.2575,\n \"centerLng\": 112.7521,\n \"radiusMeters\": 500.0,\n \"enabled\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/geofence", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "geofence" + ] + } + }, + "response": [ + { + "name": "Update Geofence Config", + "originalRequest": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"centerLat\": -7.2575,\n \"centerLng\": 112.7521,\n \"radiusMeters\": 500.0,\n \"enabled\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/geofence", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "geofence" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:49:08 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 1,\n \"centerLat\": -7.2575,\n \"centerLng\": 112.7521,\n \"radiusMeters\": 500,\n \"enabled\": true\n },\n \"message\": \"Geofence diperbarui\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:49:08.434817900Z\"\n}" + } + ] + }, + { + "name": "Get User Settings", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/user-settings", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "user-settings" + ] + } + }, + "response": [ + { + "name": "Get User Settings", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/user-settings", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "user-settings" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:49:41 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 729,\n \"ttsLanguage\": \"id-ID\",\n \"ttsPitch\": 1,\n \"ttsSpeed\": 0.9,\n \"warnNoGuardian\": true,\n \"hapticEnabled\": true\n },\n \"message\": \"User settings\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:49:41.047546800Z\"\n}" + } + ] + }, + { + "name": "Update User Settings", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"ttsLanguage\": \"id-ID\",\n \"ttsPitch\": 1.0,\n \"ttsSpeed\": 1.0,\n \"warnNoGuardian\": true,\n \"hapticEnabled\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/user-settings", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "user-settings" + ] + } + }, + "response": [ + { + "name": "Update User Settings", + "originalRequest": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"ttsLanguage\": \"id-ID\",\n \"ttsPitch\": 1.0,\n \"ttsSpeed\": 1.0,\n \"warnNoGuardian\": true,\n \"hapticEnabled\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/guardian/user-settings", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "guardian", + "user-settings" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:50:08 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"id\": 729,\n \"ttsLanguage\": \"id-ID\",\n \"ttsPitch\": 1,\n \"ttsSpeed\": 1,\n \"warnNoGuardian\": true,\n \"hapticEnabled\": true\n },\n \"message\": \"User settings diperbarui\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:50:08.761764600Z\"\n}" + } + ] + } + ] + }, + { + "name": "Pairing", + "item": [ + { + "name": "Invite User (by Guardian)", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"uniqueUserId\": \"ABC123DEF456\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/shared/pairing/invite", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "pairing", + "invite" + ] + } + }, + "response": [ + { + "name": "Invite User (by Guardian)", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"uniqueUserId\": \"2Q9DUIN649IA\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/shared/pairing/invite", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "pairing", + "invite" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:39:43 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"pairingId\": 3,\n \"status\": \"PENDING\",\n \"pairedWithName\": \"John Doe\",\n \"pairedWithEmail\": \"user@example.com\",\n \"uniqueUserId\": \"2Q9DUIN649IA\",\n \"invitedAt\": \"2026-05-17T15:39:43.2660301\",\n \"respondedAt\": null\n },\n \"message\": \"Undangan dikirim ke user\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:39:43.707386Z\"\n}" + } + ] + }, + { + "name": "Respond to Pairing (by User)", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"pairingId\": 1,\n \"accept\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/shared/pairing/respond", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "pairing", + "respond" + ] + } + }, + "response": [ + { + "name": "Respond to Pairing (by User)", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"pairingId\": 3,\n \"accept\": true\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/shared/pairing/respond", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "pairing", + "respond" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:41:38 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"pairingId\": 3,\n \"status\": \"ACTIVE\",\n \"pairedWithName\": \"Siti Rahayu\",\n \"pairedWithEmail\": \"guardian@example.com\",\n \"uniqueUserId\": \"2Q9DUIN649IA\",\n \"invitedAt\": \"2026-05-17T15:39:43.26603\",\n \"respondedAt\": \"2026-05-17T15:41:35.330861\"\n },\n \"message\": \"Pairing diterima\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:41:38.525505900Z\"\n}" + } + ] + }, + { + "name": "Get Pairing Status", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/shared/pairing/status", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "pairing", + "status" + ] + } + }, + "response": [ + { + "name": "Get Pairing Status", + "originalRequest": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/shared/pairing/status", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "pairing", + "status" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:50:45 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"pairingId\": 3,\n \"status\": \"ACTIVE\",\n \"pairedWithName\": \"John Doe\",\n \"pairedWithEmail\": \"user@example.com\",\n \"uniqueUserId\": \"2Q9DUIN649IA\",\n \"invitedAt\": \"2026-05-17T15:39:43.26603\",\n \"respondedAt\": \"2026-05-17T15:41:35.330861\"\n },\n \"message\": \"Status pairing\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:50:45.354973300Z\"\n}" + } + ] + }, + { + "name": "Unpair", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/shared/pairing/unpair", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "pairing", + "unpair" + ] + } + }, + "response": [ + { + "name": "Unpair", + "originalRequest": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/api/v1/shared/pairing/unpair", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "pairing", + "unpair" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:52:52 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": null,\n \"message\": \"Pairing diakhiri\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:52:52.680822300Z\"\n}" + } + ] + } + ] + }, + { + "name": "Call (VoIP)", + "item": [ + { + "name": "Generate Agora Token", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"receiverId\": 2\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/shared/call/token", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "call", + "token" + ] + } + }, + "response": [ + { + "name": "Generate Agora Token", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"receiverId\": 2\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/shared/call/token", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "call", + "token" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:51:18 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": {\n \"token\": \"\",\n \"channelName\": \"call_2_735\",\n \"uid\": 735,\n \"appId\": \"\",\n \"expiresAt\": 1779011478,\n \"callerName\": \"Siti Rahayu\"\n },\n \"message\": \"Token Agora berhasil digenerate\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:51:18.928994900Z\"\n}" + } + ] + }, + { + "name": "Notify Incoming Call", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"receiverId\": 2,\n \"channelName\": \"walkguide-call-1-2\",\n \"agoraToken\": \"agora-rtc-token-here\",\n \"receiverUid\": 200\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/shared/call/notify", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "call", + "notify" + ] + } + }, + "response": [ + { + "name": "Notify Incoming Call", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"receiverId\": 2,\n \"channelName\": \"walkguide-call-1-2\",\n \"agoraToken\": \"agora-rtc-token-here\",\n \"receiverUid\": 200\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/shared/call/notify", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "call", + "notify" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:51:49 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": null,\n \"message\": \"Panggilan dikirim (receiver mungkin tidak menerima push notification)\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:51:49.958132Z\"\n}" + } + ] + }, + { + "name": "End Call", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"otherId\": 2\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/shared/call/end", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "call", + "end" + ] + } + }, + "response": [ + { + "name": "End Call", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{token}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"otherId\": 2\n}" + }, + "url": { + "raw": "{{baseUrl}}/api/v1/shared/call/end", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "v1", + "shared", + "call", + "end" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": null, + "header": [ + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-XSS-Protection", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Transfer-Encoding", + "value": "chunked" + }, + { + "key": "Date", + "value": "Sun, 17 May 2026 08:52:20 GMT" + }, + { + "key": "Keep-Alive", + "value": "timeout=60" + }, + { + "key": "Connection", + "value": "keep-alive" + } + ], + "cookie": [], + "body": "{\n \"success\": true,\n \"data\": null,\n \"message\": \"Call ended\",\n \"errorCode\": null,\n \"timestamp\": \"2026-05-17T08:52:20.873315200Z\"\n}" + } + ] + } + ] + } + ], + "variable": [ + { + "key": "baseUrl", + "value": "http://localhost:8080" + }, + { + "key": "token", + "value": "" + }, + { + "key": "refreshToken", + "value": "" + } + ] +} \ No newline at end of file