Commitment Plans (Beta)

Agent-friendly commitment plan endpoints

List commitment plans

get

Returns commitment plans scoped to one segment for the given provider. segment_id defaults to the provider-resources segment — same fallback as POST/PUT — so the typical caller sees the plans tied to their default segment without cross-segment duplicates. Further filters (template, status, flags) narrow within that scope. Coverage metrics (current_coverage / projected_coverage) are omitted here for speed; fetch the detail endpoint for those.

Path parameters
org_idstring · uuidRequired
Query parameters
providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Example: awsPossible values:
segment_idstring · uuid · nullableOptional

Optional segment ID to scope results. Defaults to the provider resources segment if not specified.

Default: null
template_idstring · uuid · nullableOptional

Filter to plans generated from this template (GET /commitment-plan-templates)

Default: null
statusstring · enum · nullableOptional

Filter by plan status (e.g. 'draft', 'in_progress')

Default: nullPossible values:
is_recommendedboolean · nullableOptional

Filter to the flagged recommended plan

Default: null
is_system_generatedboolean · nullableOptional

Filter to system-generated (default) plans — the three built-ins (Recommended / Balanced / High Savings) vs. user-created plans.

Default: null
Responses
chevron-right
200

OK

application/json
idstring · uuidRequired

Unique plan identifier

providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Possible values:
namestringRequired

Plan name (e.g. 'Recommended', 'Balanced', 'High Savings')

descriptionstring · nullableOptional

Human-readable summary of the plan

statusstring · enumRequired

Plan status (e.g. 'draft', 'in_progress', 'completed')

Possible values:
is_calculatingbooleanRequired

True if the plan is still being computed

created_atstring · date-timeRequired

When the plan was generated

usage_start_datestring · date-timeOptional

Start of the usage window the plan was computed from.

usage_end_datestring · date-timeOptional

End of the usage window the plan was computed from.

max_termstring · nullableRequired

Maximum commitment term (e.g. '30_DAY', '1_YEAR', '3_YEAR')

minimum_commitmentnumberRequired

Minimum total spend being committed to

breakeven_daysanyRead-onlyOptional

Days until the plan pays for itself. If commitments are kept for at least this many days, the plan is a more profitable decision than running on-demand.

commitment_upfront_costnumberOptional

One-time total dollars required at signing if this plan is applied. NOT a rate — do not sum with monthly-rate fields. Typically 0 for the Recommended plan; can be significant for High Savings / All Upfront plans. Always mention explicitly to the user when non-zero.

get
/beta/v1/org/{org_id}/commitment-plans

Create a commitment plan

post

Creates a new commitment plan for the given segment. The plan is generated asynchronously; the response echoes the initial plan with is_calculating=true and omits coverage fields (meaningless mid-recalc). Poll GET /commitment-plans/{plan_id} once is_calculating=false to get the full detail including coverage and per-service breakdowns.

Path parameters
org_idstring · uuidRequired
Body
providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Example: awsPossible values:
segment_idstring · uuid · nullableOptional

Optional segment ID to scope results. Defaults to the provider resources segment if not specified.

Default: null
namestringRequired

Human-readable plan name

Responses
chevron-right
200

OK

application/json
idstring · uuidRequired

Unique plan identifier

providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Possible values:
namestringRequired

Plan name (e.g. 'Recommended', 'Balanced', 'High Savings')

descriptionstring · nullableOptional

Human-readable summary of the plan

statusstring · enumRequired

Plan status (e.g. 'draft', 'in_progress', 'completed')

Possible values:
is_calculatingbooleanRequired

True if the plan is still being computed

created_atstring · date-timeRequired

When the plan was generated

usage_start_datestring · date-timeOptional

Start of the usage window the plan was computed from.

usage_end_datestring · date-timeOptional

End of the usage window the plan was computed from.

max_termstring · nullableRequired

Maximum commitment term (e.g. '30_DAY', '1_YEAR', '3_YEAR')

minimum_commitmentnumberRequired

Minimum total spend being committed to

breakeven_daysanyRead-onlyOptional

Days until the plan pays for itself. If commitments are kept for at least this many days, the plan is a more profitable decision than running on-demand.

