Operation details
GET /v1/admin/reseller-wholesale-prices
List wholesale prices
- operationId
listResellerWholesalePrices- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
All of:identity.users.manage
Description (from the contract)
Prices per (price list, platform line group, period) in fen. A reseller's order costs the main line group's price plus the backup's (where priced) for the order's period; a package whose main line group has no price for a period cannot be sold for it.
Parameters
listResellerWholesalePrices Parameters| Name | In | Type | Required | Description |
|---|
price_list | query | string | No | — |
|---|
Responses
listResellerWholesalePrices Responses| Status | Description |
|---|
200 | Prices ordered by list, line group name and period. Fields:items: array<ResellerWholesalePrice> |
|---|
400 | The request body or parameters are invalid. |
|---|
401 | Authentication failed or the session is invalid. |
|---|
403 | The authenticated principal is not allowed to perform the action. |
|---|
500 | The request could not be completed because of an internal failure. |
|---|
What to do on failure
400 Fix the parameters or body per the field list; do not retry unchanged.401 Check the credential format and whether it expired or was rotated.403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.
↑ Back to list
PUT /v1/admin/reseller-wholesale-prices/{price_list}/{line_group_id}/{period}
Set one wholesale price (audited reseller.wholesale_price.put)
- operationId
putResellerWholesalePrice- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
All of:identity.users.manage
Description (from the contract)
Conditional write. expected_updated_at is the updated_at of the row the caller read, or null to create a row that does not exist yet; if the current row differs (changed, deleted or created by someone else) the write is refused with 409 wholesale_price_conflict and nothing changes. Every write moves updated_at forward. The line group must be one of the platform's own line groups (404 reseller_not_found otherwise).
Parameters
putResellerWholesalePrice Parameters| Name | In | Type | Required | Description |
|---|
price_list | path | string | Yes | — |
|---|
line_group_id | path | string(uuid) | Yes | — |
|---|
period | path | string: month / quarter / year | Yes | — |
|---|
Request body
application/json · Required:Yes
putResellerWholesalePrice Request body| Name | Type | Required | Description |
|---|
price_minor | integer(int64) | Yes | — |
|---|
expected_updated_at | string(date-time) | Yes | updated_at of the row the caller read; null = create. |
|---|
Responses
putResellerWholesalePrice Responses| Status | Description |
|---|
200 | The price after the write. Fields:price_list: string line_group_id: string(uuid) line_group_name: string period: string: month / quarter / year price_minor: integer(int64) currency: string updated_at: string(date-time) |
|---|
400 | The request body or parameters are invalid. |
|---|
401 | Authentication failed or the session is invalid. |
|---|
403 | The authenticated principal is not allowed to perform the action. |
|---|
404 | The requested resource was not found. |
|---|
409 | The requested state conflicts with an existing resource or idempotency fact. |
|---|
500 | The request could not be completed because of an internal failure. |
|---|
What to do on failure
400 Fix the parameters or body per the field list; do not retry unchanged.401 Check the credential format and whether it expired or was rotated.403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.404 The resource does not exist or belongs to another tenant.409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.
↑ Back to list
DELETE /v1/admin/reseller-wholesale-prices/{price_list}/{line_group_id}/{period}
Remove one wholesale price (audited reseller.wholesale_price.delete)
- operationId
deleteResellerWholesalePrice- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
All of:identity.users.manage
Description (from the contract)
Conditional delete: removes the row only if its updated_at still equals expected_updated_at (409 wholesale_price_conflict otherwise; 404 when there is no row).
Parameters
deleteResellerWholesalePrice Parameters| Name | In | Type | Required | Description |
|---|
price_list | path | string | Yes | — |
|---|
line_group_id | path | string(uuid) | Yes | — |
|---|
period | path | string: month / quarter / year | Yes | — |
|---|
expected_updated_at | query | string(date-time) | Yes | — |
|---|
Responses
deleteResellerWholesalePrice Responses| Status | Description |
|---|
204 | Removed. |
|---|
400 | The request body or parameters are invalid. |
|---|
401 | Authentication failed or the session is invalid. |
|---|
403 | The authenticated principal is not allowed to perform the action. |
|---|
404 | The requested resource was not found. |
|---|
409 | The requested state conflicts with an existing resource or idempotency fact. |
|---|
500 | The request could not be completed because of an internal failure. |
|---|
What to do on failure
400 Fix the parameters or body per the field list; do not retry unchanged.401 Check the credential format and whether it expired or was rotated.403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.404 The resource does not exist or belongs to another tenant.409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.
↑ Back to list