Gym Master
Read-only — members, contracts and gym check-in history.
4 endpoints · base /api/v1/gym
List gym members (with phone, plan expiry, total paid, assigned staff, last check-in).
MCP tool:
gym_list_membersScope: gym.members.viewAPI key / appParameter
| Parameter | Type | In | Required | Description |
|---|---|---|---|---|
pageNumber | int | query | no | Page (starts at 1) |
pageSize | int | query | no | Rows per page |
search | string | query | no | Name / phone / member code |
isActive | boolean | query | no | true = still active |
Example
curl https://api.nextx.vn/api/v1/gym/members?pageNumber=1&pageSize=1&search=...&isActive=... \
-H "Authorization: Bearer <ACCESS_TOKEN>"Sample response
{
"items": [
{
"id": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"branchId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"contactId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"memberCode": "string",
"fullName": "string",
"phone": "string",
"email": "string",
"avatarUrl": "string",
"joinedDate": "2026-10-27",
"isActive": false,
"activeSubscriptionType": "string",
"activeSubscriptionStartDate": "2026-10-27",
"activeSubscriptionEndDate": "2026-10-27",
"sourceId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"sourceName": "string",
"createdAt": "2026-10-27T09:00:00+07:00",
"assignedStaffId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"assignedStaffName": "string",
"assignedStaffCode": "string",
"dateOfBirth": "2026-10-27",
"gender": "string",
"isGroupMembership": false,
"groupRole": "string",
"groupContractCode": "string",
"groupPackageName": "string",
"groupMemberCount": 0,
"groupMaxMembers": 0,
"branchName": "string",
"address": "string",
"industryName": "string",
"customerGroupName": "string",
"contactPersonName": "string",
"contactPersonPhone": "string",
"contactPersonRelationship": "string",
"standardExpiry": "2026-10-27",
"classExpiry": "2026-10-27",
"ptExpiry": "2026-10-27",
"trainingBranchNames": [
"string"
],
"trainingAllBranches": false,
"memberDisplayStatus": "string",
"taxCode": "string",
"totalSales": 0,
"totalPaid": 0,
"totalDebt": 0,
"lastCheckinDate": "2026-10-27",
"daysSinceLastCheckin": 0,
"loyaltyTierName": "string",
"identityNumber": "string",
"identityIssuedDate": "2026-10-27",
"identityIssuedPlace": "string",
"notes": "string",
"cardCode": "string",
"devicePin": "string",
"city": "string",
"district": "string",
"ward": "string",
"phone2": "string",
"phone3": "string",
"referrerName": "string",
"referrerMemberCode": "string",
"createdByName": "string",
"hasCardCredential": false,
"hasFaceCredential": false,
"hasFingerprintCredential": false
}
],
"totalCount": 0,
"page": 0,
"pageSize": 0,
"totalPages": 0,
"hasNextPage": false,
"hasPreviousPage": false
}Details of one member.
MCP tool:
gym_get_memberScope: gym.members.viewAPI key / appParameter
| Parameter | Type | In | Required | Description |
|---|---|---|---|---|
id | GUID | path | yes | — |
Example
curl https://api.nextx.vn/api/v1/gym/members/<id> \
-H "Authorization: Bearer <ACCESS_TOKEN>"Sample response
{
"id": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"branchId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"contactId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"memberCode": "string",
"fullName": "string",
"phone": "string",
"email": "string",
"dateOfBirth": "2026-10-27",
"gender": "string",
"avatarUrl": "string",
"joinedDate": "2026-10-27",
"notes": "string",
"isActive": false,
"subscriptions": [
{
"id": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"contractCode": "string",
"packageName": "string",
"packageType": "string",
"status": "string",
"startDate": "2026-10-27",
"endDate": "2026-10-27",
"sessionsTotal": 0,
"sessionsUsed": 0,
"pricePaid": 0,
"createdAt": "2026-10-27T09:00:00+07:00",
"isGroup": false,
"maxMembers": 0,
"groupMemberCount": 0,
"groupRole": "string",
"ptId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"approvalStatus": "string",
"activationStatus": "string",
"debtRemaining": 0
}
],
"createdAt": "2026-10-27T09:00:00+07:00",
"updatedAt": "2026-10-27T09:00:00+07:00",
"identityNumber": "string",
"identityIssuedDate": "2026-10-27",
"identityIssuedPlace": "string",
"ward": "string",
"address": "string",
"city": "string",
"country": "string",
"phone2": "string",
"phone3": "string",
"assignedStaffId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"assignedStaffName": "string",
"assignedStaffCode": "string",
"industryId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"industryName": "string",
"customerGroupId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"customerGroupName": "string",
"sourceId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"sourceName": "string",
"referredByMemberId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"referredByMemberName": "string",
"referredByMemberCode": "string",
"cardCode": "string",
"branchName": "string",
"contactPersonName": "string",
"contactPersonPhone": "string",
"contactPersonRelationship": "string",
"deviceEmployeeNo": "string",
"taxCode": "string",
"devicePin": "string",
"appAccountWarning": "string",
"contactSyncWarning": "string",
"tagIds": [
"0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b"
],
"tagSyncWarning": "string"
}List gym contracts (contract code, plan, expiry, paid/outstanding, sales staff).
MCP tool:
gym_list_contractsScope: gym.contracts.viewAPI key / appParameter
| Parameter | Type | In | Required | Description |
|---|---|---|---|---|
pageNumber | int | query | no | Page (starts at 1) |
pageSize | int | query | no | Rows per page |
gymProfileId | GUID | query | no | Filter by one member |
status | string | query | no | Contract status, e.g. ACTIVE / EXPIRED |
Example
curl https://api.nextx.vn/api/v1/gym/contracts?pageNumber=1&pageSize=1&gymProfileId=%3CgymProfileId%3E&status=... \
-H "Authorization: Bearer <ACCESS_TOKEN>"Sample response
{
"items": [
{
"id": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"branchId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"branchName": "string",
"contractCode": "string",
"gymProfileId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"memberCode": "string",
"memberName": "string",
"packageName": "string",
"packageType": "string",
"status": "string",
"scheduledStartDate": "2026-10-27",
"saleStaffId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"saleStaffName": "string",
"startDate": "2026-10-27",
"endDate": "2026-10-27",
"sessionsTotal": 0,
"sessionsUsed": 0,
"totalPaid": 0,
"debtRemaining": 0,
"contractDate": "2026-10-27",
"createdAt": "2026-10-27T09:00:00+07:00",
"discountPercent": 0,
"totalDiscountAmount": 0,
"activationStatus": "string",
"category": {
"id": null,
"name": null,
"description": null,
"color": null,
"isSystem": null,
"code": null
},
"originalPrice": 0,
"totalWithVat": 0,
"durationMonths": 0,
"durationDays": 0,
"isRenewal": false,
"ptId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"ptStaffName": "string",
"orderChannel": "string",
"memberUrl": "string",
"registrationDate": "2026-10-27",
"trainingBranchNames": [
"string"
],
"trainingAllBranches": false,
"saleStaffCode": "string",
"ptStaffCode": "string",
"searchMatches": [
null
],
"packageUnitSnapshot": "string",
"bonusMonths": 0,
"bonusDays": 0,
"bonusSessions": 0,
"serviceValue": 0,
"carriedValueAmount": 0,
"pureDiscountAmount": 0,
"carriedFromContractCode": "string",
"relationFrom": {
"kind": null,
"contractId": null,
"contractCode": null
},
"relationTo": {
"kind": null,
"contractId": null,
"contractCode": null
},
"extensionValue": 0,
"isBranchTransfer": false,
"isBranchTransferTarget": false,
"isSessionExhausted": false,
"approvalStatus": "string",
"memberDateOfBirth": "2026-10-27",
"memberPhone": "string",
"memberEmail": "string",
"memberAddress": "string",
"memberGender": "string",
"memberGroupName": "string",
"memberSource": "string",
"memberDevicePin": "string",
"memberCardCode": "string",
"contractKind": "string",
"activatedAt": "2026-10-27T09:00:00+07:00",
"notes": "string",
"promotionName": "string",
"isSigned": false,
"signedAt": "2026-10-27T09:00:00+07:00",
"signedByName": "string",
"createdByName": "string",
"updatedByName": "string",
"updatedAt": "2026-10-27T09:00:00+07:00",
"maxMembers": 0,
"groupMemberNames": [
"string"
],
"remainingValue": 0,
"usedValue": 0,
"consumedFreezeDays": 0,
"invoiceRequested": false,
"invoiceTaxCode": "string",
"invoiceCompanyName": "string",
"invoiceAddress": "string",
"invoiceBuyerName": "string",
"invoiceEmail": "string",
"autoRenewStatus": "string"
}
],
"totalCount": 0,
"page": 0,
"pageSize": 0,
"totalPages": 0,
"hasNextPage": false,
"hasPreviousPage": false
}Gym check-in history, filterable by member and date range.
MCP tool:
gym_list_checkinsScope: gym.checkins.viewAPI key / appParameter
| Parameter | Type | In | Required | Description |
|---|---|---|---|---|
pageNumber | int | query | no | Page (starts at 1) |
pageSize | int | query | no | Rows per page |
gymProfileId | GUID | query | no | Filter by one member |
dateFrom | datetime | query | no | ISO datetime, e.g. 2026-08-01T00:00:00+07:00 |
dateTo | datetime | query | no | ISO datetime |
Example
curl https://api.nextx.vn/api/v1/gym/checkins?pageNumber=1&pageSize=1&gymProfileId=%3CgymProfileId%3E&dateFrom=...&dateTo=... \
-H "Authorization: Bearer <ACCESS_TOKEN>"Sample response
{
"items": [
{
"id": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"branchId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"gymProfileId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"memberCode": "string",
"memberName": "string",
"checkinType": "string",
"credentialType": "string",
"checkinTime": "2026-10-27T09:00:00+07:00",
"checkoutTime": "2026-10-27T09:00:00+07:00",
"isValid": false,
"invalidReason": "string",
"isManualOverride": false,
"deviceName": "string",
"createdAt": "2026-10-27T09:00:00+07:00",
"zoneId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"accessDecision": "string",
"denyReason": "string",
"ticketId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"ticketCode": "string",
"guestName": "string",
"guestPhone": "string",
"subscriptionId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"contractCode": "string",
"packageName": "string",
"avatarKey": "string",
"branchName": "string",
"avatarUrl": "string",
"subscriptionStatus": "string",
"subscriptionExpireDate": "2026-10-27",
"subscriptionTotalSessions": 0,
"subscriptionUsedSessions": 0,
"packageMode": "string",
"sessionsRemainingSnapshot": 0,
"ptId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
"ptName": "string",
"sessionsDeducted": 0,
"serviceCode": "string",
"checkinSource": "string",
"notes": "string",
"packageType": "string",
"groupMemberAllocation": 0,
"groupMemberRemaining": 0,
"hasPhoto": false,
"photoUrl": "string",
"registeredFaceUrl": "string",
"phone": "string",
"debtRemaining": 0,
"checkinCountToday": 0,
"memberNote": "string",
"contractNote": "string",
"packageNote": "string",
"ptCode": "string",
"ptAvatarUrl": "string",
"gymHours": "string",
"saleStaffName": "string",
"daysRemaining": 0
}
],
"totalCount": 0,
"page": 0,
"pageSize": 0,
"totalPages": 0,
"hasNextPage": false,
"hasPreviousPage": false
}