commitment_upfront_costnumberOptional

One-time total dollars required at signing if this plan is applied. NOT a rate — do not sum with monthly-rate fields. Typically 0 for the Recommended plan; can be significant for High Savings / All Upfront plans. Always mention explicitly to the user when non-zero.

post
/beta/v1/org/{org_id}/commitment-plans

Get default commitment plans

get

Returns the three default Archera commitment plans: Recommended (30-day), Balanced (1-year), and High Savings (3-year).

Path parameters
org_idstring · uuidRequired
Query parameters
providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Example: awsPossible values:
segment_idstring · uuid · nullableOptional

Optional segment ID to scope results. Defaults to the provider resources segment if not specified.

Default: null
Responses
chevron-right
200

OK

application/json
idstring · uuidRequired

Unique plan identifier

providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Possible values:
namestringRequired

Plan name (e.g. 'Recommended', 'Balanced', 'High Savings')

descriptionstring · nullableOptional

Human-readable summary of the plan

statusstring · enumRequired

Plan status (e.g. 'draft', 'in_progress', 'completed')

Possible values:
is_calculatingbooleanRequired

True if the plan is still being computed

created_atstring · date-timeRequired

When the plan was generated

usage_start_datestring · date-timeOptional

Start of the usage window the plan was computed from.

usage_end_datestring · date-timeOptional

End of the usage window the plan was computed from.

max_termstring · nullableRequired

Maximum commitment term (e.g. '30_DAY', '1_YEAR', '3_YEAR')

minimum_commitmentnumberRequired

Minimum total spend being committed to

breakeven_daysanyRead-onlyOptional

Days until the plan pays for itself. If commitments are kept for at least this many days, the plan is a more profitable decision than running on-demand.

commitment_upfront_costnumberOptional

One-time total dollars required at signing if this plan is applied. NOT a rate — do not sum with monthly-rate fields. Typically 0 for the Recommended plan; can be significant for High Savings / All Upfront plans. Always mention explicitly to the user when non-zero.

current_coveragenumberRequired

Commitment coverage of reservable spend today, from existing commitments (0-1) — the BEFORE picture, pre-plan.

projected_coveragenumberRequired

Commitment coverage of reservable spend if this plan is applied (0-1) — the AFTER picture, post-plan.

get
/beta/v1/org/{org_id}/commitment-plans/default
get

Returns the single recommended commitment plan for the organization. This is typically the 30-day Recommended plan. Returns 204 if no plan is available.

Path parameters
org_idstring · uuidRequired
Query parameters
providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Example: awsPossible values:
segment_idstring · uuid · nullableOptional

Optional segment ID to scope results. Defaults to the provider resources segment if not specified.

Default: null
Responses
chevron-right
200

OK

application/json
idstring · uuidRequired

Unique plan identifier

providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Possible values:
namestringRequired

Plan name (e.g. 'Recommended', 'Balanced', 'High Savings')

descriptionstring · nullableOptional

Human-readable summary of the plan

statusstring · enumRequired

Plan status (e.g. 'draft', 'in_progress', 'completed')

Possible values:
is_calculatingbooleanRequired

True if the plan is still being computed

created_atstring · date-timeRequired

When the plan was generated

usage_start_datestring · date-timeOptional

Start of the usage window the plan was computed from.

usage_end_datestring · date-timeOptional

End of the usage window the plan was computed from.

max_termstring · nullableRequired

Maximum commitment term (e.g. '30_DAY', '1_YEAR', '3_YEAR')

minimum_commitmentnumberRequired

Minimum total spend being committed to

breakeven_daysanyRead-onlyOptional

Days until the plan pays for itself. If commitments are kept for at least this many days, the plan is a more profitable decision than running on-demand.

commitment_upfront_costnumberOptional

One-time total dollars required at signing if this plan is applied. NOT a rate — do not sum with monthly-rate fields. Typically 0 for the Recommended plan; can be significant for High Savings / All Upfront plans. Always mention explicitly to the user when non-zero.

current_coveragenumberRequired

