الملفات
back_end_oudelaa/postman/Oudelaa-Auth-Users-Posts.postman_collection.json
2026-04-20 15:12:16 +03:00

2746 أسطر
84 KiB
JSON

{
"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"
}
]
}