User Endpoints
Endpoints are under /v1/users.
Base URL: https://api.gpcn.com/v1
See the API Reference → for examples in TypeScript, Python, Go, and C#.
Get Current User
GET /users/me
Returns the authenticated user's profile. No special permission required.
List Users
GET /users
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page |
integer | 1 |
Page number |
limit |
integer | 10 |
Items per page (max 100) |
sort |
string | createdAt:desc |
Sort field and direction |
search |
string | — | Search by email, first name, or last name |
filter[entityId] |
UUID | — | Filter by entity |
filter[excludeTeamId] |
integer | — | Exclude users in this resource group |
inviteStatus |
string | — | Filter: activated, pending, expired (repeatable) |
teamId |
integer | — | Filter by resource group (use 0 for unassigned) |
roleId |
string | — | Filter by role (use 0 for no roles) |
noTeam |
boolean | — | Only users without resource groups |
noRole |
boolean | — | Only users without roles |
deletedFilter |
string | exclude |
exclude, include, or only |
curl https://api.gpcn.com/v1/users \
-H "X-API-Key: gpcn_your_api_key_here"
Create User (Invite or Register)
POST /users
Request Body (Invite)
{
"email": "jane@example.com",
"firstName": "Jane",
"lastName": "Developer",
"action": "invite",
"roleNames": ["tenant-user"],
"teamIds": [1, 3]
}
Request Body (Register)
{
"email": "jane@example.com",
"password": "SecurePass123!",
"firstName": "Jane",
"lastName": "Developer",
"action": "register",
"roleNames": ["tenant-user"],
"teamIds": [1],
"entityId": "entity-uuid"
}
| Field | Type | Required | Description |
|---|---|---|---|
email |
string | Yes | User email |
action |
string | No | "invite" (default) or "register" |
password |
string | Register only | 12–50 chars, mixed case + number + special |
firstName |
string | No | First name |
lastName |
string | No | Last name |
roleNames |
string[] | No | Roles to assign |
teamIds |
integer[] | No | Resource groups to add the user to |
entityId |
UUID | Register only | Entity for registration |
curl -X POST https://api.gpcn.com/v1/users \
-H "X-API-Key: gpcn_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"email": "jane@example.com",
"firstName": "Jane",
"lastName": "Developer",
"action": "invite",
"roleNames": ["tenant-user"],
"teamIds": [1, 3]
}'
Response (201 Created)
Get User Details
GET /users/{id}
Edit User
PUT /users/{id}
Request Body
{ "firstName": "Jane", "lastName": "Senior Dev", "email": "jane.new@example.com" }
Delete User
DELETE /users/{id}
Soft-delete. User can no longer sign in.
Response (204 No Content)
Resend Invitation
POST /users/{id}/resend-invite
Get User's Resource Groups
GET /users/{id}/teams
Paginated list of resource groups the user belongs to.
Update Password (Self)
PUT /users/{id}/password
No special permission (self-service only).
Request Body
{ "currentPassword": "OldPass123!", "newPassword": "NewPass456!" }
Forgot Password
POST /users/forgot-password
Public endpoint (no auth required). Rate limited: 5 requests per IP per 15 minutes.
Request Body
{ "email": "jane@example.com" }
Get User's Roles
GET /users/{userId}/roles
Assign Role
POST /users/{userId}/roles
Request Body
{ "roleName": "tenant-admin" }
Revoke Role
DELETE /users/{userId}/roles/{roleName}
Response (204 No Content)
Bulk Delete Users
POST /users/bulk/delete
{ "ids": ["user-uuid-1", "user-uuid-2"] }
1–50 IDs.
Bulk Resend Invites
POST /users/bulk/resend-invite
{ "ids": ["user-uuid-1", "user-uuid-2"] }
Bulk Assign Roles
POST /users/bulk/assign-roles
{ "userIds": ["user-uuid-1", "user-uuid-2"], "roleNames": ["tenant-user", "vm-operator"] }
Bulk Assign Resource Groups
POST /users/bulk/assign-teams
{ "userIds": ["user-uuid-1"], "teamIds": [1, 2, 3] }
Next Steps
- Manage Users in the Portal → — invite and manage users from the dashboard
- Resource Group Endpoints → — manage resource groups via API
- Authentication → — API keys and permission scoping
.png)