Commitment coverage of reservable spend today, from existing commitments (0-1) — the BEFORE picture, pre-plan.

projected_coveragenumberRequired

Commitment coverage of reservable spend if this plan is applied (0-1) — the AFTER picture, post-plan.

get
/beta/v1/org/{org_id}/commitment-plans/recommended

Get commitment plan details

get

Returns details for a specific commitment plan by ID, including per-service breakdowns.

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Responses
chevron-right
200

OK

application/json
idstring · uuidRequired

Unique plan identifier

providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Possible values:
namestringRequired

Plan name (e.g. 'Recommended', 'Balanced', 'High Savings')

descriptionstring · nullableOptional

Human-readable summary of the plan

statusstring · enumRequired

Plan status (e.g. 'draft', 'in_progress', 'completed')

Possible values:
is_calculatingbooleanRequired

True if the plan is still being computed

created_atstring · date-timeRequired

When the plan was generated

usage_start_datestring · date-timeOptional

Start of the usage window the plan was computed from.

usage_end_datestring · date-timeOptional

End of the usage window the plan was computed from.

max_termstring · nullableRequired

Maximum commitment term (e.g. '30_DAY', '1_YEAR', '3_YEAR')

minimum_commitmentnumberRequired

Minimum total spend being committed to

breakeven_daysanyRead-onlyOptional

Days until the plan pays for itself. If commitments are kept for at least this many days, the plan is a more profitable decision than running on-demand.

commitment_upfront_costnumberOptional

One-time total dollars required at signing if this plan is applied. NOT a rate — do not sum with monthly-rate fields. Typically 0 for the Recommended plan; can be significant for High Savings / All Upfront plans. Always mention explicitly to the user when non-zero.

current_coveragenumberRequired

Commitment coverage of reservable spend today, from existing commitments (0-1) — the BEFORE picture, pre-plan.

projected_coveragenumberRequired

Commitment coverage of reservable spend if this plan is applied (0-1) — the AFTER picture, post-plan.

get
/beta/v1/org/{org_id}/commitment-plans/{plan_id}

Update a commitment plan

put

Update the plan's name and/or configuration. Replacing configuration triggers a recalculation — the response will have is_calculating=true and line-item financials are invalid until generation completes. Rejected if the plan is currently calculating, is a system-generated default, or is locked for purchase.

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Body
namestringOptional

New plan name

Responses
chevron-right
200

OK

application/json
idstring · uuidRequired

Unique plan identifier

providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Possible values:
namestringRequired

Plan name (e.g. 'Recommended', 'Balanced', 'High Savings')

descriptionstring · nullableOptional

Human-readable summary of the plan

statusstring · enumRequired

Plan status (e.g. 'draft', 'in_progress', 'completed')

Possible values:
is_calculatingbooleanRequired

True if the plan is still being computed

created_atstring · date-timeRequired

When the plan was generated

usage_start_datestring · date-timeOptional

Start of the usage window the plan was computed from.

usage_end_datestring · date-timeOptional

End of the usage window the plan was computed from.

max_termstring · nullableRequired

Maximum commitment term (e.g. '30_DAY', '1_YEAR', '3_YEAR')

minimum_commitmentnumberRequired

Minimum total spend being committed to

breakeven_daysanyRead-onlyOptional

Days until the plan pays for itself. If commitments are kept for at least this many days, the plan is a more profitable decision than running on-demand.

commitment_upfront_costnumberOptional

One-time total dollars required at signing if this plan is applied. NOT a rate — do not sum with monthly-rate fields. Typically 0 for the Recommended plan; can be significant for High Savings / All Upfront plans. Always mention explicitly to the user when non-zero.

put
/beta/v1/org/{org_id}/commitment-plans/{plan_id}

Delete a commitment plan

delete

Delete a commitment plan. Rejected if the plan is currently calculating, is a system-generated default, or is locked for purchase. Irreversible.

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Responses
delete
/beta/v1/org/{org_id}/commitment-plans/{plan_id}

No content

Apply (purchase) a commitment plan

post

