Marketplace Plans
Operations Summary
Core CRUD
List provider plans
Returns a paginated list of plans managed by the provider. The list is filtered based on the current user's access to the offering's customer.
HTTPie Python TypeScript Query Parameters Responses
http \
GET \
https://api.example.com/api/marketplace-plans/ \
Authorization:"Token YOUR_API_TOKEN"
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.marketplace_plans import marketplace_plans_list # (1)
client = AuthenticatedClient (
base_url = "https://api.example.com" , token = "YOUR_API_TOKEN"
)
response = marketplace_plans_list . sync ( client = client )
for item in response :
print ( item )
API Source: marketplace_plans_list
import { marketplacePlansList } from 'waldur-js-client' ;
try {
const response = await marketplacePlansList ({
auth : "Token YOUR_API_TOKEN"
});
console . log ( 'Success:' , response );
} catch ( error ) {
console . error ( 'Error:' , error );
}
Name
Type
Description
offering
string
offering_slug
array
Multiple values may be separated by commas.
offering_uuid
string (uuid)
Offering UUID
page
integer
A page number within the paginated result set.
page_size
integer
Number of results to return per page.
parent_offering_uuid
string (uuid)
200 -
The response body is an array of objects, where each object has the following structure:
Field
Type
Description
url
string (uri)
uuid
string (uuid)
name
string
description
string
article_code
string
max_amount
integer
Maximum number of plans that could be active. Plan is disabled when maximum amount is reached.
archived
boolean
Forbids creation of new resources.
is_active
boolean
unit_price
string (decimal)
unit
string
Enum: month, quarter, half_month, day, hour, quantity
init_price
number (double)
switch_price
number (double)
backend_id
string
organization_groups
array of objects
organization_groups.uuid
string (uuid)
organization_groups.url
string (uri)
organization_groups.name
string
organization_groups.parent_uuid
string (uuid)
organization_groups.parent_name
string
organization_groups.parent
string (uri)
organization_groups.customers_count
integer
components
array of objects
components.type
string
Unique internal name of the measured unit, for example floating_ip.
components.name
string
Display name for the measured unit, for example, Floating IP.
components.measured_unit
string
Unit of measurement, for example, GB.
components.amount
integer
components.price
string (decimal)
components.future_price
string (decimal)
components.discount_threshold
integer
Minimum amount to be eligible for discount.
components.discount_rate
integer
Discount rate in percentage.
offering
string (uri)
prices
object (free-form)
future_prices
object (free-form)
quotas
object (free-form)
resources_count
integer
plan_type
string
minimal_price
number (double)
Retrieve a provider plan
Returns details of a specific plan.
HTTPie Python TypeScript Path Parameters Responses
http \
GET \
https://api.example.com/api/marketplace-plans/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ \
Authorization:"Token YOUR_API_TOKEN"
1
2
3
4
5
6
7
8
9
10
11
12 from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.marketplace_plans import marketplace_plans_retrieve # (1)
client = AuthenticatedClient (
base_url = "https://api.example.com" , token = "YOUR_API_TOKEN"
)
response = marketplace_plans_retrieve . sync (
uuid = "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
client = client
)
print ( response )
API Source: marketplace_plans_retrieve
1
2
3
4
5
6
7
8
9
10
11
12
13 import { marketplacePlansRetrieve } from 'waldur-js-client' ;
try {
const response = await marketplacePlansRetrieve ({
auth : "Token YOUR_API_TOKEN" ,
path : {
"uuid" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
});
console . log ( 'Success:' , response );
} catch ( error ) {
console . error ( 'Error:' , error );
}
Name
Type
Required
uuid
string (uuid)
✓
200 -
Field
Type
Description
url
string (uri)
uuid
string (uuid)
name
string
description
string
article_code
string
max_amount
integer
Maximum number of plans that could be active. Plan is disabled when maximum amount is reached.
archived
boolean
Forbids creation of new resources.
is_active
boolean
unit_price
string (decimal)
unit
string
Enum: month, quarter, half_month, day, hour, quantity
init_price
number (double)
switch_price
number (double)
backend_id
string
organization_groups
array of objects
organization_groups.uuid
string (uuid)
organization_groups.url
string (uri)
organization_groups.name
string
organization_groups.parent_uuid
string (uuid)
organization_groups.parent_name
string
organization_groups.parent
string (uri)
organization_groups.customers_count
integer
components
array of objects
components.type
string
Unique internal name of the measured unit, for example floating_ip.
components.name
string
Display name for the measured unit, for example, Floating IP.
components.measured_unit
string
Unit of measurement, for example, GB.
components.amount
integer
components.price
string (decimal)
components.future_price
string (decimal)
components.discount_threshold
integer
Minimum amount to be eligible for discount.
components.discount_rate
integer
Discount rate in percentage.
offering
string (uri)
prices
object (free-form)
future_prices
object (free-form)
quotas
object (free-form)
resources_count
integer
plan_type
string
minimal_price
number (double)
Create a provider plan
Creates a new billing plan for an offering.
HTTPie Python TypeScript Request Body (required) Responses
http \
POST \
https://api.example.com/api/marketplace-plans/ \
Authorization:"Token YOUR_API_TOKEN" \
name = "my-awesome-marketplace-plan" \
offering = "https://api.example.com/api/offering/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.provider_plan_details_request import ProviderPlanDetailsRequest # (1)
from waldur_api_client.api.marketplace_plans import marketplace_plans_create # (2)
client = AuthenticatedClient (
base_url = "https://api.example.com" , token = "YOUR_API_TOKEN"
)
body_data = ProviderPlanDetailsRequest (
name = "my-awesome-marketplace-plan" ,
offering = "https://api.example.com/api/offering/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
)
response = marketplace_plans_create . sync (
client = client ,
body = body_data
)
print ( response )
Model Source: ProviderPlanDetailsRequest
API Source: marketplace_plans_create
1
2
3
4
5
6
7
8
9
10
11
12
13
14 import { marketplacePlansCreate } from 'waldur-js-client' ;
try {
const response = await marketplacePlansCreate ({
auth : "Token YOUR_API_TOKEN" ,
body : {
"name" : "my-awesome-marketplace-plan" ,
"offering" : "https://api.example.com/api/offering/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
}
});
console . log ( 'Success:' , response );
} catch ( error ) {
console . error ( 'Error:' , error );
}
Field
Type
Required
Description
name
string
✓
description
string
article_code
string
max_amount
integer
Maximum number of plans that could be active. Plan is disabled when maximum amount is reached.
archived
boolean
Forbids creation of new resources.
unit_price
string (decimal)
unit
string
Enum: month, quarter, half_month, day, hour, quantity
backend_id
string
offering
string (uri)
✓
201 -
Field
Type
Description
url
string (uri)
uuid
string (uuid)
name
string
description
string
article_code
string
max_amount
integer
Maximum number of plans that could be active. Plan is disabled when maximum amount is reached.
archived
boolean
Forbids creation of new resources.
is_active
boolean
unit_price
string (decimal)
unit
string
Enum: month, quarter, half_month, day, hour, quantity
init_price
number (double)
switch_price
number (double)
backend_id
string
organization_groups
array of objects
organization_groups.uuid
string (uuid)
organization_groups.url
string (uri)
organization_groups.name
string
organization_groups.parent_uuid
string (uuid)
organization_groups.parent_name
string
organization_groups.parent
string (uri)
organization_groups.customers_count
integer
components
array of objects
components.type
string
Unique internal name of the measured unit, for example floating_ip.
components.name
string
Display name for the measured unit, for example, Floating IP.
components.measured_unit
string
Unit of measurement, for example, GB.
components.amount
integer
components.price
string (decimal)
components.future_price
string (decimal)
components.discount_threshold
integer
Minimum amount to be eligible for discount.
components.discount_rate
integer
Discount rate in percentage.
offering
string (uri)
prices
object (free-form)
future_prices
object (free-form)
quotas
object (free-form)
resources_count
integer
plan_type
string
minimal_price
number (double)
Update plan component discounts
Update volume discount configuration for plan components.
This endpoint allows updating discount thresholds and rates for multiple
plan components in a single request. Discounts are applied automatically
when limit quantities meet or exceed the threshold.
The discount configuration affects future billing:
- Creates separate invoice items showing the discount.
- Can be enabled or disabled per component.
Update organization groups for a plan
Sets the list of organization groups that are allowed to access this plan. If the list is empty, the plan is accessible to all.
Update plan component prices
Updates the prices for one or more components of a specific plan. If the plan is already in use by resources, this action updates the future_price, which will be applied from the next billing period. Otherwise, the current price is updated directly.
Update plan component quotas
Updates the quotas (fixed amounts) for one or more components of a specific plan. This is only applicable for components with a 'fixed-price' billing type.
Update a provider plan
Updates an existing plan. Note: A plan cannot be updated if it is already used by resources.
HTTPie Python TypeScript Path Parameters Request Body (required) Responses
http \
PUT \
https://api.example.com/api/marketplace-plans/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ \
Authorization:"Token YOUR_API_TOKEN" \
name = "my-awesome-marketplace-plan" \
offering = "https://api.example.com/api/offering/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.provider_plan_details_request import ProviderPlanDetailsRequest # (1)
from waldur_api_client.api.marketplace_plans import marketplace_plans_update # (2)
client = AuthenticatedClient (
base_url = "https://api.example.com" , token = "YOUR_API_TOKEN"
)
body_data = ProviderPlanDetailsRequest (
name = "my-awesome-marketplace-plan" ,
offering = "https://api.example.com/api/offering/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
)
response = marketplace_plans_update . sync (
uuid = "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
client = client ,
body = body_data
)
print ( response )
Model Source: ProviderPlanDetailsRequest
API Source: marketplace_plans_update
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 import { marketplacePlansUpdate } from 'waldur-js-client' ;
try {
const response = await marketplacePlansUpdate ({
auth : "Token YOUR_API_TOKEN" ,
path : {
"uuid" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
},
body : {
"name" : "my-awesome-marketplace-plan" ,
"offering" : "https://api.example.com/api/offering/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
}
});
console . log ( 'Success:' , response );
} catch ( error ) {
console . error ( 'Error:' , error );
}
Name
Type
Required
uuid
string (uuid)
✓
Field
Type
Required
Description
name
string
✓
description
string
article_code
string
max_amount
integer
Maximum number of plans that could be active. Plan is disabled when maximum amount is reached.
archived
boolean
Forbids creation of new resources.
unit_price
string (decimal)
unit
string
Enum: month, quarter, half_month, day, hour, quantity
backend_id
string
offering
string (uri)
✓
200 -
Field
Type
Description
url
string (uri)
uuid
string (uuid)
name
string
description
string
article_code
string
max_amount
integer
Maximum number of plans that could be active. Plan is disabled when maximum amount is reached.
archived
boolean
Forbids creation of new resources.
is_active
boolean
unit_price
string (decimal)
unit
string
Enum: month, quarter, half_month, day, hour, quantity
init_price
number (double)
switch_price
number (double)
backend_id
string
organization_groups
array of objects
organization_groups.uuid
string (uuid)
organization_groups.url
string (uri)
organization_groups.name
string
organization_groups.parent_uuid
string (uuid)
organization_groups.parent_name
string
organization_groups.parent
string (uri)
organization_groups.customers_count
integer
components
array of objects
components.type
string
Unique internal name of the measured unit, for example floating_ip.
components.name
string
Display name for the measured unit, for example, Floating IP.
components.measured_unit
string
Unit of measurement, for example, GB.
components.amount
integer
components.price
string (decimal)
components.future_price
string (decimal)
components.discount_threshold
integer
Minimum amount to be eligible for discount.
components.discount_rate
integer
Discount rate in percentage.
offering
string (uri)
prices
object (free-form)
future_prices
object (free-form)
quotas
object (free-form)
resources_count
integer
plan_type
string
minimal_price
number (double)
Partially update a provider plan
Partially updates an existing plan. Note: A plan cannot be updated if it is already used by resources.
HTTPie Python TypeScript Path Parameters Request Body Responses
http \
PATCH \
https://api.example.com/api/marketplace-plans/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ \
Authorization:"Token YOUR_API_TOKEN"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.models.patched_provider_plan_details_request import PatchedProviderPlanDetailsRequest # (1)
from waldur_api_client.api.marketplace_plans import marketplace_plans_partial_update # (2)
client = AuthenticatedClient (
base_url = "https://api.example.com" , token = "YOUR_API_TOKEN"
)
body_data = PatchedProviderPlanDetailsRequest ()
response = marketplace_plans_partial_update . sync (
uuid = "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
client = client ,
body = body_data
)
print ( response )
Model Source: PatchedProviderPlanDetailsRequest
API Source: marketplace_plans_partial_update
1
2
3
4
5
6
7
8
9
10
11
12
13 import { marketplacePlansPartialUpdate } from 'waldur-js-client' ;
try {
const response = await marketplacePlansPartialUpdate ({
auth : "Token YOUR_API_TOKEN" ,
path : {
"uuid" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
});
console . log ( 'Success:' , response );
} catch ( error ) {
console . error ( 'Error:' , error );
}
Name
Type
Required
uuid
string (uuid)
✓
Field
Type
Required
Description
name
string
description
string
article_code
string
max_amount
integer
Maximum number of plans that could be active. Plan is disabled when maximum amount is reached.
archived
boolean
Forbids creation of new resources.
unit_price
string (decimal)
unit
string
Enum: month, quarter, half_month, day, hour, quantity
backend_id
string
200 -
Field
Type
Description
url
string (uri)
uuid
string (uuid)
name
string
description
string
article_code
string
max_amount
integer
Maximum number of plans that could be active. Plan is disabled when maximum amount is reached.
archived
boolean
Forbids creation of new resources.
is_active
boolean
unit_price
string (decimal)
unit
string
Enum: month, quarter, half_month, day, hour, quantity
init_price
number (double)
switch_price
number (double)
backend_id
string
organization_groups
array of objects
organization_groups.uuid
string (uuid)
organization_groups.url
string (uri)
organization_groups.name
string
organization_groups.parent_uuid
string (uuid)
organization_groups.parent_name
string
organization_groups.parent
string (uri)
organization_groups.customers_count
integer
components
array of objects
components.type
string
Unique internal name of the measured unit, for example floating_ip.
components.name
string
Display name for the measured unit, for example, Floating IP.
components.measured_unit
string
Unit of measurement, for example, GB.
components.amount
integer
components.price
string (decimal)
components.future_price
string (decimal)
components.discount_threshold
integer
Minimum amount to be eligible for discount.
components.discount_rate
integer
Discount rate in percentage.
offering
string (uri)
prices
object (free-form)
future_prices
object (free-form)
quotas
object (free-form)
resources_count
integer
plan_type
string
minimal_price
number (double)
Delete a provider plan
Deletes a plan. This is a hard delete and should be used with caution.
Other Actions
Get plan usage statistics
Returns aggregated statistics on how many resources are currently using each plan. Can be filtered by offering or service provider.
Archive a plan
Marks a plan as archived. Archived plans cannot be used for provisioning new resources, but existing resources will continue to be billed according to this plan.
Remove all organization groups from a plan
Removes all organization group associations from this plan, making it accessible to all users (subject to offering-level restrictions).