AVMS API Integration Guide
Version 4.1.0EgyTwins Integrated Solutions — System Development Team
🚀 Getting Started
Prerequisites: The AVMS system must be installed and configured properly. The API is available through the main AVMS.
Base URL
{Root}/api
Example: http://localhost:5000/api/auth/sign-in
Authentication
All protected endpoints require an Authorization header:
Authorization: Bearer [token]
Important Notes
- The API only handles
application/jsonformat in requests and responses (except endpoints withmultipart/form-data). - Login sessions will be automatically logged out after a period of inactivity.
- AUTH indicates the call requires authorization.
🔐 Authentication
Request Parameters (Form Data):
| Parameter | Type | Required | Description |
|---|---|---|---|
| Username | string | Yes | User's username |
| string | Yes | User's email address | |
| Roles | List | Yes | List of role names |
| PhoneNumber | string | Yes | User's phone number |
| Image | IFormFile | No | Profile image file |
| PictureUrl | string | No | Profile image URL |
| AreaIds | List | No | List of area IDs |
| UniqCode | string | No | Unique code for user |
| Password | string | No | Password |
| ConfirmPassword | string | No | Password confirmation |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "User registered successfully",
"data": {
"confirmMessage": "User registered successfully",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresOn": "2024-12-31T23:59:59Z"
}
}
Error Responses: 400 Bad Request, 401 Unauthorized, 500 Internal Server Error
Request Body:
{
"userId": "123e4567-e89b-12d3-a456-426614174000",
"roleName": "Admin"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Role assigned successfully",
"data": "Role assigned successfully"
}
Request Body:
{
"username": "john.doe@example.com",
"password": "P@ssw0rd123",
"uniqCode": "DEVICE001"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Login successful",
"data": {
"isAuthenticated": true,
"username": "john.doe",
"email": "john.doe@example.com",
"roles": ["Admin", "User"],
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresOn": "2024-12-31T23:59:59Z",
"refreshToken": "a1b2c3d4e5f6...",
"refreshTokenExpiresOn": "2025-01-07T23:59:59Z"
}
}
Request Body:
{
"currentPassword": "OldP@ssw0rd",
"newPassword": "NewP@ssw0rd123",
"confirmPassword": "NewP@ssw0rd123"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Password changed successfully",
"data": "Password changed successfully"
}
Request Body:
{
"email": "user@example.com"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Reset code sent to your email",
"data": "Reset code: 123456"
}
Request Body:
{
"resetCode": "123456",
"email": "user@example.com",
"newPassword": "NewP@ssw0rd123",
"confirmPassword": "NewP@ssw0rd123"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Password reset successfully",
"data": "Password reset successfully"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Token refreshed successfully",
"data": {
"isAuthenticated": true,
"username": "john.doe",
"email": "john.doe@example.com",
"roles": ["Admin", "User"],
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresOn": "2024-12-31T23:59:59Z",
"refreshToken": "a1b2c3d4e5f6...",
"refreshTokenExpiresOn": "2025-01-07T23:59:59Z"
}
}
📍 Areas
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| OwnerId | string | No | Filter by owner ID |
Response 200 OK
[
{
"id": 1,
"name": "Main Building",
"areaTypeId": 1,
"areaTypeName": "Building",
"zIndex": 1,
"areaParentId": null,
"areaParentName": null,
"status": 1,
"isUnit": false,
"isActive": true,
"note": "Main administrative building",
"description": "Headquarters building",
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": "user123",
"updatedUserName": "Admin User",
"deletedUserId": null,
"deletedUserName": null,
"visitStartTime": "08:00",
"visitEndTime": "18:00",
"number": "B001",
"owners": [
{
"userId": "owner123",
"userName": "John Doe",
"email": "john.doe@example.com"
}
],
"currentlyInsideToday": 25,
"logo": "https://example.com/logo.png"
}
]
Response 200 OK
[
{
"id": 10,
"name": "Office 101",
"areaTypeId": 3,
"areaTypeName": "Office",
"zIndex": 3,
"areaParentId": 5,
"areaParentName": "Floor 1",
"status": 1,
"isUnit": true,
"isActive": true,
"note": "Executive office",
"description": "Main executive office",
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null,
"visitStartTime": "09:00",
"visitEndTime": "17:00",
"number": "OFF101",
"owners": [
{
"userId": "owner456",
"userName": "Jane Smith",
"email": "jane.smith@example.com"
}
],
"currentlyInsideToday": 3,
"logo": "https://example.com/office-logo.png"
}
]
Path Parameters: id (int) – Area ID
Response 200 OK
{
"id": 1,
"name": "Main Building",
"areaTypeId": 1,
"areaTypeName": "Building",
"zIndex": 1,
"areaParentId": null,
"areaParentName": null,
"status": 1,
"isUnit": false,
"isActive": true,
"note": "Main administrative building",
"description": "Headquarters building",
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": "user123",
"updatedUserName": "Admin User",
"deletedUserId": null,
"deletedUserName": null,
"visitStartTime": "08:00",
"visitEndTime": "18:00",
"number": "B001",
"owners": [
{
"userId": "owner123",
"userName": "John Doe",
"email": "john.doe@example.com"
}
],
"currentlyInsideToday": 25,
"logo": "https://example.com/logo.png"
}
Request Parameters (Form Data):
| Parameter | Type | Required | Description |
|---|---|---|---|
| Name | string | Yes | Area name |
| AreaTypeId | int | Yes | Area type ID |
| AreaParentId | int | No | Parent area ID |
| IsUnit | bool | Yes | Whether this area is a unit |
| IsActive | bool | No | Active status (default: true) |
| Note | string | No | Additional notes |
| Description | string | No | Area description |
| Number | string | No | Area number/code |
| VisitStartTime | string | No | Visit start time (HH:mm) |
| VisitEndTime | string | No | Visit end time (HH:mm) |
| LogoFile | IFormFile | No | Area logo image file |
| Logo | string | No | Area logo URL |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Area created successfully",
"data": "1"
}
Path Parameters: id (int) – Area ID
Request parameters same as /area/create plus Id field.
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Area updated successfully",
"data": "Area updated successfully"
}
Request Body:
{
"id": 1,
"isActive": false
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Area status updated successfully",
"data": "Area status updated successfully"
}
Path Parameters: id (int) – Area ID
Request Body:
{
"id": 1,
"isDeleted": false
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Area restored successfully",
"data": "Area restored successfully"
}
Path Parameters: id (int) – Area ID
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Area deleted successfully",
"data": "Area deleted successfully"
}
🏷️ Area Types
Response 200 OK
[
{
"id": 1,
"name": "Building",
"note": "Main building type",
"description": "Large structure for offices",
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": "user123",
"updatedUserName": "Admin User",
"deletedUserId": null,
"deletedUserName": null
}
]
Path Parameters: id (int) – Area Type ID
Response 200 OK
{
"id": 1,
"name": "Building",
"note": "Main building type",
"description": "Large structure for offices",
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": "user123",
"updatedUserName": "Admin User",
"deletedUserId": null,
"deletedUserName": null
}
Request Body:
{
"name": "Department",
"note": "Organizational department",
"description": "Internal department within organization"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Area type created successfully",
"data": "Area type created successfully"
}
Path Parameters: id (int) – Area Type ID
Request Body:
{
"id": 1,
"name": "Updated Building",
"note": "Updated note",
"description": "Updated description"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Area type updated successfully",
"data": "Area type updated successfully"
}
Path Parameters: id (int) – Area Type ID
Request Body:
{
"id": 1,
"isDeleted": false
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Area type restored successfully",
"data": "Area type restored successfully"
}
Path Parameters: id (int) – Area Type ID
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Area type deleted successfully",
"data": "Area type deleted successfully"
}
📜 Audit Log
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| UserId | string | No | Filter by user ID |
| TableName | string | No | Filter by table name |
| Action | string | No | Filter by action |
| FromDate | DateTime | No | Start date |
| ToDate | DateTime | No | End date |
| Page | int | No | Page number (default: 1) |
| PageSize | int | No | Page size (default: 20) |
Response 200 OK
{
"items": [
{
"action": "INSERT",
"tableName": "Areas",
"timestamp": "2024-01-15T10:30:00Z",
"userId": "user123",
"oldValues": {},
"newValues": {
"Id": 5,
"Name": "New Area",
"AreaTypeId": 1
}
}
],
"totalCount": 150,
"pageNumber": 1,
"pageSize": 20,
"totalPages": 8
}
⛔ Black Lists
Response 200 OK
[
{
"id": "blk001",
"name": "John Doe",
"note": "Unauthorized access attempt",
"description": "Attempted to enter restricted area",
"documentIdno": "ID123456",
"pictureUrl": "https://example.com/person.jpg",
"dateTimeFrom": "2024-01-01T00:00:00Z",
"dateTimeTo": "2024-12-31T23:59:59Z",
"permanentBlock": false,
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null,
"area": [
{ "id": 1, "name": "Main Building" },
{ "id": 2, "name": "East Wing" }
]
}
]
Path Parameters: id (string) – Blacklist ID
Response 200 OK
{
"id": "blk001",
"name": "John Doe",
"note": "Unauthorized access attempt",
"description": "Attempted to enter restricted area",
"documentIdno": "ID123456",
"pictureUrl": "https://example.com/person.jpg",
"dateTimeFrom": "2024-01-01T00:00:00Z",
"dateTimeTo": "2024-12-31T23:59:59Z",
"permanentBlock": false,
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null,
"area": [
{ "id": 1, "name": "Main Building" }
]
}
Request Parameters (Form Data):
| Parameter | Type | Required | Description |
|---|---|---|---|
| Name | string | Yes | Person's name |
| Note | string | No | Additional notes |
| Description | string | No | Detailed description |
| DocumentIdno | string | Yes | ID document number |
| Image | IFormFile | No | Person's image file |
| PictureUrl | string | No | Person's image URL |
| DateTimeFrom | DateTime | No | Block start date |
| DateTimeTo | DateTime | No | Block end date |
| PermanentBlock | bool | No | Whether block is permanent |
| AreaIds | List | Yes | Areas where block applies |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Blacklist entry created successfully",
"data": "blk001"
}
Path Parameters: id (string) – Blacklist ID
Request parameters same as /black-list/create plus Id field.
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Blacklist entry updated successfully",
"data": "Blacklist entry updated successfully"
}
Path Parameters: id (string) – Blacklist ID
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Blacklist entry deleted successfully",
"data": "Blacklist entry deleted successfully"
}
Query Parameters:
| documentNo | string | Yes | Document number |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Blacklist entry deleted successfully",
"data": "Blacklist entry deleted successfully"
}
📊 Dashboard
Response 200 OK
{
"totalInvitation": 1250,
"entered": 875,
"exited": 350,
"pending": 25,
"totalTransaction": 3500
}
Query Parameters:
| DateFrom | DateTime | No | Start date (default: 30 days ago) |
| DateTo | DateTime | No | End date (default: now) |
Response 200 OK
[
{ "day": "2024-01-15T00:00:00Z", "count": 45 },
{ "day": "2024-01-16T00:00:00Z", "count": 52 }
]
Query Parameters:
| Year | int | No | Year (default: current year) |
Response 200 OK
[
{
"week": 1,
"days": [
{ "day": "Monday", "count": 12 },
{ "day": "Tuesday", "count": 15 }
]
}
]
Query Parameters:
| Year | int | No | Year (default: current year) |
Response 200 OK
[
{ "weekNumber": 1, "count": 85 },
{ "weekNumber": 2, "count": 92 }
]
Query Parameters:
| DateFrom | DateTime | No | Start date (default: today) |
| DateTo | DateTime | No | End date (default: today) |
Response 200 OK
[
{ "hour": 9, "count": 25 },
{ "hour": 10, "count": 42 }
]
Query Parameters:
| Year | int | No | Year (default: current year) |
Response 200 OK
[
{ "month": "January", "count": 450 },
{ "month": "February", "count": 380 }
]
Response 200 OK
[
{
"documentId": "ID123456",
"fullName": "John Smith",
"registrationDate": "2024-01-15T09:30:00Z",
"expiryDate": "2024-01-15T17:30:00Z",
"cardNumber": "CARD001"
}
]
📱 Devices
Response 200 OK
[
{
"id": "dev001",
"name": "Main Gate Kiosk",
"deviceNo": 1,
"deviceIp": "192.168.1.100",
"deviceTypeName": "Kiosk",
"deviceTypeId": "type001",
"durationComponentLifeTime": 30,
"openQrRangeFrom": 1000,
"openQrRangeTo": 1999,
"qrRangeFrom": 2000,
"qrRangeTo": 2999,
"usingScaner": true,
"showAllUnits": false,
"isActive": true,
"isDeleted": false,
"areaId": 1,
"areaName": "Main Building",
"note": "Main entrance kiosk",
"description": "Kiosk at the main entrance",
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null,
"usingRange": true,
"autoGenerate": true
}
]
Path Parameters: id (string) – Device ID
Response 200 OK
{
"id": "dev001",
"name": "Main Gate Kiosk",
"deviceNo": 1,
"deviceIp": "192.168.1.100",
"deviceTypeName": "Kiosk",
"deviceTypeId": "type001",
"durationComponentLifeTime": 30,
"openQrRangeFrom": 1000,
"openQrRangeTo": 1999,
"qrRangeFrom": 2000,
"qrRangeTo": 2999,
"usingScaner": true,
"showAllUnits": false,
"isActive": true,
"isDeleted": false,
"areaId": 1,
"areaName": "Main Building",
"note": "Main entrance kiosk",
"description": "Kiosk at the main entrance",
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null,
"usingRange": true,
"autoGenerate": true
}
Path Parameters: ip (string) – Device IP address
Response 200 OK
{
"id": "dev001",
"name": "Main Gate Kiosk",
"deviceNo": 1,
"deviceIp": "192.168.1.100",
"deviceTypeName": "Kiosk",
"deviceTypeId": "type001",
"durationComponentLifeTime": 30,
"openQrRangeFrom": 1000,
"openQrRangeTo": 1999,
"qrRangeFrom": 2000,
"qrRangeTo": 2999,
"usingScaner": true,
"showAllUnits": false,
"isActive": true,
"isDeleted": false,
"areaId": 1,
"areaName": "Main Building",
"note": "Main entrance kiosk",
"description": "Kiosk at the main entrance",
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null,
"usingRange": true,
"autoGenerate": true
}
Request Body:
{
"name": "South Gate Kiosk",
"deviceNo": 2,
"password": "devicePass123",
"userName": "kioskUser",
"deviceIp": "192.168.1.101",
"databaseName": "KioskDB",
"printerName": "Zebra ZD420",
"cameraName": "Logitech C920",
"durationComponentLifeTime": 30,
"qrRangeFrom": 3000,
"qrRangeTo": 3999,
"deviceTypeId": "type001",
"areaId": 2,
"serverId": "server001",
"note": "South entrance kiosk",
"description": "Kiosk at the south entrance",
"usingScaner": true,
"showAllUnits": false,
"isActive": true,
"usingRange": true,
"autoGenerate": true
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device created successfully",
"data": "dev002"
}
Path Parameters: id (string) – Device ID
Request body same as /Device/create plus Id field.
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device updated successfully",
"data": "Device updated successfully"
}
Request Body:
{
"id": "dev001",
"isActive": false
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device status updated successfully",
"data": "Device status updated successfully"
}
Request Body:
{
"id": "dev001",
"usingScaner": true
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device scanner status updated successfully",
"data": "Device scanner status updated successfully"
}
Request Body:
{
"id": "dev001",
"showAllUnits": true
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device show all units setting updated successfully",
"data": "Device show all units setting updated successfully"
}
Request Body:
{
"id": "dev001",
"isDeleted": false
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device restored successfully",
"data": "Device restored successfully"
}
Path Parameters: id (string) – Device ID
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device deleted successfully",
"data": "Device deleted successfully"
}
📟 Device Types
Response 200 OK
[
{
"id": "type001",
"name": "Kiosk",
"isDeleted": false,
"note": "Self-service kiosk",
"description": "Touch screen kiosk for visitor registration",
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null
}
]
Path Parameters: id (string) – Device Type ID
Response 200 OK
{
"id": "type001",
"name": "Kiosk",
"isDeleted": false,
"note": "Self-service kiosk",
"description": "Touch screen kiosk for visitor registration",
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null
}
Request Body:
{
"name": "Biometric Reader",
"note": "Fingerprint scanner",
"description": "Biometric fingerprint reader for access control"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device type created successfully",
"data": "type003"
}
Path Parameters: id (string) – Device Type ID
Request Body:
{
"id": "type001",
"name": "Updated Kiosk",
"note": "Updated note",
"description": "Updated description"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device type updated successfully",
"data": "Device type updated successfully"
}
Request Body:
{
"id": "type001",
"isDeleted": false
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device type restored successfully",
"data": "Device type restored successfully"
}
Path Parameters: id (string) – Device Type ID
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Device type deleted successfully",
"data": "Device type deleted successfully"
}
🖨️ Hardware
Request Body:
{
"printerName": "CUSTOM TG2480-H",
"name": "John Smith",
"areaName": "Main Building",
"areaId": 1,
"registerationDate": "2024-01-15 09:30:00",
"qrBase64": "iVBORw0KGgoAAAANSUhEUgAA..."
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Print job sent successfully",
"data": "Print job sent successfully"
}
📄 Invitation Document Type
Response 200 OK
[
{
"id": 1,
"name": "National ID",
"note": "National identity card",
"description": "Official government ID",
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null
}
]
Path Parameters: id (int) – Invitation Document Type ID
Response 200 OK
{
"id": 1,
"name": "National ID",
"note": "National identity card",
"description": "Official government ID",
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null
}
Request Body:
{
"name": "Driver License",
"note": "Driver's license",
"description": "Official driver's license"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Invitation document type created successfully",
"data": "3"
}
Path Parameters: id (int) – Invitation Document Type ID
Request Body:
{
"id": 1,
"name": "Updated National ID",
"note": "Updated note",
"description": "Updated description"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Invitation document type updated successfully",
"data": "Invitation document type updated successfully"
}
Path Parameters: id (int) – Invitation Document Type ID
Request Body:
{
"id": 1,
"isDeleted": false
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Invitation document type restored successfully",
"data": "Invitation document type restored successfully"
}
Path Parameters: id (int) – Invitation Document Type ID
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Invitation document type deleted successfully",
"data": "Invitation document type deleted successfully"
}
📨 Invitations
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| PageNumber | int | No | Page number (default: 1) |
| PageSize | int | No | Page size (default: 10) |
| Search | string | No | Search term |
| CreateDateFrom | DateTime | No | Creation date from |
| CreateDateTo | DateTime | No | Creation date to |
| RegistrationDateFrom | DateTime | No | Registration date from |
| RegistrationDateTo | DateTime | No | Registration date to |
| ExpiryDateFrom | DateTime | No | Expiry date from |
| ExpiryDateTo | DateTime | No | Expiry date to |
| Status | byte | No | Invitation status |
| IsSuccess | string | No | Success flag |
| orderby | string | No | Order by field (default: "CreateDate") |
| orderbyType | string | No | Order type (ASC/DESC, default: "ASC") |
| ActiveDate | DateTime | No | Active date |
| ExpiryDate | DateTime | No | Expiry date |
| VisitTypeId | int | No | Visit type ID |
| GroupId | string | No | Group ID filter |
Response 200 OK
{
"items": [
{
"id": "inv001",
"fullName": "John Smith",
"email": "john.smith@example.com",
"phone": "+1234567890",
"documentId": "ID123456",
"cardNumber": "CARD001",
"areaNames": "Main Building, Floor 1",
"areaId": 1,
"qrLink": "https://example.com/qr/inv001",
"invitDocType": 1,
"name": "National ID",
"visitorImage": "https://example.com/visitor.jpg",
"registrationDate": "2024-01-15T09:30:00Z",
"expiryDate": "2024-01-15T17:30:00Z",
"createDate": "2024-01-15T09:30:00Z",
"status": 1,
"visitType": "Business",
"customVisitType": null,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"isSuccess": false,
"documentImage": "https://example.com/document.jpg",
"transactionType": null,
"company": "ABC Corp",
"statusValue": "Active"
}
],
"totalCount": 150,
"pageNumber": 1,
"pageSize": 10,
"totalPages": 15
}
Query Parameters:
| search | string | No | Search term for groups |
Response 200 OK
[
{
"groupId": "grp001",
"groupLabel": "Conference Attendees",
"invitationCount": 25,
"createdDate": "2024-01-10T10:00:00Z"
}
]
Path Parameters: id (string) – Invitation ID
Response 200 OK
{
"id": "inv001",
"fullName": "John Smith",
"resone": "Business meeting",
"email": "john.smith@example.com",
"phone": "+1234567890",
"status": 1,
"documentImage": "https://example.com/document.jpg",
"documentId": "ID123456",
"registrationDate": "2024-01-15T09:30:00Z",
"visitorImage": "https://example.com/visitor.jpg",
"expiryDate": "2024-01-15T17:30:00Z",
"cardNumber": "CARD001",
"qrLink": "https://example.com/qr/inv001",
"isSuccess": false,
"areaNames": "Main Building, Floor 1, Office 101",
"invitDocType": 1,
"name": "National ID",
"note": "VIP visitor",
"description": "Important client meeting",
"transactionType": null,
"visitType": "Business",
"customVisitType": null,
"invitationCount": 1,
"createdUserId": "user123",
"createdUserName": "Admin User",
"company": "ABC Corp",
"lastUpdatedUserId": null,
"updatedUserName": null,
"statusValue": "Active",
"invitations": [],
"firstInvitation": null,
"lastInvitation": null,
"firstTransaction": null,
"lastTransaction": null
}
Query Parameters:
| documentId | string | Yes | Document ID |
Response 200 OK
[
{
"id": "inv001",
"fullName": "John Smith",
"email": "john.smith@example.com",
"phone": "+1234567890",
"documentId": "ID123456",
"cardNumber": "CARD001",
"areaNames": "Main Building, Floor 1",
"areaId": 1,
"qrLink": "https://example.com/qr/inv001",
"invitDocType": 1,
"name": "National ID",
"visitorImage": "https://example.com/visitor.jpg",
"registrationDate": "2024-01-15T09:30:00Z",
"expiryDate": "2024-01-15T17:30:00Z",
"createDate": "2024-01-15T09:30:00Z",
"status": 1,
"visitType": "Business",
"customVisitType": null,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"isSuccess": false,
"documentImage": "https://example.com/document.jpg",
"transactionType": null,
"company": "ABC Corp",
"statusValue": "Active"
}
]
Request Parameters (Form Data):
| Parameter | Type | Required | Description |
|---|---|---|---|
| FullName | string | No | Visitor's full name |
| string | No | Visitor's email | |
| Phone | string | No | Visitor's phone |
| Image | IFormFile | No | Visitor's image file |
| PersonImage | IFormFile | No | Person image file |
| VisitorImage | string | No | Visitor image URL |
| DocumentImage | string | No | Document image URL |
| DocumentId | string | No | Document ID number |
| RegistrationDate | DateTime | No | Registration date (default: now) |
| ExpiryDate | DateTime | No | Expiry date (default: now + 30min) |
| CardNumber | string | No | Card number |
| AreaId | int | Yes | Area/unit ID |
| Resone | string | No | Reason for visit |
| Note | string | No | Additional notes |
| Description | string | No | Description |
| InvitDocType | int | Yes | Invitation document type ID |
| DeviceIp | string | Yes | Device IP address |
| VisitTypesId | int | No | Visit type ID |
| CustomVisitType | string | No | Custom visit type |
| GroupId | string | No | Group ID |
| GroupLabel | string | No | Group label |
| Company | string | No | Company name |
Response 200 OK
{
"qrLink": "https://example.com/qr/inv002",
"id": "inv002"
}
Request Parameters (Form Data):
| Parameter | Type | Required | Description |
|---|---|---|---|
| GroupLabel | string | No | Label for the group |
| InvitationsJson | List | Yes | JSON strings of InvitationCreateRequest |
| Images | List | No | Image files for each invitation |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Group created successfully",
"data": "grp002"
}
Request Body:
{
"registrationId": "inv001"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Invitation cancelled successfully",
"data": "Invitation cancelled successfully"
}
👥 Roles
Response 200 OK
[
{ "id": "role001", "name": "Admin" },
{ "id": "role002", "name": "User" }
]
Path Parameters: roleId (string) – Role ID
Response 200 OK
{
"roleId": "role001",
"roleName": "Admin",
"permissions": [
{
"module": "Area",
"permissions": [
{ "name": "Index", "value": true },
{ "name": "Create", "value": true }
]
}
]
}
Request (Form Data):
| roleName | string | Yes | Name of the role |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Role created successfully",
"data": "role004"
}
Request Body:
{
"roleId": "role001",
"permissions": [
{
"module": "Area",
"permissions": [
{ "name": "Index", "value": true },
{ "name": "Create", "value": true }
]
}
]
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Permissions assigned successfully",
"data": "Permissions assigned successfully"
}
Request (Form Data):
| roleId | string | Yes | Role ID to delete |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Role deleted successfully",
"data": "Role deleted successfully"
}
⚙️ Settings
Response 200 OK
{
"integrationUrl": "https://integration.example.com",
"isIntegrated": true,
"rbhUrl": "https://rbh.example.com",
"rbhUsername": "rbh_user",
"emailAddress": "noreply@example.com",
"emailDisplayName": "AVMS System",
"emailPassword": null,
"emailHost": "smtp.example.com",
"emailPort": 587,
"emailImageUrl": "https://example.com/email-logo.png"
}
Response 200 OK
[
{
"id": "setting001",
"key": "IntegrationUrl",
"value": "https://integration.example.com",
"description": "Integration bridge URL"
}
]
Request Body:
{
"baseUrl": "https://integration.example.com"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Connection successful",
"data": "Connected successfully"
}
Request Body:
{
"id": "setting001",
"integrationUrl": "https://new-integration.example.com",
"isIntegrated": true
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Connection test successful",
"data": "Connected successfully"
}
Request Parameters (Form Data):
| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Yes | Email address | |
| DisplayName | string | No | Display name |
| Password | string | Yes | Email password |
| Host | string | No | SMTP host |
| Port | int | Yes | SMTP port |
| Image | IFormFile | No | Email logo image |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Email settings updated successfully",
"data": "Email settings updated successfully"
}
Request Parameters (Form Data):
| Parameter | Type | Required | Description |
|---|---|---|---|
| DatabaseName | string | Yes | Database name |
| BackupDirectory | string | Yes | Backup directory path |
| BackupIntervalDay | int | Yes | Backup interval in days |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Backup settings updated successfully",
"data": "Backup settings updated successfully"
}
Response 200 OK
{
"isIntegrated": true,
"rbhUrl": "https://rbh.example.com",
"rbhUsername": "rbh_user"
}
Request Body:
{
"isIntegrated": true,
"rbhUrl": "https://rbh.example.com",
"rbhUsername": "rbh_user",
"rbhPassword": "rbh_password"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "RBH settings updated successfully",
"data": "RBH settings updated successfully"
}
Request Body:
{
"rbhUrl": "https://rbh.example.com",
"rbhUsername": "rbh_user",
"rbhPassword": "rbh_password"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "RBH connection successful",
"data": "Connected to RBH successfully"
}
🖥️ Terminal
Query Parameters:
| ip | string | Yes | Device IP address |
Response 200 OK
[
{
"unitName": "Main Building",
"unitOwner": "Jane Doe",
"unitParent": "Headquarters",
"unitGrandParent": "Organization",
"unitId": 1,
"ownerPicture": "https://example.com/owner.jpg",
"availableFrom": "08:00:00",
"availableTo": "18:00:00",
"isOpen": true,
"logo": "https://example.com/logo.png"
}
]
🔄 Transaction
Request Body:
{
"invitationId": "inv001",
"transactionType": "Entry",
"createDate": "2024-01-15T09:30:00Z",
"cardNumber": "CARD001"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Transaction created successfully",
"data": "trans001"
}
👤 Users
Response 200 OK
[
{
"userId": "user123",
"username": "jane.doe",
"email": "jane.doe@example.com",
"isActive": true,
"pictureUrl": "https://example.com/user.jpg",
"roles": ["Admin", "User"],
"accountStatus": "Active",
"emailConfirmed": true,
"phoneNumber": "+1234567890",
"isDeleted": false,
"uniqCode": "DEVICE001",
"createdUserId": "admin123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null,
"areas": [
{ "areaId": 1, "areaName": "Main Building" }
]
}
]
Path Parameters: id (string) – User ID
Response 200 OK
{
"userId": "user123",
"username": "jane.doe",
"email": "jane.doe@example.com",
"isActive": true,
"pictureUrl": "https://example.com/user.jpg",
"roles": ["Admin", "User"],
"accountStatus": "Active",
"emailConfirmed": true,
"phoneNumber": "+1234567890",
"isDeleted": false,
"uniqCode": "DEVICE001",
"createdUserId": "admin123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null,
"areas": [
{ "areaId": 1, "areaName": "Main Building" }
]
}
Response 200 OK
[
{ "status": "Pending", "value": 0 },
{ "status": "Accept", "value": 1 },
{ "status": "Reject", "value": 2 }
]
Path Parameters: userId (string) – User ID
Response 200 OK
{
"userId": "user123",
"username": "jane.doe",
"roles": [
{ "roleId": "role001", "roleName": "Admin", "isSelected": true },
{ "roleId": "role002", "roleName": "User", "isSelected": true }
]
}
Request Body:
{
"userId": "user123",
"roles": [
{ "roleId": "role001", "roleName": "Admin", "isSelected": true },
{ "roleId": "role002", "roleName": "User", "isSelected": false }
]
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Roles assigned successfully",
"data": "Roles assigned successfully"
}
Request Body:
{
"id": "user123",
"accountStatus": 1
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "User account status updated successfully",
"data": "User account status updated successfully"
}
Request Parameters (Form Data):
| Parameter | Type | Required | Description |
|---|---|---|---|
| Id | string | Yes | User ID |
| Username | string | Yes | Username |
| string | Yes | ||
| PhoneNumber | string | Yes | Phone number |
| Image | IFormFile | No | Profile image |
| PictureUrl | string | No | Profile image URL |
| AreaIds | List | No | Area IDs |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "User updated successfully",
"data": "User updated successfully"
}
Request Body:
{
"userId": "user123",
"isActive": true
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "User active status updated successfully",
"data": "User active status updated successfully"
}
Request Body:
{
"id": "user123",
"isDeleted": false
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "User restored successfully",
"data": "User restored successfully"
}
Request Body:
{
"id": "user123"
}
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "User deleted successfully",
"data": "User deleted successfully"
}
🏢 Visit Types
Response 200 OK
[
{
"id": 1,
"name": "Business",
"pictureUrl": "https://example.com/business.png",
"note": "Business meetings",
"description": "Official business visits",
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null
}
]
Path Parameters: id (int) – Visit Type ID
Response 200 OK
{
"id": 1,
"name": "Business",
"pictureUrl": "https://example.com/business.png",
"note": "Business meetings",
"description": "Official business visits",
"isDeleted": false,
"createdUserId": "user123",
"createdUserName": "Admin User",
"lastUpdatedUserId": null,
"updatedUserName": null,
"deletedUserId": null,
"deletedUserName": null
}
Request Parameters (Form Data):
| Parameter | Type | Required | Description |
|---|---|---|---|
| Name | string | Yes | Visit type name |
| PictureUrl | string | No | Image URL |
| Image | IFormFile | No | Image file |
| Note | string | No | Additional notes |
| Description | string | No | Description |
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Visit type created successfully",
"data": "3"
}
Path Parameters: id (int) – Visit Type ID
Request parameters same as /visitTypes/create plus Id field.
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Visit type updated successfully",
"data": "Visit type updated successfully"
}
Path Parameters: id (int) – Visit Type ID
Response 200 OK
{
"statusCode": 200,
"succeeded": true,
"message": "Visit type deleted successfully",
"data": "Visit type deleted successfully"
}