Executes the plan's selected line items as actual commitment purchases. Marks the plan as edited and records the initiating user. The plan is then processed by the commitment-purchase workflow — inspect the plan status afterwards for progress. Rejected if the plan is currently calculating or already locked.

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Responses
chevron-right
200

OK

application/json
idstring · uuidRequired

Unique plan identifier

providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Possible values:
namestringRequired

Plan name (e.g. 'Recommended', 'Balanced', 'High Savings')

descriptionstring · nullableOptional

Human-readable summary of the plan

statusstring · enumRequired

Plan status (e.g. 'draft', 'in_progress', 'completed')

Possible values:
is_calculatingbooleanRequired

True if the plan is still being computed

created_atstring · date-timeRequired

When the plan was generated

usage_start_datestring · date-timeOptional

Start of the usage window the plan was computed from.

usage_end_datestring · date-timeOptional

End of the usage window the plan was computed from.

max_termstring · nullableRequired

Maximum commitment term (e.g. '30_DAY', '1_YEAR', '3_YEAR')

minimum_commitmentnumberRequired

Minimum total spend being committed to

breakeven_daysanyRead-onlyOptional

Days until the plan pays for itself. If commitments are kept for at least this many days, the plan is a more profitable decision than running on-demand.

commitment_upfront_costnumberOptional

One-time total dollars required at signing if this plan is applied. NOT a rate — do not sum with monthly-rate fields. Typically 0 for the Recommended plan; can be significant for High Savings / All Upfront plans. Always mention explicitly to the user when non-zero.

current_coveragenumberRequired

Commitment coverage of reservable spend today, from existing commitments (0-1) — the BEFORE picture, pre-plan.

projected_coveragenumberRequired

Commitment coverage of reservable spend if this plan is applied (0-1) — the AFTER picture, post-plan.

post
/beta/v1/org/{org_id}/commitment-plans/{plan_id}/apply

Copy a commitment plan, optionally applying line-item edits

post

Creates a draft copy of an existing commitment plan, including its line items and resource matches. The copy is a regular user-created plan (is_default=false, is_recommended=false) and is editable via PUT /commitment-plans/{plan_id}. Useful for forking a system-generated default plan (Recommended / Balanced / High Savings) so it can be modified — defaults themselves are read-only. The copy inherits the source plan's already-computed line items and financials, so it is ready immediately (is_calculating=false).

Optionally apply line-item edits during the copy via two mutually exclusive modes:

  • Explicit: pass line_item_updates referencing the SOURCE plan's line_item_ids; the server translates them to the copy's new IDs internally and applies them atomically.

  • Resolution: pass target_contract_term (+ optional target_payment_option / target_line_item_ids) and the server swaps every selected (or scoped) line item on the copy to the closest candidate at or below the target term. Saves the LLM having to enumerate per-line edits when the user wants a uniform shape change on the new plan.

