756 lines
14 KiB
Markdown
756 lines
14 KiB
Markdown
# Permission API
|
|
|
|
## Authentication
|
|
All endpoints require authentication token. Include in header:
|
|
```
|
|
Authorization: Bearer <token>
|
|
```
|
|
|
|
---
|
|
|
|
## Permission Endpoints
|
|
|
|
### Create Permission
|
|
|
|
**Endpoint**
|
|
```
|
|
POST: http://localhost:3070/api/permission
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Request Body**
|
|
```json
|
|
{
|
|
"permissionName": "Create Inquiry",
|
|
"permissionDescription": "Permission to create new inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "create"
|
|
}
|
|
```
|
|
|
|
**Response (201)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permissionName": "Create Inquiry",
|
|
"permissionDescription": "Permission to create new inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "create",
|
|
"createdAt": "2026-05-15T10:30:00Z",
|
|
"updatedAt": "2026-05-15T10:30:00Z"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Bulk Create Permissions
|
|
|
|
**Endpoint**
|
|
```
|
|
POST: http://localhost:3070/api/permission/bulk
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Request Body**
|
|
```json
|
|
{
|
|
"permissions": [
|
|
{
|
|
"permissionName": "Create Inquiry",
|
|
"permissionDescription": "Permission to create new inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "create"
|
|
},
|
|
{
|
|
"permissionName": "View Inquiry",
|
|
"permissionDescription": "Permission to view inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "view"
|
|
},
|
|
{
|
|
"permissionName": "Edit Inquiry",
|
|
"permissionDescription": "Permission to edit inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "edit"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
**Response (201)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"created": [
|
|
{
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permissionName": "Create Inquiry",
|
|
"permissionDescription": "Permission to create new inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "create"
|
|
},
|
|
{
|
|
"permission_id": "inquiry_management.inquiry.view",
|
|
"permissionName": "View Inquiry",
|
|
"permissionDescription": "Permission to view inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "view"
|
|
},
|
|
{
|
|
"permission_id": "inquiry_management.inquiry.edit",
|
|
"permissionName": "Edit Inquiry",
|
|
"permissionDescription": "Permission to edit inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "edit"
|
|
}
|
|
],
|
|
"failed": []
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Get All Permissions
|
|
|
|
**Endpoint**
|
|
```
|
|
GET: http://localhost:3070/api/permission
|
|
```
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": [
|
|
{
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permissionName": "Create Inquiry",
|
|
"permissionDescription": "Permission to create new inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "create"
|
|
},
|
|
{
|
|
"permission_id": "inquiry_management.inquiry.view",
|
|
"permissionName": "View Inquiry",
|
|
"permissionDescription": "Permission to view inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "view"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Get Permission by ID
|
|
|
|
**Endpoint**
|
|
```
|
|
GET: http://localhost:3070/api/permission/:permissionId
|
|
```
|
|
|
|
**Example**
|
|
```
|
|
GET: http://localhost:3070/api/permission/inquiry_management.inquiry.create
|
|
```
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permissionName": "Create Inquiry",
|
|
"permissionDescription": "Permission to create new inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "create"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Update Permission
|
|
|
|
**Endpoint**
|
|
```
|
|
PUT: http://localhost:3070/api/permission/:permissionId
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Request Body**
|
|
```json
|
|
{
|
|
"permissionName": "Create New Inquiry",
|
|
"permissionDescription": "Updated permission to create new inquiries"
|
|
}
|
|
```
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permissionName": "Create New Inquiry",
|
|
"permissionDescription": "Updated permission to create new inquiries",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "create"
|
|
},
|
|
"message": "Permission updated successfully"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Delete Permission
|
|
|
|
**Endpoint**
|
|
```
|
|
DELETE: http://localhost:3070/api/permission/:permissionId
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "Permission deleted successfully"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Role Endpoints
|
|
|
|
### Create Role
|
|
|
|
**Endpoint**
|
|
```
|
|
POST: http://localhost:3070/api/permission/roles
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Request Body**
|
|
```json
|
|
{
|
|
"roleName": "Inquiry Manager",
|
|
"roleDescription": "Role for managing inquiries"
|
|
}
|
|
```
|
|
|
|
**Response (201)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"role_id": "role_1715843400000",
|
|
"roleName": "Inquiry Manager",
|
|
"roleDescription": "Role for managing inquiries",
|
|
"createdAt": "2026-05-15T10:30:00Z",
|
|
"updatedAt": "2026-05-15T10:30:00Z"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Get All Roles
|
|
|
|
**Endpoint**
|
|
```
|
|
GET: http://localhost:3070/api/permission/roles
|
|
```
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": [
|
|
{
|
|
"role_id": "role_1715843400000",
|
|
"roleName": "Inquiry Manager",
|
|
"roleDescription": "Role for managing inquiries",
|
|
"rolePermissions": [
|
|
{
|
|
"rp_id": "rp_1715843500000",
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permission": {
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permissionName": "Create Inquiry",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "create"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Get Role by ID
|
|
|
|
**Endpoint**
|
|
```
|
|
GET: http://localhost:3070/api/permission/roles/:roleId
|
|
```
|
|
|
|
**Example**
|
|
```
|
|
GET: http://localhost:3070/api/permission/roles/role_1715843400000
|
|
```
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"role_id": "role_1715843400000",
|
|
"roleName": "Inquiry Manager",
|
|
"roleDescription": "Role for managing inquiries",
|
|
"rolePermissions": [
|
|
{
|
|
"rp_id": "rp_1715843500000",
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permission": {
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permissionName": "Create Inquiry",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "create"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Update Role
|
|
|
|
**Endpoint**
|
|
```
|
|
PUT: http://localhost:3070/api/permission/roles/:roleId
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Request Body**
|
|
```json
|
|
{
|
|
"roleName": "Senior Inquiry Manager",
|
|
"roleDescription": "Updated role for managing inquiries"
|
|
}
|
|
```
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"role_id": "role_1715843400000",
|
|
"roleName": "Senior Inquiry Manager",
|
|
"roleDescription": "Updated role for managing inquiries"
|
|
},
|
|
"message": "Role updated successfully"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Delete Role
|
|
|
|
**Endpoint**
|
|
```
|
|
DELETE: http://localhost:3070/api/permission/roles/:roleId
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "Role deleted successfully"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Role-Permission Assignment Endpoints
|
|
|
|
### Assign Permission to Role
|
|
|
|
**Endpoint**
|
|
```
|
|
POST: http://localhost:3070/api/permission/roles/:roleId/permissions
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Request Body**
|
|
```json
|
|
{
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "inquiry_management.inquiry.create"
|
|
}
|
|
```
|
|
|
|
**Response (201)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"rp_id": "rp_1715843500000",
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"createdAt": "2026-05-15T10:30:00Z",
|
|
"updatedAt": "2026-05-15T10:30:00Z"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Bulk Assign Permissions to Role
|
|
|
|
**Endpoint**
|
|
```
|
|
POST: http://localhost:3070/api/permission/roles/permissions/bulk
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Request Body**
|
|
```json
|
|
{
|
|
"role_id": "role_1715843400000",
|
|
"permission_ids": [
|
|
"inquiry_management.inquiry.create",
|
|
"inquiry_management.inquiry.view",
|
|
"inquiry_management.inquiry.edit",
|
|
"vendor_management.vendor.view"
|
|
]
|
|
}
|
|
```
|
|
|
|
**Response (201)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"created": [
|
|
{
|
|
"rp_id": "rp_1715843500001",
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "inquiry_management.inquiry.create"
|
|
},
|
|
{
|
|
"rp_id": "rp_1715843500002",
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "inquiry_management.inquiry.view"
|
|
},
|
|
{
|
|
"rp_id": "rp_1715843500003",
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "inquiry_management.inquiry.edit"
|
|
},
|
|
{
|
|
"rp_id": "rp_1715843500004",
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "vendor_management.vendor.view"
|
|
}
|
|
],
|
|
"failed": []
|
|
}
|
|
}
|
|
```
|
|
|
|
**Response with Failures (201)**
|
|
```json
|
|
{
|
|
"success": false,
|
|
"data": {
|
|
"created": [
|
|
{
|
|
"rp_id": "rp_1715843500001",
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "inquiry_management.inquiry.create"
|
|
}
|
|
],
|
|
"failed": [
|
|
{
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "inquiry_management.inquiry.view",
|
|
"error": "Role permission already exists"
|
|
},
|
|
{
|
|
"role_id": "role_1715843400000",
|
|
"permission_id": "nonexistent_permission",
|
|
"error": "Permission not found"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## User Permission Endpoints
|
|
|
|
### Get User Permissions
|
|
|
|
**Endpoint**
|
|
```
|
|
GET: http://localhost:3070/api/permission/users/:userId/permissions
|
|
```
|
|
|
|
**Example**
|
|
```
|
|
GET: http://localhost:3070/api/permission/users/usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4/permissions
|
|
```
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": [
|
|
{
|
|
"up_id": 1,
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permission": {
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"permissionName": "Create Inquiry",
|
|
"page": "inquiry",
|
|
"module": "inquiry_management",
|
|
"action": "create"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Create User Permission
|
|
|
|
**Endpoint**
|
|
```
|
|
POST: http://localhost:3070/api/permission/users/permissions
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Request Body**
|
|
```json
|
|
{
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "inquiry_management.inquiry.create"
|
|
}
|
|
```
|
|
|
|
**Response (201)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"up_id": 1,
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "inquiry_management.inquiry.create",
|
|
"createdAt": "2026-05-15T10:30:00Z",
|
|
"updatedAt": "2026-05-15T10:30:00Z"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Bulk Create User Permissions
|
|
|
|
**Endpoint**
|
|
```
|
|
POST: http://localhost:3070/api/permission/users/permissions/bulk
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Request Body**
|
|
```json
|
|
{
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_ids": [
|
|
"inquiry_management.inquiry.create",
|
|
"inquiry_management.inquiry.view",
|
|
"inquiry_management.inquiry.edit",
|
|
"vendor_management.vendor.view"
|
|
]
|
|
}
|
|
```
|
|
|
|
**Response (201)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"created": [
|
|
{
|
|
"up_id": 1,
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "inquiry_management.inquiry.create"
|
|
},
|
|
{
|
|
"up_id": 2,
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "inquiry_management.inquiry.view"
|
|
},
|
|
{
|
|
"up_id": 3,
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "inquiry_management.inquiry.edit"
|
|
},
|
|
{
|
|
"up_id": 4,
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "vendor_management.vendor.view"
|
|
}
|
|
],
|
|
"failed": []
|
|
}
|
|
}
|
|
```
|
|
|
|
**Response with Failures (201)**
|
|
```json
|
|
{
|
|
"success": false,
|
|
"data": {
|
|
"created": [
|
|
{
|
|
"up_id": 1,
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "inquiry_management.inquiry.create"
|
|
}
|
|
],
|
|
"failed": [
|
|
{
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "inquiry_management.inquiry.view",
|
|
"error": "User permission already exists"
|
|
},
|
|
{
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "nonexistent_permission",
|
|
"error": "Permission not found"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Update User Permission
|
|
|
|
**Endpoint**
|
|
```
|
|
PUT: http://localhost:3070/api/permission/users/permissions/:upId
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Request Body**
|
|
```json
|
|
{
|
|
"permission_id": "inquiry_management.inquiry.edit"
|
|
}
|
|
```
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"up_id": 1,
|
|
"user_id": "usr_5ff8afec-5ddc-47d9-a63f-b43df0d8c3b4",
|
|
"permission_id": "inquiry_management.inquiry.edit"
|
|
},
|
|
"message": "User permission updated successfully"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Delete User Permission
|
|
|
|
**Endpoint**
|
|
```
|
|
DELETE: http://localhost:3070/api/permission/users/permissions/:upId
|
|
```
|
|
|
|
**Authorization**: Admin only
|
|
|
|
**Response (200)**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "User permission deleted successfully"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Error Responses
|
|
|
|
### Bad Request (400)
|
|
```json
|
|
{
|
|
"success": false,
|
|
"message": "Permission name, page, module, and action are required"
|
|
}
|
|
```
|
|
|
|
### Not Found (404)
|
|
```json
|
|
{
|
|
"success": false,
|
|
"message": "Permission not found"
|
|
}
|
|
```
|
|
|
|
### Internal Server Error (500)
|
|
```json
|
|
{
|
|
"success": false,
|
|
"message": "An error occurred while fetching permissions."
|
|
}
|
|
```
|