مرجع عام

Users

كل نقاط النهاية في هذه المجموعة. افتح أي واحدة لعرض معاملاتها ومثال عملي عليها.

92 نقاط النهاية

اعرض الصفحة بصيغة Markdown

Users

92
GET /api/v1/users List subscribers prm_users_index

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_index View 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.
الاستجابة 200 OK
{
  "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 prm_users_create

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_create Create 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.
الاستجابة 201 Created
{
  "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_extend
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_extend Extend subscription
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-add-hours Extend subscription prm_users_extend
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_extend Extend subscription
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-add-traffic Add traffic prm_users_add_traffic
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_add_traffic Add traffic
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-delete Delete users prm_users_delete
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_delete Delete users
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-deposit Deposit to user wallet prm_users_deposit
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_deposit Deposit to user wallet
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-deposit/preview Deposit to user wallet prm_users_deposit
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_deposit Deposit to user wallet
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-disable Suspend many subscribers prm_users_enable_disable

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_disable Enable / 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.
الاستجابة 200 OK
{
  "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_traffic
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_live_traffic Live traffic / disconnect
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-enable Enable / suspend users prm_users_enable_disable
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_enable_disable Enable / suspend users
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-extend
المصادقة
رمز موظّف أو جلسة
تتطلب أيًّا من
prm_users_activate prm_users_extend
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-extend/preview
المصادقة
رمز موظّف أو جلسة
تتطلب أيًّا من
prm_users_activate prm_users_extend
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-reset-balance Withdraw / settle user debt prm_users_withdrawal
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_withdrawal Withdraw / settle user debt
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-reset-quota Reset user quota prm_users_reset_quota
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_reset_quota Reset user quota
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-set-expiration Extend subscription prm_users_extend
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_extend Extend subscription
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-set-group Assign groups prm_groups_assign
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_groups_assign Assign groups
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-set-parent Change user parent prm_users_change_parent
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_change_parent Change user parent
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-set-profile Change user profile prm_users_change_profile
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_change_profile Change user profile
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-withdraw Withdraw / settle user debt prm_users_withdrawal
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_withdrawal Withdraw / settle user debt
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/bulk-withdraw/preview Withdraw / settle user debt prm_users_withdrawal
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_withdrawal Withdraw / settle user debt
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/owner-context Create users prm_users_create
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_create Create users

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/resolve Resolve a subscriber by scan code prm_users_index

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_index View 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 prm_users_index

Fleet-health counters over exactly the same authority scope as the list, so a count and the rows behind it always agree.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_index View 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.

الاستجابة 200 OK
{
  "data": {
    "total": 812,
    "active": 640,
    "disabled": 44,
    "online": 318,
    "expired": 128
  }
}
DELETE /api/v1/users/{id} Delete a subscriber prm_users_delete

Soft-deletes the account and frees its username slot by renaming the row. The subscriber's live portal sessions are ended.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_delete Delete users
حد المعدل
t_mutate

المعاملات

المعامل الوصف
idمطلوب path · integer Subscriber id.
GET /api/v1/users/{id} Fetch one subscriber prm_users_index

The full record, including the computed status object and the fields the list projection leaves out.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_index View 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.
الاستجابة 200 OK
{
  "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 prm_users_update

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_update Edit 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 prm_users_enable_disable

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_disable Enable / 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_activate prm_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.
الاستجابة 200 OK
{
  "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_activate prm_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.
الاستجابة 200 OK
{
  "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 prm_users_add_traffic

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_traffic Add 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_addon
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_addon Sell add-ons
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/addons Sell add-ons prm_users_addon
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_addon Sell add-ons
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/approve Approve pending signups prm_users_approve_signup
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_approve_signup Approve pending signups
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/assign-profile Edit users prm_users_update
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_update Edit users
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

PUT /api/v1/users/{id}/bucket-order Set the bucket drain order prm_users_buckets

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_buckets Manage 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_cancel
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_cancel Cancel service
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/change-parent Move a subscriber to another owner prm_users_change_parent

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_parent Change 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_profile
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_change_profile Change user profile
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/compensate Compensate users prm_users_compensate
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_compensate Compensate users
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/compensations/{reqId}/approve Approve/reject compensation requests prm_users_compensate_approve
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_compensate_approve Approve/reject compensation requests
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/compensations/{reqId}/reject Approve/reject compensation requests prm_users_compensate_approve
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_compensate_approve Approve/reject compensation requests
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/cpe-console Remote access to user's CPE (router admin UI) prm_users_remote
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_remote Remote access to user's CPE (router admin UI)
حد المعدل
t_probe

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/debt Read a subscriber's debt prm_users_index

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_index View users

المعاملات

المعامل الوصف
idمطلوب path · integer Subscriber id.
الاستجابة 200 OK
{
  "data": { "total": 340.00, "owed_to_me": 120.00 }
}
POST /api/v1/users/{id}/deposit Credit a subscriber wallet prm_users_deposit

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_deposit Deposit 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.
الاستجابة 200 OK
{
  "data": {
    "journal_id": 90412,
    "balance": 250.00,
    "debt": 0.00,
    "replay": false
  }
}
GET /api/v1/users/{id}/documents Manage user documents prm_users_documents
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_documents Manage user documents

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/documents Manage user documents prm_users_documents
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_documents Manage user documents
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/documents/bulk-delete Manage user documents prm_users_documents
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_documents Manage user documents
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

DELETE /api/v1/users/{id}/documents/{docId} Manage user documents prm_users_documents
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_documents Manage user documents
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

PATCH /api/v1/users/{id}/documents/{docId} Manage user documents prm_users_documents
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_documents Manage user documents
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/documents/{docId}/download Manage user documents prm_users_documents
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_documents Manage user documents

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/free-zone-traffic View free-zone traffic prm_users_freezone_traffic
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_freezone_traffic View free-zone traffic
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/free-zones View free-zone traffic prm_users_freezone_traffic
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_freezone_traffic View free-zone traffic

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/history View usage history prm_users_history
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_history View usage history

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/invoices List one subscriber's invoices prm_users_invoices_view

Invoices belonging to a single subscriber, newest first.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_invoices_view View user invoices

المعاملات

المعامل الوصف
idمطلوب path · integer Subscriber id.
POST /api/v1/users/{id}/invoices Create an invoice for a subscriber prm_users_invoices_create

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_create Create 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_edit
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_invoices_edit Edit / pay user invoices
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/invoices/bulk-unpay Edit / pay user invoices prm_users_invoices_edit
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_invoices_edit Edit / pay user invoices
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

DELETE /api/v1/users/{id}/invoices/{invoiceId} Delete an invoice prm_users_invoices_delete

Deletes a hand-created invoice. Auto-issued documents cannot be deleted here, for the same reason they cannot be edited.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_invoices_delete Delete user invoices
حد المعدل
t_mutate

المعاملات

المعامل الوصف
idمطلوب path · integer Subscriber id.
invoiceIdمطلوب path · integer Invoice id.
GET /api/v1/users/{id}/invoices/{invoiceId} Fetch one invoice prm_users_invoices_view

The invoice with its line items.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_invoices_view View user invoices

المعاملات

المعامل الوصف
idمطلوب path · integer Subscriber id.
invoiceIdمطلوب path · integer Invoice id.
PATCH /api/v1/users/{id}/invoices/{invoiceId} Edit an invoice prm_users_invoices_edit

Edits a hand-created invoice. Auto-issued documents — activations, extensions, add-ons, deposits and withdrawals — are not editable through this path.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_invoices_edit Edit / 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 prm_users_invoices_edit

Records the invoice as settled and stamps paid_on. This is bookkeeping: it does not move money between wallets.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_invoices_edit Edit / 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_view
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_invoices_view View user invoices

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/invoices/{invoiceId}/unpay Mark an invoice unpaid prm_users_invoices_edit

Reverses the paid stamp. Again, bookkeeping only.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_invoices_edit Edit / 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_index
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_index View users

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/login-as Log in as subscriber prm_users_login_as
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_login_as Log in as subscriber
حد المعدل
user_login_as

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/lookup-token/rotate Edit users prm_users_update
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_update Edit users
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/parental Manage parental controls prm_users_parental
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_parental Manage parental controls

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/parental/reset-pin Manage parental controls prm_users_parental
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_parental Manage parental controls
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/pay-debt Withdraw / settle user debt prm_users_withdrawal
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_withdrawal Withdraw / settle user debt
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/payments View users prm_users_index
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_index View users

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/quota-buckets List a subscriber's quota buckets prm_users_index

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_index View 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.
الاستجابة 200 OK
{
  "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_buckets
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_buckets Manage quota buckets
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/quota-history View usage history prm_users_history
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_history View usage history

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/radius-attrs Manage user RADIUS attributes prm_users_radius_attributes
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_radius_attributes Manage user RADIUS attributes

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/radius-attrs Manage user RADIUS attributes prm_users_radius_attributes
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_radius_attributes Manage user RADIUS attributes
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/radius-attrs/bulk-delete Manage user RADIUS attributes prm_users_radius_attributes
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_radius_attributes Manage user RADIUS attributes
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

DELETE /api/v1/users/{id}/radius-attrs/{attrId} Manage user RADIUS attributes prm_users_radius_attributes
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_radius_attributes Manage user RADIUS attributes
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

PATCH /api/v1/users/{id}/radius-attrs/{attrId} Manage user RADIUS attributes prm_users_radius_attributes
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_radius_attributes Manage user RADIUS attributes
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/receipts View users prm_users_index
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_index View users

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/redeem-points Redeem reward points prm_users_reward_points
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_reward_points Redeem reward points
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/refund-activation Refund last activation prm_users_refund
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_refund Refund last activation
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/rename Rename users prm_users_rename
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_rename Rename users
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/reset-password Edit users prm_users_update
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_update Edit users
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/reset-quota Reset quota counters prm_users_reset_quota

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_quota Reset 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 prm_users_sessions_index

Accounting history for this subscriber, newest first, paginated with the standard list parameters.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_sessions_index View 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_update
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_update Edit users
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

GET /api/v1/users/{id}/speed View users prm_users_index
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_index View users

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

PUT /api/v1/users/{id}/speed Edit users prm_users_update
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_update Edit users
حد المعدل
t_mutate

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/suspend Suspend a subscriber prm_users_enable_disable

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_disable Enable / suspend users
حد المعدل
t_mutate

المعاملات

المعامل الوصف
idمطلوب path · integer Subscriber id.
الاستجابة 200 OK
{
  "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_history
المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_history View usage history

مقروء مباشرة من الموجّه الذي يخدم هذه النسخة. لم يُضَف بعد وصف مكتوب لنقطة النهاية هذه.

POST /api/v1/users/{id}/withdraw Debit a subscriber wallet prm_users_withdrawal

The inverse of deposit. Refuses to take the balance below zero unless allow_negative is set.

المصادقة
رمز موظّف أو جلسة
تتطلب صلاحية
prm_users_withdrawal Withdraw / 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 إلى رابطها.

جرّبه على شبكتك.

50 مشترك لمدة 7 أيام، من غير ما تدفع حاجة.