مرجع عام
Users
كل نقاط النهاية في هذه المجموعة. افتح أي واحدة لعرض معاملاتها ومثال عملي عليها.
Users
92GET /api/v1/users List subscribers
One page of subscribers under the caller's authority. A manager without tenant-wide visibility sees only subscribers owned by their own manager subtree, and that scope is injected server-side, so a filter can narrow within it but never widen past it.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_indexView users - حد المعدل
user_list
The per-subscriber scan token (lookup_token) is deliberately absent from list rows. It is served by GET /users/{id} and GET /users/resolve only, because a page of a thousand rows is a bulk harvest of codes that each unlock a subscriber record.
المعاملات
| المعامل | الوصف |
|---|---|
q
query · string
|
Searches username, email, first and last name, phone, contract id, national id and static IP. A purely numeric term also matches the subscriber id exactly. |
filter[enabled]
query · boolean
|
The admin suspend flag. Not the same thing as expired. |
filter[expired]
query · boolean
|
Subscription window has passed. |
filter[online]
query · boolean
|
An open RADIUS session exists right now. |
filter[profile_id]
query · integer
|
Bound plan. |
filter[parent_id]
query · integer
|
Owning manager. Ignored, not honoured, when it would widen a restricted caller's scope. |
filter[username_exact]
query · string
|
Case-insensitive exact username, for a caller that already knows the identity and wants one deterministic row instead of a page of substring hits. |
filter[expiring_within_days]
query · integer
|
Future expiries only. |
filter[created_from]
query · string
|
yyyy-MM-dd HH:mm:ss in UTC. A malformed value is a 400, not an ignored filter. |
{
"data": [
{
"id": 4711,
"tenant_id": 12,
"username": "ahmed",
"email": "ahmed@example.test",
"enabled": true,
"status": {
"enabled": true,
"deleted": false,
"online": true,
"expired": false,
"have_quota": true,
"fup": false,
"can_connect": true
},
"profile_id": 7,
"profile_name": "Home 20M",
"parent_id": 41,
"parent_username": "cairo-reseller",
"bytes_remaining": 48318382080,
"plan_bytes_limit": 107374182400,
"used_bytes": 59055800320,
"expiration": "2026-10-14 00:00:00",
"balance": 0.00,
"debt": 0.00,
"mac_lock_enabled": false,
"mac_locked_addrs": [],
"enforces_bytes": true,
"enforces_seconds": false,
"created_at": "2026-03-02 11:40:12"
}
],
"meta": { "page": 1, "page_size": 50, "total": 812, "has_next": true }
}
POST /api/v1/users Create a subscriber
Creates the account and its identity only. It does not activate a plan, take money or grant quota — binding profile_id here is metadata. Use the activation endpoint for the paid part.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_createCreate users - حد المعدل
t_mutate
debt_limit is tri-state and the two falsy values mean opposite things. Omitted or null is unlimited credit; 0 is no credit at all. Sending 0 to mean "no opinion" silently blocks every future debit.
المعاملات
| المعامل | الوصف |
|---|---|
usernameمطلوب
body · string
|
Unique within the tenant, not globally. |
passwordمطلوب
body · string
|
The RADIUS password. Stored recoverable, because CHAP and MS-CHAPv2 need it that way. |
parent_id
body · integer
|
Owning manager. Defaults to the caller. A subscriber is never parent-less, and a named owner must be a manager the caller may act on. |
profile_id
body · integer
|
Plan to bind. Must be one the acting manager may actually assign. |
expiration
body · string
|
yyyy-MM-dd HH:mm:ss in UTC. |
debt_limit
body · number
|
Credit ceiling. Omitted or null is unlimited, 0 is no credit. |
portal_password
body · string
|
Optional portal-only password, hashed before storage and distinct from the RADIUS password above. |
custom_fields
body · object
|
Tenant-defined form values, validated against the user form schema. |
{
"data": {
"id": 4712,
"tenant_id": 12,
"username": "ahmed",
"enabled": true,
"profile_id": 7,
"parent_id": 41,
"balance": 0.00,
"debt": 0.00,
"created_at": "2026-09-20 09:14:55"
}
}
POST /api/v1/users/bulk-add-days Extend subscription
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_extendExtend subscription - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-add-hours Extend subscription
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_extendExtend subscription - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-add-traffic Add traffic
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_add_trafficAdd traffic - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-delete Delete users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_deleteDelete users - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-deposit Deposit to user wallet
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_depositDeposit to user wallet - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-deposit/preview Deposit to user wallet
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_depositDeposit to user wallet - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-disable Suspend many subscribers
Takes an array of ids and suspends each. One request against the per-tenant write budget instead of one per subscriber, which is the difference between fitting in a minute and not.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_enable_disableEnable / suspend users - حد المعدل
t_mutate
A bulk call reports per-id outcomes and returns 200 even when some ids failed. failed is always present, as an array, and each entry carries a stable reason (not_found, not_authorized, error) alongside a localized message. Branch on reason; treating the 200 as "all of them worked" is the mistake this shape exists to prevent.
المعاملات
| المعامل | الوصف |
|---|---|
idsمطلوب
body · array
|
Subscriber ids. |
{
"data": {
"updated": [4711, 4713],
"failed": [
{ "id": 4712, "reason": "not_authorized", "message": "You may not act on this record." }
]
}
}
POST /api/v1/users/bulk-disconnect Live traffic / disconnect
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_live_trafficLive traffic / disconnect - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-enable Enable / suspend users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_enable_disableEnable / suspend users - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-extend
- المصادقة
- رمز موظّف أو جلسة
- تتطلب أيًّا من
-
prm_users_activateprm_users_extend - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-extend/preview
- المصادقة
- رمز موظّف أو جلسة
- تتطلب أيًّا من
-
prm_users_activateprm_users_extend - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-reset-balance Withdraw / settle user debt
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_withdrawalWithdraw / settle user debt - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-reset-quota Reset user quota
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_reset_quotaReset user quota - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-set-expiration Extend subscription
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_extendExtend subscription - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-set-group Assign groups
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_groups_assignAssign groups - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-set-parent Change user parent
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_change_parentChange user parent - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-set-profile Change user profile
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_change_profileChange user profile - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-withdraw Withdraw / settle user debt
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_withdrawalWithdraw / settle user debt - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/bulk-withdraw/preview Withdraw / settle user debt
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_withdrawalWithdraw / settle user debt - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/owner-context Create users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_createCreate users
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/resolve Resolve a subscriber by scan code
Exchanges the opaque per-subscriber scan token, the one encoded in a printed QR code, for the subscriber record. Scoped to the caller's subtree exactly like a direct fetch.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_indexView users - حد المعدل
user_resolve
المعاملات
| المعامل | الوصف |
|---|---|
codeمطلوب
query · string
|
The scan token. The QR payload is prefixed with xr:u: — strip the prefix before sending. |
GET /api/v1/users/summary Count subscribers by state
Fleet-health counters over exactly the same authority scope as the list, so a count and the rows behind it always agree.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_indexView users
active means enabled AND not expired, not the bare enabled flag. total is every non-deleted subscriber, so the four other counters do not sum to it.
{
"data": {
"total": 812,
"active": 640,
"disabled": 44,
"online": 318,
"expired": 128
}
}
DELETE /api/v1/users/{id} Delete a subscriber
Soft-deletes the account and frees its username slot by renaming the row. The subscriber's live portal sessions are ended.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_deleteDelete users - حد المعدل
t_mutate
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
GET /api/v1/users/{id} Fetch one subscriber
The full record, including the computed status object and the fields the list projection leaves out.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_indexView users
A subscriber that exists but sits outside your subtree returns the same 404 as one that does not exist, byte for byte including details.reason. That is deliberate: a 403 would confirm the id and make the id space enumerable.
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
{
"data": {
"id": 4711,
"tenant_id": 12,
"username": "ahmed",
"enabled": true,
"status": { "online": true, "expired": false, "have_quota": true, "can_connect": true },
"profile_id": 7,
"fup_profile_id": null,
"bytes_remaining": 48318382080,
"seconds_remaining": null,
"expiration": "2026-10-14 00:00:00",
"balance": 0.00,
"debt": 0.00,
"debt_limit": null,
"mac_lock_enabled": false,
"mac_locked_addrs": [],
"simultaneous_sessions": 1,
"allowed_services": "both",
"lookup_token": "n8Qk2vRa1pLd7WxYzB0cEf",
"custom_fields": {},
"created_at": "2026-03-02 11:40:12"
}
}
PATCH /api/v1/users/{id} Update a subscriber
Partial update. An omitted field is left alone. Three fields are separately permission-gated and are dropped silently rather than refused when the caller lacks the right: parent_id, profile_id and expiration.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_updateEdit users - حد المعدل
t_mutate
A stored mac_locked_addrs list is inert until mac_lock_enabled is true. Writing the list alone locks nothing, which reads on screen like the lock silently failed. Set both.
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
form_name
body · string
|
Which custom-field schema to validate custom_fields against. Defaults to the user form. |
POST /api/v1/users/{id}/activate Un-suspend a subscriber
Sets enabled back to true. This is the inverse of suspend and has nothing to do with activating a plan — that is the activation endpoint, which charges money.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_enable_disableEnable / suspend users - حد المعدل
t_mutate
The name is a historical trap. This endpoint lifts a suspension and takes no money. POST /users/{id}/activation is the one that prices, charges and provisions a plan.
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
POST /api/v1/users/{id}/activation Charge and provision an activation
Prices, charges and provisions in one operation. Funds are reserved first, then the plan is applied, and both halves are keyed off your request_id, so a retry after a crash re-runs neither the charge nor the grant.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب أيًّا من
-
prm_users_activateprm_users_extend - حد المعدل
t_mutate- مفتاح عدم التكرار
request_id
The nested activation object is serialised with Go field names (UserID, NewSubscriptionEnd) and RFC3339 timestamps, unlike every other object on this API. Everything around it uses snake_case and yyyy-MM-dd HH:mm:ss. Do not write a parser that assumes one convention.
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
request_idمطلوب
body · string
|
Idempotency key, up to 255 characters, no colon or pipe. Reuse the same one on every retry of one intent. |
money_collected
body · boolean
|
Defaults to true. |
card_code
body · string
|
Required when method is card. The voucher must be in the caller's subtree. |
issue_invoice
body · boolean
|
Also record an invoice document. Skipped on a replay so a retry never double-issues. |
{
"data": {
"quote": { "profile_id": 7, "required_amount": 171.00, "new_expiration": "2026-10-14 00:00:00" },
"activation": {
"UserID": 4711,
"ProfileID": 7,
"NewSubscriptionEnd": "2026-10-14T00:00:00Z",
"BytesRemaining": 107374182400,
"SecondsRemaining": -1,
"PointsAwarded": 10,
"QuotaCarried": false,
"Replay": false
},
"manager_balance": 4029.00,
"replay": false
}
}
POST /api/v1/users/{id}/activation-quote Price an activation or extension
Read-only preview of what an activation would cost and grant: unit price, VAT, the computed new expiration, the plan's quota, both wallets, reward points and whether the chosen method can cover it. Writes nothing, so it is safe to call on every keystroke of a form.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب أيًّا من
-
prm_users_activateprm_users_extend - حد المعدل
t_mutate
A quota figure of -1 means unlimited, and 0 means none. They are not interchangeable and the difference is load-bearing on the RADIUS gate. Read uptime_seconds -1 above as "no time cap on this plan", not "no time left".
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
profile_id
body · integer
|
Plan to price. Defaults to the subscriber's current plan. |
operation
body · enum
|
activate or extend. Defaults to activate. |
method
body · enum
|
manager_balance, user_balance, reward_points or card. |
units
body · integer
|
How many periods to buy. |
user_price
body · number
|
Retail price override. Silently ignored for a caller without the price-override permission, which then falls back to the plan or pricing-tree price. |
{
"data": {
"user_id": 4711,
"username": "ahmed",
"profile_id": 7,
"profile_name": "Home 20M",
"operation": "activate",
"method": "manager_balance",
"units": 1,
"unit_price": 150.00,
"end_user_price": 180.00,
"vat_percent": 14.00,
"vat_amount": 21.00,
"required_amount": 171.00,
"price_overridden": false,
"duration_value": 30,
"duration_unit": "days",
"total_bytes": 107374182400,
"uptime_seconds": -1,
"old_expiration": "2026-09-14 00:00:00",
"new_expiration": "2026-10-14 00:00:00",
"manager_balance": 4200.00,
"manager_available": 4200.00,
"user_balance": 0.00,
"points_awarded": 10,
"can_afford": true,
"warnings": [],
"debitable": false
}
}
POST /api/v1/users/{id}/add-traffic Grant quota directly
Adds bytes and/or seconds to the subscriber's remaining period quota without pricing or charging anything, and drops the hot-path quota cache so the grant applies on the next RADIUS request.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_add_trafficAdd traffic - حد المعدل
t_mutate
request_id is accepted here for your own tracing but is not enforced, because adding traffic is not naturally idempotent. Two calls add twice. Do not build a retry loop on this endpoint the way you would on deposit.
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
bytes
body · integer
|
Bytes to add. At least one of bytes or seconds must be present and positive. |
seconds
body · integer
|
Seconds to add. |
POST /api/v1/users/{id}/addon-quote Sell add-ons
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_addonSell add-ons - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/addons Sell add-ons
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_addonSell add-ons - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/approve Approve pending signups
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_approve_signupApprove pending signups - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/assign-profile Edit users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_updateEdit users - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
PUT /api/v1/users/{id}/bucket-order Set the bucket drain order
Replaces the subscriber's custom drain order. Every id must be one of their active buckets, except the sentinel 0, which stands for the plan's own main quota and may be placed anywhere in the sequence.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_bucketsManage quota buckets - حد المعدل
t_mutate
The 0 in that array is meaningful and positional. It is the main plan quota, so stripping non-positive ids as "empty" would silently reorder the drain sequence rather than reject it.
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
orderمطلوب
body · array
|
Bucket ids in drain order. 0 is the main quota, not a missing value. |
POST /api/v1/users/{id}/cancel-service Cancel service
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_cancelCancel service - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/change-parent Move a subscriber to another owner
Re-points the subscriber at a different owning manager. The destination must be a manager the caller may act on, because the owner is both the creditor on a debt and the revenue attribution. Naturally idempotent, so request_id is accepted for your own tracing but is not enforced.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_change_parentChange user parent - حد المعدل
t_mutate
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
parent_idمطلوب
body · integer
|
The new owning manager. |
POST /api/v1/users/{id}/change-profile Change user profile
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_change_profileChange user profile - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/compensate Compensate users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_compensateCompensate users - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/compensations/{reqId}/approve Approve/reject compensation requests
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_compensate_approveApprove/reject compensation requests - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/compensations/{reqId}/reject Approve/reject compensation requests
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_compensate_approveApprove/reject compensation requests - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/cpe-console Remote access to user's CPE (router admin UI)
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_remoteRemote access to user's CPE (router admin UI) - حد المعدل
t_probe
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/debt Read a subscriber's debt
Total outstanding debt across all creditors, plus the slice of it owed to the calling manager specifically, read live off the loan ledger.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_indexView users
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
{
"data": { "total": 340.00, "owed_to_me": 120.00 }
}
POST /api/v1/users/{id}/deposit Credit a subscriber wallet
Moves money into the subscriber's wallet and writes the matching ledger line. Idempotent on request_id through a unique constraint on the ledger itself, so the charge and the record of it cannot disagree.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_depositDeposit to user wallet - حد المعدل
t_mutate- مفتاح عدم التكرار
request_id
replay true means this exact request already happened and nothing moved this time. It is a success, and the balance shown is the one from the original operation.
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
amountمطلوب
body · number
|
Major units, a bare JSON number. 150.50, not "150.50" and not 15050. |
request_idمطلوب
body · string
|
Idempotency key. |
issue_invoice
body · boolean
|
Also record an invoice document. Skipped on a replay. |
{
"data": {
"journal_id": 90412,
"balance": 250.00,
"debt": 0.00,
"replay": false
}
}
GET /api/v1/users/{id}/documents Manage user documents
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_documentsManage user documents
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/documents Manage user documents
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_documentsManage user documents - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/documents/bulk-delete Manage user documents
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_documentsManage user documents - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
DELETE /api/v1/users/{id}/documents/{docId} Manage user documents
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_documentsManage user documents - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
PATCH /api/v1/users/{id}/documents/{docId} Manage user documents
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_documentsManage user documents - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/documents/{docId}/download Manage user documents
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_documentsManage user documents
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/free-zone-traffic View free-zone traffic
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_freezone_trafficView free-zone traffic - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/free-zones View free-zone traffic
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_freezone_trafficView free-zone traffic
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/history View usage history
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_historyView usage history
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/invoices List one subscriber's invoices
Invoices belonging to a single subscriber, newest first.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_invoices_viewView user invoices
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
POST /api/v1/users/{id}/invoices Create an invoice for a subscriber
The per-subscriber form of issuing an invoice. Same validation and the same server-computed total; the subscriber comes from the path rather than the body.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_invoices_createCreate user invoices - حد المعدل
t_mutate
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
itemsمطلوب
body · array
|
At least one line item. |
POST /api/v1/users/{id}/invoices/bulk-pay Edit / pay user invoices
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_invoices_editEdit / pay user invoices - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/invoices/bulk-unpay Edit / pay user invoices
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_invoices_editEdit / pay user invoices - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
DELETE /api/v1/users/{id}/invoices/{invoiceId} Delete an invoice
Deletes a hand-created invoice. Auto-issued documents cannot be deleted here, for the same reason they cannot be edited.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_invoices_deleteDelete user invoices - حد المعدل
t_mutate
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
invoiceIdمطلوب
path · integer
|
Invoice id. |
GET /api/v1/users/{id}/invoices/{invoiceId} Fetch one invoice
The invoice with its line items.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_invoices_viewView user invoices
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
invoiceIdمطلوب
path · integer
|
Invoice id. |
PATCH /api/v1/users/{id}/invoices/{invoiceId} Edit an invoice
Edits a hand-created invoice. Auto-issued documents — activations, extensions, add-ons, deposits and withdrawals — are not editable through this path.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_invoices_editEdit / pay user invoices - حد المعدل
t_mutate
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
invoiceIdمطلوب
path · integer
|
Invoice id. |
POST /api/v1/users/{id}/invoices/{invoiceId}/pay Mark an invoice paid
Records the invoice as settled and stamps paid_on. This is bookkeeping: it does not move money between wallets.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_invoices_editEdit / pay user invoices - حد المعدل
t_mutate
Marking an invoice paid and taking a payment are different operations. This one changes a status; a deposit changes a balance. Doing one does not do the other.
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
invoiceIdمطلوب
path · integer
|
Invoice id. |
GET /api/v1/users/{id}/invoices/{invoiceId}/render-data View user invoices
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_invoices_viewView user invoices
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/invoices/{invoiceId}/unpay Mark an invoice unpaid
Reverses the paid stamp. Again, bookkeeping only.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_invoices_editEdit / pay user invoices - حد المعدل
t_mutate
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
invoiceIdمطلوب
path · integer
|
Invoice id. |
GET /api/v1/users/{id}/journal View users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_indexView users
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/login-as Log in as subscriber
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_login_asLog in as subscriber - حد المعدل
user_login_as
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/lookup-token/rotate Edit users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_updateEdit users - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/parental Manage parental controls
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_parentalManage parental controls
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/parental/reset-pin Manage parental controls
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_parentalManage parental controls - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/pay-debt Withdraw / settle user debt
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_withdrawalWithdraw / settle user debt - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/payments View users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_indexView users
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/quota-buckets List a subscriber's quota buckets
Separately-metered grants layered on top of the plan's own quota — add-ons, extensions, card top-ups — in the order they will be drained.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_indexView users
Un-paginated: the whole list is page 1 and has_next is always false. Do not write a paging loop against it. A subscriber may hold at most 50 active buckets, and a grant that would exceed the cap is refused before any money moves.
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
{
"data": [
{
"id": 331,
"source": "addon",
"label": "Night 50GB",
"priority": 10,
"bytes_granted": 53687091200,
"bytes_remaining": 41231686144,
"seconds_granted": 0,
"seconds_remaining": 0,
"activated_at": "2026-09-12 20:04:01",
"valid_until": "2026-10-12 20:04:01",
"works_when_expired": false,
"status": "active"
}
],
"meta": { "page": 1, "page_size": 1, "total": 1, "has_next": false }
}
POST /api/v1/users/{id}/quota-buckets/{bid}/cancel Manage quota buckets
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_bucketsManage quota buckets - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/quota-history View usage history
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_historyView usage history
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/radius-attrs Manage user RADIUS attributes
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_radius_attributesManage user RADIUS attributes
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/radius-attrs Manage user RADIUS attributes
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_radius_attributesManage user RADIUS attributes - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/radius-attrs/bulk-delete Manage user RADIUS attributes
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_radius_attributesManage user RADIUS attributes - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
DELETE /api/v1/users/{id}/radius-attrs/{attrId} Manage user RADIUS attributes
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_radius_attributesManage user RADIUS attributes - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
PATCH /api/v1/users/{id}/radius-attrs/{attrId} Manage user RADIUS attributes
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_radius_attributesManage user RADIUS attributes - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/receipts View users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_indexView users
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/redeem-points Redeem reward points
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_reward_pointsRedeem reward points - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/refund-activation Refund last activation
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_refundRefund last activation - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/rename Rename users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_renameRename users - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/reset-password Edit users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_updateEdit users - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/reset-quota Reset quota counters
Always zeroes the daily counters. With clear_period true it also nulls the period quota, which is the destructive form. Lifts a daily FUP throttle and kicks the live session so full speed returns immediately. An empty body is accepted and means clear_period false.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_reset_quotaReset user quota - حد المعدل
t_mutate
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
clear_period
body · boolean
|
Also null the period quota counters. Defaults to false. |
reason
body · string
|
Free-text note recorded on the quota-history audit row. |
GET /api/v1/users/{id}/sessions List a subscriber's session history
Accounting history for this subscriber, newest first, paginated with the standard list parameters.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_sessions_indexView user sessions
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
filter[status]
query · string
|
Narrows to open or closed sessions. |
DELETE /api/v1/users/{id}/speed Edit users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_updateEdit users - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
GET /api/v1/users/{id}/speed View users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_indexView users
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
PUT /api/v1/users/{id}/speed Edit users
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_updateEdit users - حد المعدل
t_mutate
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/suspend Suspend a subscriber
Sets enabled to false and, when the tenant has disconnect-on-update enabled, kicks any live session so the suspension takes effect now rather than at the next re-auth.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_enable_disableEnable / suspend users - حد المعدل
t_mutate
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
{
"data": {
"id": 4711,
"username": "ahmed",
"enabled": false,
"status": { "enabled": false, "can_connect": false }
}
}
GET /api/v1/users/{id}/usage-history View usage history
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_historyView usage history
مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.
POST /api/v1/users/{id}/withdraw Debit a subscriber wallet
The inverse of deposit. Refuses to take the balance below zero unless allow_negative is set.
- المصادقة
- رمز موظّف أو جلسة
- تتطلب صلاحية
-
prm_users_withdrawalWithdraw / settle user debt - حد المعدل
t_mutate- مفتاح عدم التكرار
request_id
المعاملات
| المعامل | الوصف |
|---|---|
idمطلوب
path · integer
|
Subscriber id. |
amountمطلوب
body · number
|
Major units. |
request_idمطلوب
body · string
|
Idempotency key. |
allow_negative
body · boolean
|
Permit the withdrawal to drive the balance below zero. |
لا توجد نقطة نهاية تطابق هذا البحث.
مكتوب لتقرأه الأدوات الآلية أيضًا
المرجع عام ولا يتطلب حسابًا، فتستطيع أداة لم تَرَ X-Radius من قبل أن تصل إلى أول استدعاء صحيح بنفسها.
- /llms.txt
- فهرس لكل صفحة، مع ملخّص من سطر واحد.
- /llms-full.txt
- المرجع كاملًا في ملف Markdown واحد، دون تنقّل يحتاج إلى زحف.
- /openapi.json
- OpenAPI 3.1، مُولَّد من الموجّه الذي يخدم هذه النسخة.
- /skill.md
- ملف مهارة جاهز لمساعد آلي: المصادقة وشكل الاستجابة ورموز الأخطاء في صفحة واحدة.
<page-url>.md- أضف .md إلى رابط أي صفحة في المرجع لتحصل على الصفحة نفسها بصيغة Markdown.
Accept: text/markdown- أرسل هذه الترويسة على الرابط المعتاد فتصلك الإجابة بصيغة Markdown بدلًا من الصفحة.
اقرأ https://x-radius.com/llms.txt، ثم اجلب نقطة النهاية التي تحتاجها بصيغة Markdown بإضافة .md إلى رابطها.