{ "info": { "name": "Oudelaa Auth Users Posts", "description": "Postman collection for auth, users, posts modules.", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "item": [ { "name": "Auth", "item": [ { "name": "Register Basic", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/register-basic", "body": { "mode": "raw", "raw": "{\n \"email\": \"{{registerEmail}}\",\n \"password\": \"StrongPass123!\",\n \"confirmPassword\": \"StrongPass123!\"\n}" } }, "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "exec": [ "const ts = Date.now();", "if (!pm.environment.get('registerEmail')) { pm.environment.set('registerEmail', `test_${ts}@example.com`); }" ] } }, { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.expect(json.message).to.exist;", "pm.expect(json.email).to.exist;", "if (json.debugCode) { pm.environment.set('emailVerificationCode', json.debugCode); }" ] } } ] }, { "name": "Register", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/register", "body": { "mode": "raw", "raw": "{\n \"name\": \"Test User\",\n \"stageName\": \"Artist One\",\n \"username\": \"{{registerUsername}}\",\n \"email\": \"{{registerEmail}}\",\n \"password\": \"StrongPass123!\",\n \"confirmPassword\": \"StrongPass123!\",\n \"musicRoles\": [\"singer\", \"composer\"],\n \"musicGenres\": [\"Tarab\", \"Pop\"],\n \"favoriteInstruments\": [\"Oud\", \"Piano\"],\n \"favoriteMaqamat\": [\"Bayati\", \"Rast\"],\n \"location\": \"Riyadh, Saudi Arabia\",\n \"latitude\": 24.7136,\n \"longitude\": 46.6753,\n \"isPrivate\": false\n}" } }, "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "exec": [ "const ts = Date.now();", "if (!pm.environment.get('registerEmail')) { pm.environment.set('registerEmail', `test_${ts}@example.com`); }", "if (!pm.environment.get('registerUsername')) { pm.environment.set('registerUsername', `test_user_${ts}`); }" ] } }, { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.expect(json.message).to.exist;", "pm.expect(json.email).to.exist;", "if (json.debugCode) { pm.environment.set('emailVerificationCode', json.debugCode); }" ] } } ] }, { "name": "Login", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/login", "body": { "mode": "raw", "raw": "{\n \"email\": \"{{registerEmail}}\",\n \"password\": \"StrongPass123!\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.user).to.exist;", "const uid = json.user._id || json.user.id;", "pm.environment.set('accessToken', json.accessToken);", "pm.environment.set('refreshToken', json.refreshToken);", "pm.environment.set('userId', uid);", "pm.environment.set('currentUserId', uid);" ] } } ] }, { "name": "Target User Login", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/login", "body": { "mode": "raw", "raw": "{\n \"email\": \"{{targetLoginEmail}}\",\n \"password\": \"{{targetLoginPassword}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.user).to.exist;", "const uid = json.user._id || json.user.id;", "pm.environment.set('targetAccessToken', json.accessToken);", "pm.environment.set('targetRefreshToken', json.refreshToken);", "pm.environment.set('targetUserId', uid);" ] } } ] }, { "name": "Admin Login", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/login", "body": { "mode": "raw", "raw": "{\n \"email\": \"{{adminEmail}}\",\n \"password\": \"{{adminPassword}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.environment.set('adminAccessToken', json.accessToken);", "pm.environment.set('adminRefreshToken', json.refreshToken);", "pm.environment.set('adminUserId', (json.user && (json.user._id || json.user.id)) || pm.environment.get('adminUserId'));" ] } } ] }, { "name": "Refresh", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/refresh", "body": { "mode": "raw", "raw": "{\n \"refreshToken\": \"{{refreshToken}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.user).to.exist;", "pm.environment.set('accessToken', json.accessToken);", "pm.environment.set('refreshToken', json.refreshToken);", "pm.environment.set('userId', json.user._id || json.user.id);" ] } } ] }, { "name": "Logout", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/logout", "body": { "mode": "raw", "raw": "{\n \"refreshToken\": \"{{refreshToken}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.message).to.eql('Logged out successfully');" ] } } ] }, { "name": "SuperAdmin", "item": [ { "name": "SuperAdmin Login", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/superadmin/login", "body": { "mode": "raw", "raw": "{\n \"email\": \"admin@oudelaa.com\",\n \"password\": \"SuperAdminStrongPass123!\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.accessToken).to.exist;", "pm.expect(json.refreshToken).to.exist;", "pm.environment.set('superAdminAccessToken', json.accessToken);", "pm.environment.set('superAdminRefreshToken', json.refreshToken);" ] } } ] }, { "name": "SuperAdmin Refresh", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/superadmin/refresh", "body": { "mode": "raw", "raw": "{\n \"refreshToken\": \"{{superAdminRefreshToken}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.accessToken).to.exist;", "pm.expect(json.refreshToken).to.exist;", "pm.environment.set('superAdminAccessToken', json.accessToken);", "pm.environment.set('superAdminRefreshToken', json.refreshToken);" ] } } ] }, { "name": "SuperAdmin Logout", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/superadmin/logout", "body": { "mode": "raw", "raw": "{\n \"refreshToken\": \"{{superAdminRefreshToken}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.message).to.eql('Superadmin logged out successfully');" ] } } ] } ] }, { "name": "Google OAuth Start (Browser)", "request": { "method": "GET", "header": [], "url": "{{baseUrl}}/auth/google", "description": "Open this request in browser flow to start Google OAuth redirect." } }, { "name": "Google OAuth Callback (Browser Redirect)", "request": { "method": "GET", "header": [], "url": "{{baseUrl}}/auth/google/callback", "description": "Callback endpoint is called by Google redirect after browser login. Do not call directly from Postman." } }, { "name": "Google Token Login (Mobile - Recommended)", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/google/token", "description": "Mobile-style Google login (Instagram-like): send Google idToken from app SDK.", "body": { "mode": "raw", "raw": "{\n \"idToken\": \"{{googleIdToken}}\"\n}" } }, "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "exec": [ "const idToken = (pm.environment.get('googleIdToken') || '').trim();", "if (!idToken) {", " throw new Error('googleIdToken is empty. Paste Google idToken from Flutter/Google SDK into environment variable googleIdToken.');", "}" ] } }, { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.accessToken).to.exist;", "pm.expect(json.refreshToken).to.exist;", "pm.expect(json.user).to.exist;", "const uid = json.user._id || json.user.id;", "pm.environment.set('accessToken', json.accessToken);", "pm.environment.set('refreshToken', json.refreshToken);", "pm.environment.set('userId', uid);", "pm.environment.set('currentUserId', uid);" ] } } ] }, { "name": "List My Sessions", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/auth/sessions" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.items).to.be.an('array');", "if (json.items && json.items.length > 0) { pm.environment.set('sessionJti', json.items[0].jti); }" ] } } ] }, { "name": "Revoke My Session", "request": { "method": "POST", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/auth/sessions/{{sessionJti}}/revoke" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.success).to.eql(true);" ] } } ] }, { "name": "Forgot Password", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/forgot-password", "body": { "mode": "raw", "raw": "{\n \"email\": \"{{registerEmail}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.message).to.exist;", "if (json.debugCode) { pm.environment.set('resetCode', json.debugCode); }" ] } } ] }, { "name": "Verify Reset Code", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/verify-reset-code", "body": { "mode": "raw", "raw": "{\n \"email\": \"{{registerEmail}}\",\n \"code\": \"{{resetCode}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.resetToken).to.exist;", "pm.environment.set('resetToken', json.resetToken);" ] } } ] }, { "name": "Reset Password", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/reset-password", "body": { "mode": "raw", "raw": "{\n \"resetToken\": \"{{resetToken}}\",\n \"newPassword\": \"{{newPassword}}\",\n \"confirmPassword\": \"{{newPassword}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.message).to.eql('Password reset successfully');" ] } } ] }, { "name": "Send Email Verification", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/send-email-verification", "body": { "mode": "raw", "raw": "{\n \"email\": \"{{registerEmail}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.message).to.exist;", "if (json.debugCode) { pm.environment.set('emailVerificationCode', json.debugCode); }" ] } } ] }, { "name": "Verify Email", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "url": "{{baseUrl}}/auth/verify-email", "body": { "mode": "raw", "raw": "{\n \"email\": \"{{registerEmail}}\",\n \"code\": \"{{emailVerificationCode}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.message).to.exist;", "if (json.accessToken) { pm.environment.set('accessToken', json.accessToken); }", "if (json.refreshToken) { pm.environment.set('refreshToken', json.refreshToken); }", "if (json.user) { const uid = json.user._id || json.user.id; pm.environment.set('userId', uid); pm.environment.set('currentUserId', uid); }" ] } } ] } ] }, { "name": "Users", "item": [ { "name": "SuperAdmin List Admins", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin/admins?page=1&limit=20" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.items).to.be.an('array');", "if (json.items && json.items.length > 0) { pm.environment.set('adminUserId', json.items[0]._id || json.items[0].id); }" ] } } ] }, { "name": "SuperAdmin Update Admin", "request": { "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin/admins/{{adminUserId}}", "body": { "mode": "raw", "raw": "{\n \"name\": \"Store Admin Updated\",\n \"stageName\": \"Music Store Owner\",\n \"bio\": \"Admin managing marketplace tools\",\n \"location\": \"Riyadh, Saudi Arabia\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('role');", "pm.expect(json.role).to.eql('admin');" ] } } ] }, { "name": "SuperAdmin Delete Admin", "request": { "method": "DELETE", "header": [ { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin/admins/{{adminUserId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.message).to.eql('Admin deleted successfully');" ] } } ] }, { "name": "SuperAdmin Create Admin", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin/create-admin", "body": { "mode": "raw", "raw": "{\n \"name\": \"Store Admin\",\n \"username\": \"{{adminUsername}}\",\n \"email\": \"{{adminEmail}}\",\n \"password\": \"{{adminPassword}}\",\n \"confirmPassword\": \"{{adminPassword}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.environment.set('adminUserId', json._id || json.id);" ] } } ] }, { "name": "SuperAdmin Set User Role", "request": { "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin/{{adminUserId}}/role", "body": { "mode": "raw", "raw": "{\n \"role\": \"admin\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.role).to.eql('admin');" ] } } ] }, { "name": "Search Users", "request": { "method": "GET", "url": "{{baseUrl}}/users?page=1&limit=10", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "const currentUserId = pm.environment.get('currentUserId');", "if (json.items && json.items.length > 0) {", " const target = json.items.find(u => (u._id || u.id) !== currentUserId) || json.items[0];", " const targetId = target._id || target.id;", " pm.environment.set('targetUserId', targetId);", "}" ] } } ] }, { "name": "Profile Setup", "request": { "method": "PATCH", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/users/me/profile-setup", "body": { "mode": "formdata", "formdata": [ { "key": "stageName", "value": "Artist One", "type": "text" }, { "key": "avatarFile", "type": "file", "src": [] }, { "key": "bio", "value": "Short bio", "type": "text" }, { "key": "location", "value": "Riyadh, Saudi Arabia", "type": "text" }, { "key": "latitude", "value": "24.7136", "type": "text" }, { "key": "longitude", "value": "46.6753", "type": "text" } ] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.location).to.eql('Riyadh, Saudi Arabia');", "pm.expect(json.latitude).to.eql(24.7136);", "pm.expect(json.longitude).to.eql(46.6753);", "if (json.avatar) { pm.expect(json.avatar).to.be.a('string'); }" ] } } ] }, { "name": "Music Setup", "request": { "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/users/me/music-setup", "body": { "mode": "raw", "raw": "{\n \"musicRoles\": [\"instrumentalist\", \"composer\"],\n \"musicGenres\": [\"Tarab\", \"Pop\"],\n \"experienceLevel\": \"intermediate\",\n \"favoriteInstruments\": [\"Oud\", \"Piano\"],\n \"favoriteMaqamat\": [\"Bayati\", \"Rast\"]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.musicRoles).to.include('instrumentalist');", "pm.expect(json.musicRoles).to.include('composer');", "pm.expect(json.experienceLevel).to.eql('intermediate');", "pm.expect(json).to.not.have.property('isInstrumentalist');", "pm.expect(json).to.not.have.property('isSinger');", "pm.expect(json).to.not.have.property('isComposer');", "pm.expect(json).to.not.have.property('isLyricist');" ] } } ] }, { "name": "Update Me", "request": { "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/users/me", "body": { "mode": "raw", "raw": "{\n \"bio\": \"Updated from Postman\",\n \"avatar\": \"https://cdn.example.com/avatar.jpg\",\n \"stageName\": \"Artist One Updated\",\n \"musicGenres\": [\"Tarab\", \"Khaleeji\"],\n \"favoriteInstruments\": [\"Oud\"],\n \"favoriteMaqamat\": [\"Hijaz\"],\n \"location\": \"Jeddah, Saudi Arabia\"\n}" } } }, { "name": "Get User By Id", "request": { "method": "GET", "url": "{{baseUrl}}/users/{{userId}}", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ] } }, { "name": "Admin Get Users", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin?page=1&limit=10" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "if (json.items && json.items.length > 0) { pm.environment.set('adminUserId', json.items[0]._id || json.items[0].id); }" ] } } ] }, { "name": "Admin Get User By Id", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin/{{adminUserId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json._id || json.id).to.exist;" ] } } ] }, { "name": "Admin Update User", "request": { "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin/{{adminUserId}}", "body": { "mode": "raw", "raw": "{\n \"stageName\": \"Updated by SuperAdmin\",\n \"bio\": \"Profile updated by admin\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.stageName).to.eql('Updated by SuperAdmin');" ] } } ] }, { "name": "Admin Disable User", "request": { "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin/{{adminUserId}}/disable", "body": { "mode": "raw", "raw": "{\n \"reason\": \"Violation of community guidelines\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.isDisabled).to.eql(true);" ] } } ] }, { "name": "Admin Enable User", "request": { "method": "PATCH", "header": [ { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin/{{adminUserId}}/enable" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.isDisabled).to.eql(false);" ] } } ] }, { "name": "Admin Delete User", "request": { "method": "DELETE", "header": [ { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/users/admin/{{adminUserId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.message).to.eql('User deleted successfully');" ] } } ] } ] }, { "name": "Posts", "item": [ { "name": "Create Post", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/posts", "body": { "mode": "raw", "raw": "{\n \"content\": \"First text post\",\n \"visibility\": \"public\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.environment.set('postId', json._id || json.id);" ] } } ] }, { "name": "Get User Posts", "request": { "method": "GET", "url": "{{baseUrl}}/posts/user/{{userId}}?page=1&limit=10", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ] } }, { "name": "Get Post By Id", "request": { "method": "GET", "url": "{{baseUrl}}/posts/{{postId}}", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ] } }, { "name": "Update Post", "request": { "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/posts/{{postId}}", "body": { "mode": "raw", "raw": "{\n \"content\": \"Updated post content\"\n}" } } }, { "name": "Delete Post", "request": { "method": "DELETE", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/posts/{{postId}}" } } ] }, { "name": "Comments", "item": [ { "name": "Create Comment", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/comments", "body": { "mode": "raw", "raw": "{\n \"postId\": \"{{postId}}\",\n \"content\": \"Awesome post!\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.environment.set('commentId', json._id || json.id);" ] } } ] }, { "name": "Get Post Comments", "request": { "method": "GET", "url": "{{baseUrl}}/comments/post/{{postId}}?page=1&limit=10", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] }, { "name": "Get Comment Replies", "request": { "method": "GET", "url": "{{baseUrl}}/comments/{{commentId}}/replies?page=1&limit=10", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] }, { "name": "Delete Comment", "request": { "method": "DELETE", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/comments/{{commentId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] }, { "name": "Admin Delete Comment", "request": { "method": "DELETE", "header": [ { "key": "Authorization", "value": "Bearer {{superAdminAccessToken}}" } ], "url": "{{baseUrl}}/comments/admin/{{commentId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.success).to.eql(true);" ] } } ] } ] }, { "name": "Likes", "item": [ { "name": "Like Post", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/likes", "body": { "mode": "raw", "raw": "{\n \"targetId\": \"{{postId}}\",\n \"targetType\": \"post\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.expect(json.liked).to.eql(true);" ] } } ] }, { "name": "Unlike Post", "request": { "method": "DELETE", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/likes/post/{{postId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.liked).to.eql(false);" ] } } ] }, { "name": "Get Post Like Status", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/likes/status/post/{{postId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('liked');" ] } } ] }, { "name": "Like Comment", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/likes", "body": { "mode": "raw", "raw": "{\n \"targetId\": \"{{commentId}}\",\n \"targetType\": \"comment\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.expect(json.liked).to.eql(true);" ] } } ] }, { "name": "Unlike Comment", "request": { "method": "DELETE", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/likes/comment/{{commentId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.liked).to.eql(false);" ] } } ] }, { "name": "Get Comment Like Status", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/likes/status/comment/{{commentId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('liked');" ] } } ] } ] }, { "name": "Saves", "item": [ { "name": "Save Post", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/saves", "body": { "mode": "raw", "raw": "{\n \"postId\": \"{{postId}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.expect(json.saved).to.eql(true);" ] } } ] }, { "name": "Unsave Post", "request": { "method": "DELETE", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/saves/{{postId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.saved).to.eql(false);" ] } } ] }, { "name": "Get Save Status", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/saves/status/{{postId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('saved');" ] } } ] }, { "name": "Get My Saved Posts", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/saves/me?page=1&limit=10" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] } ] }, { "name": "Follows", "item": [ { "name": "Toggle Follow User", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/follows/toggle", "body": { "mode": "raw", "raw": "{\n \"targetUserId\": \"{{targetUserId}}\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('following');", "pm.environment.set('lastFollowingState', json.following ? 'following' : 'not_following');" ] } } ] }, { "name": "Get Followers", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/follows/followers/{{userId}}?page=1&limit=10" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] }, { "name": "Get Following", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/follows/following/{{userId}}?page=1&limit=10" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] }, { "name": "Get Follow Status", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/follows/status/{{targetUserId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('following');" ] } } ] }, { "name": "Get Follow Suggestions", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/follows/suggestions?page=1&limit=10" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.items).to.be.an('array');" ] } } ] } ] }, { "name": "Notifications", "item": [ { "name": "Get My Notifications", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/notifications?page=1&limit=20" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.items).to.be.an('array');", "if (json.items && json.items.length > 0) { pm.environment.set('notificationId', json.items[0]._id || json.items[0].id); }" ] } } ] }, { "name": "Get Target User Notifications", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{targetAccessToken}}" } ], "url": "{{baseUrl}}/notifications?page=1&limit=20&read=false" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.items).to.be.an('array');", "pm.environment.set('notificationUnreadCount', json.unreadCount || 0);", "const followNotification = (json.items || []).find(item => item.type === 'follow');", "if (followNotification) { pm.environment.set('notificationId', followNotification._id || followNotification.id); }" ] } } ] }, { "name": "Get Unread Notifications Count", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/notifications/unread-count" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('unreadCount');" ] } } ] }, { "name": "Get Target User Unread Notifications Count", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{targetAccessToken}}" } ], "url": "{{baseUrl}}/notifications/unread-count" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('unreadCount');", "pm.environment.set('notificationUnreadCount', json.unreadCount || 0);" ] } } ] }, { "name": "Mark Notification Read", "request": { "method": "PATCH", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/notifications/{{notificationId}}/read" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('unreadCount');" ] } } ] }, { "name": "Mark Target Notification Read", "request": { "method": "PATCH", "header": [ { "key": "Authorization", "value": "Bearer {{targetAccessToken}}" } ], "url": "{{baseUrl}}/notifications/{{notificationId}}/read" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('unreadCount');", "pm.environment.set('notificationUnreadCount', json.unreadCount || 0);" ] } } ] }, { "name": "Mark All Notifications Read", "request": { "method": "PATCH", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/notifications/read-all" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.unreadCount).to.eql(0);" ] } } ] }, { "name": "Mark All Target Notifications Read", "request": { "method": "PATCH", "header": [ { "key": "Authorization", "value": "Bearer {{targetAccessToken}}" } ], "url": "{{baseUrl}}/notifications/read-all" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.unreadCount).to.eql(0);", "pm.environment.set('notificationUnreadCount', 0);" ] } } ] } ] }, { "name": "Chat", "item": [ { "name": "Create Conversation", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/chat/conversations", "body": { "mode": "raw", "raw": "{\n \"participantIds\": [\"{{targetUserId}}\"],\n \"isGroup\": false\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.environment.set('conversationId', json._id || json.id);" ] } } ] }, { "name": "Get My Conversations", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/chat/conversations?limit=20&cursor={{chatConversationsCursor}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "if (json.items && json.items.length > 0) { pm.environment.set('conversationId', json.items[0]._id || json.items[0].id); }", "pm.environment.set('chatConversationsCursor', json.nextCursor || '');" ] } } ] }, { "name": "Send Message", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/chat/messages", "body": { "mode": "raw", "raw": "{\n \"conversationId\": \"{{conversationId}}\",\n \"messageType\": \"text\",\n \"content\": \"Hello from chat\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.environment.set('messageId', json._id || json.id);" ] } } ] }, { "name": "Get Conversation Messages", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/chat/conversations/{{conversationId}}/messages?limit=20&cursor={{chatMessagesCursor}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.environment.set('chatMessagesCursor', json.nextCursor || '');" ] } } ] }, { "name": "Mark Message Seen", "request": { "method": "PATCH", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/chat/messages/{{messageId}}/seen" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] }, { "name": "Unsend Message", "request": { "method": "PATCH", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/chat/messages/{{messageId}}/unsend" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] }, { "name": "Block User In Chat", "request": { "method": "POST", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/chat/blocks/{{targetUserId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.expect(json.blocked).to.eql(true);" ] } } ] }, { "name": "Unblock User In Chat", "request": { "method": "PATCH", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/chat/blocks/{{targetUserId}}/unblock" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] }, { "name": "Get Chat Block Status", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/chat/blocks/status/{{targetUserId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json).to.have.property('iBlocked');", "pm.expect(json).to.have.property('blockedMe');" ] } } ] }, { "name": "Get My Chat Blocks", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/chat/blocks" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.items).to.be.an('array');" ] } } ] } ] }, { "name": "Feed", "item": [ { "name": "Get My Feed", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/feed/me?limit=20&cursor={{feedCursor}}&radiusKm=30" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.items).to.be.an('array');", "pm.environment.set('feedCursor', json.nextCursor || '');" ] } } ] }, { "name": "Get My Feed Preferred Type", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/feed/me?limit=20&cursor={{feedCursor}}&preferredPostType=video&followingOnly=false&radiusKm=50" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.environment.set('feedCursor', json.nextCursor || '');" ] } } ] }, { "name": "Get Trending Feed", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{accessToken}}" } ], "url": "{{baseUrl}}/feed/trending?limit=20&cursor={{feedCursor}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.items).to.be.an('array');", "pm.environment.set('feedCursor', json.nextCursor || '');" ] } } ] } ] }, { "name": "Marketplace", "item": [ { "name": "Admin Create Instrument", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminAccessToken}}" } ], "url": "{{baseUrl}}/marketplace/admin/instruments", "body": { "mode": "raw", "raw": "{\n \"title\": \"Professional Oud\",\n \"description\": \"Handmade oud for studio and stage\",\n \"price\": 4200,\n \"currency\": \"SAR\",\n \"quantity\": 3,\n \"imageUrls\": [\n \"https://cdn.example.com/instruments/oud-1.jpg\"\n ],\n \"isActive\": true\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 201', function () { pm.response.to.have.status(201); });", "const json = pm.response.json();", "pm.environment.set('instrumentId', json._id || json.id);" ] } } ] }, { "name": "Admin Update Instrument", "request": { "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminAccessToken}}" } ], "url": "{{baseUrl}}/marketplace/admin/instruments/{{instrumentId}}", "body": { "mode": "raw", "raw": "{\n \"price\": 3999,\n \"quantity\": 5,\n \"isActive\": true\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] }, { "name": "Admin Get My Instruments", "request": { "method": "GET", "header": [ { "key": "Authorization", "value": "Bearer {{adminAccessToken}}" } ], "url": "{{baseUrl}}/marketplace/admin/instruments/me?page=1&limit=20" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.items).to.be.an('array');", "if (json.items && json.items.length > 0) { pm.environment.set('instrumentId', json.items[0]._id || json.items[0].id); }" ] } } ] }, { "name": "Public List Instruments", "request": { "method": "GET", "header": [], "url": "{{baseUrl}}/marketplace/instruments?page=1&limit=20&isActive=true" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.items).to.be.an('array');", "if (json.items && json.items.length > 0) { pm.environment.set('instrumentId', json.items[0]._id || json.items[0].id); }" ] } } ] }, { "name": "Public Get Instrument By Id", "request": { "method": "GET", "header": [], "url": "{{baseUrl}}/marketplace/instruments/{{instrumentId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });" ] } } ] }, { "name": "Admin Delete Instrument", "request": { "method": "DELETE", "header": [ { "key": "Authorization", "value": "Bearer {{adminAccessToken}}" } ], "url": "{{baseUrl}}/marketplace/admin/instruments/{{instrumentId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status is 200', function () { pm.response.to.have.status(200); });", "const json = pm.response.json();", "pm.expect(json.success).to.eql(true);" ] } } ] } ] } ], "variable": [ { "key": "baseUrl", "value": "http://192.168.1.9:4001/api/v1", "type": "string" }, { "key": "accessToken", "value": "", "type": "string" }, { "key": "refreshToken", "value": "", "type": "string" }, { "key": "superAdminAccessToken", "value": "", "type": "string" }, { "key": "superAdminRefreshToken", "value": "", "type": "string" }, { "key": "targetAccessToken", "value": "", "type": "string" }, { "key": "targetRefreshToken", "value": "", "type": "string" }, { "key": "userId", "value": "", "type": "string" }, { "key": "currentUserId", "value": "", "type": "string" }, { "key": "targetUserId", "value": "", "type": "string" }, { "key": "lastFollowingState", "value": "", "type": "string" }, { "key": "notificationUnreadCount", "value": "", "type": "string" }, { "key": "notificationId", "value": "", "type": "string" }, { "key": "postId", "value": "", "type": "string" }, { "key": "commentId", "value": "", "type": "string" }, { "key": "conversationId", "value": "", "type": "string" }, { "key": "messageId", "value": "", "type": "string" }, { "key": "sessionJti", "value": "", "type": "string" }, { "key": "registerEmail", "value": "", "type": "string" }, { "key": "registerUsername", "value": "", "type": "string" }, { "key": "adminUserId", "value": "", "type": "string" }, { "key": "targetLoginEmail", "value": "", "type": "string" }, { "key": "targetLoginPassword", "value": "", "type": "string" }, { "key": "resetCode", "value": "", "type": "string" }, { "key": "resetToken", "value": "", "type": "string" }, { "key": "emailVerificationCode", "value": "", "type": "string" }, { "key": "googleIdToken", "value": "", "type": "string" }, { "key": "newPassword", "value": "NewStrongPass123!", "type": "string" }, { "key": "feedCursor", "value": "", "type": "string" }, { "key": "chatConversationsCursor", "value": "", "type": "string" }, { "key": "chatMessagesCursor", "value": "", "type": "string" }, { "key": "adminAccessToken", "value": "", "type": "string" }, { "key": "adminRefreshToken", "value": "", "type": "string" }, { "key": "adminEmail", "value": "store_admin@example.com", "type": "string" }, { "key": "adminUsername", "value": "store_admin_01", "type": "string" }, { "key": "adminPassword", "value": "AdminStrongPass123!", "type": "string" }, { "key": "instrumentId", "value": "", "type": "string" } ] }