If any edit fails (unknown source line_item_id, invalid offer, integer-coercion error on a unit-basis offer's selected_amount, duplicate line_item_id within line_item_updates), the entire copy + updates rolls back — no orphan copy persists. This is the canonical 'copy to edit' workflow; saves the round trip and ID-translation logic vs a separate copy + update sequence.

Returns the new plan in CommitmentPlanListSchema shape — id + headline financials + configuration; covered_services and coverage fields are intentionally omitted because computing them eagerly loads per-service summaries (expensive) and the typical caller just needs the post-edit totals to confirm the copy. Follow up with commitment_plan_details on the returned id if you need the full breakdown. In resolution mode the response additionally carries a resolution array with one entry per scoped line item (actual_term / actual_payment_option / actual_term_reason of exact_match, fallback_closest_shorter, or no_alternative). Surface no_alternative outcomes to the user so they understand why coverage may be partial.

Rejected if the source plan is currently being calculated.

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Body
target_contract_termstring · enum · nullableOptional

Server-side resolution mode. Set to a target contract term and the server resolves the per-line-item update set using the same fallback rule the comparison endpoint projects: exact match on (term, payment) where available, else closest shorter term with the same payment option (GRI preferred within tier). Mutually exclusive with explicit per-line-item updates — pass one OR the other, not both. Preferred over enumerating updates manually because the server can't silently omit entries from a list it builds itself.

Default: nullPossible values:
target_payment_optionstring · enumOptional

Target payment option for resolution mode. Defaults to no_upfront — most users are uncomfortable with cash at signing, so this matches the default framing for plan comparisons. Ignored when target_contract_term is null.

Default: no_upfrontPossible values:
target_line_item_idsstring · uuid[] · nullableOptional

Optional subset of line items to update under resolution mode. If omitted, applies to all selected line items in the plan. Ignored when target_contract_term is null.

Default: null
namestring · nullableOptional

Name for the copied plan. If omitted, defaults to ' <today's date>'.

Default: null
Responses
chevron-right
200

OK

application/json
idstring · uuidRequired

Unique plan identifier

providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Possible values:
namestringRequired

Plan name (e.g. 'Recommended', 'Balanced', 'High Savings')

descriptionstring · nullableOptional

Human-readable summary of the plan

statusstring · enumRequired

Plan status (e.g. 'draft', 'in_progress', 'completed')

Possible values:
is_calculatingbooleanRequired

True if the plan is still being computed

created_atstring · date-timeRequired

When the plan was generated

usage_start_datestring · date-timeOptional

Start of the usage window the plan was computed from.

usage_end_datestring · date-timeOptional

End of the usage window the plan was computed from.

max_termstring · nullableRequired

Maximum commitment term (e.g. '30_DAY', '1_YEAR', '3_YEAR')

minimum_commitmentnumberRequired

Minimum total spend being committed to

breakeven_daysanyRead-onlyOptional

Days until the plan pays for itself. If commitments are kept for at least this many days, the plan is a more profitable decision than running on-demand.

commitment_upfront_costnumberOptional

One-time total dollars required at signing if this plan is applied. NOT a rate — do not sum with monthly-rate fields. Typically 0 for the Recommended plan; can be significant for High Savings / All Upfront plans. Always mention explicitly to the user when non-zero.

post
/beta/v1/org/{org_id}/commitment-plans/{plan_id}/copy

Get commitment plan line items

get

Returns individual commitment recommendations within a plan, including offer details, per-line-item savings, and costs. Each line item has an is_selected field: if false, the line item is excluded from the plan and its costs/savings are NOT included in the plan's top-level metrics. Pass line_item_ids to fetch a specific subset (e.g. a single line item).

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Query parameters
line_item_idsstring · uuid[] · nullableOptional

Optional list of line-item ids to scope the response to. When omitted, returns every line item in the plan.

Default: null
order_bystring · enumOptional

Field to order results by

Default: monthly_net_savingsPossible values:
descbooleanOptional

Sort descending (default true)

Default: true
pageinteger · min: 1OptionalDefault: 1
page_sizeinteger · min: 1 · max: 10000OptionalDefault: 20
Responses
chevron-right
200

OK

application/json
get
/beta/v1/org/{org_id}/commitment-plans/{plan_id}/line-items

Update commitment plan line items

post

Atomically apply line-item edits in a single request. Two modes:

  • Explicit: pass updates, a list where each entry carries the same fields the singular line-item update would accept (selection, account, offer-swap triple) plus the line_item_id selector.

  • Resolution: pass target_contract_term (+ optional target_payment_option / target_line_item_ids) and the server swaps every selected (or scoped) line item to the closest candidate at or below the target term. Saves the LLM having to enumerate many edits when the user wants a uniform shape change.

Modes are mutually exclusive. All updates are applied within a single transaction — if any fails (unknown line item, invalid offer, integer-coercion error on a unit-basis offer's selected_amount), the whole call is rejected and no changes persist.

Returns the updated plan in CommitmentPlanListSchema shape — id + headline financials + configuration; covered_services and coverage fields are intentionally omitted because computing them eagerly loads per-service summaries (expensive) and the typical caller just needs the post-edit totals to confirm the change. Follow up with commitment_plan_details on the returned id if you need the full breakdown. In resolution mode the response additionally carries a resolution array with one entry per scoped line item: the actual_term / actual_payment_option applied and an actual_term_reason of exact_match, fallback_closest_shorter, or no_alternative (the latter were left untouched). Surface no_alternative outcomes to the user so they understand why coverage may be partial.

Rejected if the parent plan is currently calculating, is a system-generated default, or is locked for purchase.

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Body
target_contract_termstring · enum · nullableOptional

Server-side resolution mode. Set to a target contract term and the server resolves the per-line-item update set using the same fallback rule the comparison endpoint projects: exact match on (term, payment) where available, else closest shorter term with the same payment option (GRI preferred within tier). Mutually exclusive with explicit per-line-item updates — pass one OR the other, not both. Preferred over enumerating updates manually because the server can't silently omit entries from a list it builds itself.

Default: nullPossible values:
target_payment_optionstring · enumOptional

Target payment option for resolution mode. Defaults to no_upfront — most users are uncomfortable with cash at signing, so this matches the default framing for plan comparisons. Ignored when target_contract_term is null.

Default: no_upfrontPossible values:
target_line_item_idsstring · uuid[] · nullableOptional

Optional subset of line items to update under resolution mode. If omitted, applies to all selected line items in the plan. Ignored when target_contract_term is null.

Default: null
Responses
chevron-right
200

OK

application/json
idstring · uuidRequired

Unique plan identifier

providerstring · enumRequired

Cloud provider (aws, azure, gcp)

Possible values:
namestringRequired

Plan name (e.g. 'Recommended', 'Balanced', 'High Savings')

descriptionstring · nullableOptional

Human-readable summary of the plan

statusstring · enumRequired

Plan status (e.g. 'draft', 'in_progress', 'completed')

Possible values:
is_calculatingbooleanRequired

True if the plan is still being computed

created_atstring · date-timeRequired

When the plan was generated

usage_start_datestring · date-timeOptional

Start of the usage window the plan was computed from.

usage_end_datestring · date-timeOptional

End of the usage window the plan was computed from.

max_termstring · nullableRequired

Maximum commitment term (e.g. '30_DAY', '1_YEAR', '3_YEAR')

minimum_commitmentnumberRequired

Minimum total spend being committed to

breakeven_daysanyRead-onlyOptional

Days until the plan pays for itself. If commitments are kept for at least this many days, the plan is a more profitable decision than running on-demand.

commitment_upfront_costnumberOptional

One-time total dollars required at signing if this plan is applied. NOT a rate — do not sum with monthly-rate fields. Typically 0 for the Recommended plan; can be significant for High Savings / All Upfront plans. Always mention explicitly to the user when non-zero.

post
/beta/v1/org/{org_id}/commitment-plans/{plan_id}/line-items/update

Compare commitment offers across a plan's line items

get

Returns per-line-item offer alternatives plus plan-wide rollups for each (contract_term, payment_option) hypothetical. Designed to answer 'what would the plan look like at 3-year' in a single call: hypothetical_totals carries the rolled-up financials and delta_vs_current, with per-line-item resolution exposed for transparency. Each line item lands at the target term when available, else the longest available term <= target with the same payment option (GRI preferred within tier), else its current term. Defaults: line_item_ids=all selected, contract_terms=all distinct in candidates, payment_options=[no_upfront].

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Query parameters
line_item_idsstring · uuid[] · nullableOptional

Optional subset of line items to compare. If omitted, defaults to all selected line items in the plan.

Default: null
Responses
chevron-right
200

OK

application/json
get
/beta/v1/org/{org_id}/commitment-plans/{plan_id}/comparison

List filterable covered-resource attributes for a plan

get

Returns the fields that can be used in the filter parameter of /commitment-plans/<plan_id>/covered-resources, scoped to the resources the plan actually covers.

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Responses
chevron-right
200

OK

application/json
namestringRequired
fieldstringRequired
typestring · enumRequiredPossible values:
get
/beta/v1/org/{org_id}/commitment-plans/{plan_id}/covered-resources/attributes

Get valid values for a filterable covered-resource attribute

get

Returns the distinct values for a given field, restricted to the resources the plan covers (and further narrowed by any search/filter passed). Use to discover valid filter values without paginating through the covered-resources list.

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
fieldstring · min: 1Required
Query parameters
line_item_idsstring · uuid[] · nullableOptional

Filter to matches from specific line items

Default: null
only_selected_line_itemsbooleanOptional

Only include matches from selected line items (default true)

Default: true
searchstring · nullableOptional

Free-text ILIKE search across the resource SKU's identity and classification fields (resource id, name, account ids, service, region, instance_type, etc.). Mirrors the search lane on /resources/skus.

Default: null
order_bystring · enumOptional

Field to order results by. Defaults to monthly_net_savings. All numeric axes are 730-hour monthly rates on the per-match plan economics, net of the Archera premium where applicable (NOT the resource's warehouse trailing-30-day actuals — those are filterable but not orderable here, on purpose, to keep sort and response framing on the same monthly basis).

Default: monthly_net_savingsPossible values:
descbooleanOptional

Sort descending (default true)

Default: true
Responses
chevron-right
200

OK

application/json
or
or
or
or
or
or
or
or
or
or
or
get
/beta/v1/org/{org_id}/commitment-plans/{plan_id}/covered-resources/attributes/{field}

Aggregated covered-resources summary for a commitment plan

get

Returns the resources a commitment plan covers, aggregated by (service, account, region, resource_type). Each row is one group: rolled-up costs, savings, mean coverage, and resource count. Sorted by net savings descending. For per-resource detail, use the paginated /covered-resources endpoint.

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Query parameters
line_item_idsstring · uuid[] · nullableOptional

Filter to matches from specific line items

Default: null
only_selected_line_itemsbooleanOptional

Only include matches from selected line items (default true)

Default: true
Responses
chevron-right
200

OK

application/json
servicestring · nullableOptional

Cloud service name (e.g. 'AmazonEC2', 'AmazonRDS')

account_idstring · nullableOptional

Cloud account ID

regionstring · nullableOptional

Cloud region (e.g. 'us-east-1')

resource_typestring · nullableOptional

Resource type within this group — instance family for compute (e.g. 'm5'), usage type for other services (e.g. 'Fargate-GB-Hours', 'Lambda-GB-Second'), or SKU name as fallback

resource_countintegerOptional

Number of resources in this group

projected_coveragenumberOptional

Mean projected coverage across resources in this group (0-1) — the fraction of each resource's usage THIS plan would cover, averaged. Post-plan / projected: distinct from resource.coverage (the trailing-30-day actual coverage from existing commitments). For per-resource projected coverage, use the paginated /covered-resources endpoint.

get
/beta/v1/org/{org_id}/commitment-plans/{plan_id}/covered-resources/summary

Paginated covered resources for a commitment plan

get

Returns one row per resource the plan covers, with the plan's economics scoped to that resource (coverage, monthly savings, before/after cost) and full ResourceSKU detail. Supports search, structured filter, sort, and cursor pagination — same surface idiom as /resources/skus, but scoped to the plan's matched resources. Use /covered-resources/summary for the aggregated breakdown.

Path parameters
org_idstring · uuidRequired
plan_idstring · uuidRequired
Query parameters
line_item_idsstring · uuid[] · nullableOptional

Filter to matches from specific line items

Default: null
only_selected_line_itemsbooleanOptional

Only include matches from selected line items (default true)

Default: true
searchstring · nullableOptional

Free-text ILIKE search across the resource SKU's identity and classification fields (resource id, name, account ids, service, region, instance_type, etc.). Mirrors the search lane on /resources/skus.

Default: null
order_bystring · enumOptional

Field to order results by. Defaults to monthly_net_savings. All numeric axes are 730-hour monthly rates on the per-match plan economics, net of the Archera premium where applicable (NOT the resource's warehouse trailing-30-day actuals — those are filterable but not orderable here, on purpose, to keep sort and response framing on the same monthly basis).

Default: monthly_net_savingsPossible values:
descbooleanOptional

Sort descending (default true)

Default: true
pageinteger · min: 1OptionalDefault: 1
page_sizeinteger · min: 1 · max: 100OptionalDefault: 20
Responses
chevron-right
200

OK

application/json
get
/beta/v1/org/{org_id}/commitment-plans/{plan_id}/covered-resources

Last updated

Was this helpful?