Reservation Portfolio End Point
Summary
The RI Portfolio end point can be used to retrieve a detailed list of all Reserved Instances (RIs) as well as understand how well utilized these reservations were over a particular period of time.
Learn more about the Reservation Portfolio.
Included examples in this document will focus on compute reservations an commitments but the patterns for other supported AWS services (i.e. RDS, Redshift and ElastiCache) are consistent with EC2 examples.
End Point Particulars
The end points are read-only for retrieving a list of Reservation Objects
AWS EC2 RI end point : /reservations/aws/savings/ec2
AWS Savings Plan end point : /reservations/aws/portfolio/savingsPlan
**Azure compute RI end point **: /reservations/azure/portfolio/compute
GCP compute CUD end point : /reservations/gcp/portfolio/ce
AWS RDS RI end point : /reservations/aws/savings/rds
AWS Redshift RI end point : /reservations/aws/savings/redshift
AWS ElastiCache end point : /reservations/aws/savings/elasticache
AWS RI Arguments
Argument |
Required? |
Description |
Type |
---|---|---|---|
start |
yes |
Beginning of time window to look for RI usage, e.g. "2018-01-01" |
string |
end |
yes |
End of time window to look for RI usage e.g. "2018-01-01" |
string |
basis |
no |
Defaults to 'cash' though you may pass 'adjusted' to see savings net of any custom pricing rules |
string |
viewId |
no |
Defaults to 0. Only account-group based views are supported |
integer |
The AWS Reservation Object
availabilityZone (string): If applicable
count (integer): Number of reserved instances in the RI
duration (integer): duration of the RI in seconds
end (string): The timestamp when the RI ends e.g., '2018-07-06T18:00:00Z'
instanceType (string): e.g., 'r3.large'
multiAz (string): Single-AZ or Multi-AZ (RDS only)
netSavings (number): Total savings, reflecting the difference between what you paid for an RI and how much the hours you actually consumed would have cost if purchased On-Demand
offeringClass (string): 'standard' or 'convertible
offeringType (string): 'NoUpfront', 'PartialUpfront' or 'AllUpfront'
operatingSystem (string): Software and associated licensing info. e.g., "Linux" or "Windows with SQL Server Standard
overallUtilization (number): The percent of purchased hours that were applied to a running instance
region (string): e.g., 'us-east-1',
reservationIdentifier (string): The vendor supplied unique id for your reservation
scope (string): 'Region' or 'Availability Zone'
start (string): The timestamp when the RI begins e.g., '2018-07-06T18:00:00Z'
state (string): 'retired' or 'active'
tenancy (string): 'default' or 'dedicated'
term (integer): duration of the RI in years
units (integer): number of ISF-Normalized hours in the RI
unrealizedSavings (number): Any additional savings you could have achieved assuming complete RI utilization
vendorAccountId (string): 12 digit string corresponding to your AWS account ID
Example AWS Reservation Object
{
"result": [
{
"availabilityZone": "",
"count": 1,
"duration": 10368000,
"end": "2018-11-03T16:17:39Z",
"instanceType": "t2.large",
"multiAz": "(not set)",
"netSavings": 25.416000000000015,
"offeringClass": "standard",
"offeringType": "NoUpfront",
"operatingSystem": "Linux",
"overallUtilization": 1,
"region": "us-east-1",
"reservationIdentifier": "0202a336-1712-1712-1712-0202a336",
"scope": "Region",
"start": "2018-07-06T18:00:00Z",
"state": "active",
"tenancy": "default",
"term": 1,
"units": 4,
"unrealizedSavings": 0,
"vendorAccountId": "0123456789"
}
]
}
Example AWS Reservation Portfolio Requests
List Subscriptions
The following will list any EC2 reservations that were active between March 1 and March 15, 2018 and with no view restrictions.
curl "https://api.cloudability.com/v3/reservations/aws/savings/ec2?basis=cash&start=2018-08-01&end=2018-08-15&viewId=0" \\
-u ‘[auth_token]:’
AWS Savings Plan Arguments
Argument |
Required |
Description |
Type |
---|---|---|---|
filter |
No |
Attributes Measure(field) and value that savings plans in response must have. E.g. ‘InstanceFamily’ ‘r5’ |
string |
limit |
No |
Part of pagination range request for maximum count per page. |
integer |
offset |
No |
Part of pagination range request designating the first asset to be returned in the response. |
integer |
sortOrder |
No |
Measure(field) and direction (ascending/descending) order of assets in response. |
string |
viewId |
No |
Cloudability ViewID to be respected in response. |
integer |
The AWS Savings Plan Object
vendorAccountId (string): 12 digit string corresponding to your AWS account ID
savingsPlanId (string): the vendor assigned identifier for the Savings Plan
savingsPlanArn (string): The vendor assigned Savings Plan unique global identifier
duration (integer): duration of the savings plan in seconds
start (integer): The Epoch millisecond formatted time stamp of the Savings Plan becoming active
end (integer): The Epoch millisecond formatted time stamp of when the Savings Plan will terminate
term (integer): Savings Plan Term length in years
type (string): Savings Plan type (EC2 or Compute)
state (string): Current state of the Savings plan (e.g. Active)
region (string): EC2 Savings Plan region designation (not applicable for Compute plans)
ec2InstanceFamil (string): EC2 Savings Plan applicable instance family designation (not applicable for Compute plans)
offeringType (string): Payment method/model designation (e.g. No Upfront)
hourlyCommitment (integer): Hourly Savings Plan monetary commitment
totalCommitment (integer): Total monetary commitment over the life of the savings plan
currencyCode (string): Monetary units for Savings Plan hourly and total commitment
upfront (integer): Initial payment made at inception of Savings Plan
frequency (string): Applicable pricing interval units
amount (integer): Applicable pricing per frequency unit specified
Example AWS Savings Plan Object
{
"result": [
{
"vendorAccountId": "############",
"accountName": "AWS Consolidated Master",
"savingsPlanId": "xx###x##x-xxxx-#xxx-xx##-x####x###xxx",
"savingsPlanArn": "arn:aws:savingsplans::############:savingsplan/xx###x##x-xxxx-#xxx-xx##-x####x###xxx",
"description": "1 year No Upfront r5 EC2 Instance Savings Plan in us-east-1",
"start": 1573079358000,
"end": 1604615357000,
"duration": 31536000,
"term": 1,
"type": "EC2Instance",
"state": "active",
"region": "us-east-1",
"ec2InstanceFamily": "r5",
"offeringType": "No Upfront",
"hourlyCommitment": 1,
"totalCommitment": 8760,
"pricing": {
"offeringId": "c#####xx#-xxx#-##xx-x##x-#xx####xx#x#",
"currencyCode": "USD",
"upfront": 0,
"recurring": {
"frequency": "Hourly",
"amount": 1
}
},
"tags": []
},
{
"vendorAccountId": "############",
"accountName": "AWS Consolidated Master",
"savingsPlanId": "xx###x##x-xxxx-#xxx-xx##-x####x###xxx",
"savingsPlanArn": "arn:aws:savingsplans::############:savingsplan/xx###x##x-xxxx-#xxx-xx##-x####x###xxx",
"description": "1 year No Upfront Compute Savings Plan",
"start": 1573145364000,
"end": 1604681363000,
"duration": 31536000,
"term": 1,
"type": "Compute",
"state": "active",
"region": "(not set)",
"ec2InstanceFamily": "(not set)",
"offeringType": "No Upfront",
"hourlyCommitment": 1,
"totalCommitment": 8760,
"pricing": {
"offeringId": "c#####xx#-xxx#-##xx-x##x-#xx####xx#x#",
"currencyCode": "USD",
"upfront": 0,
"recurring": {
"frequency": "Hourly",
"amount": 1
}
},
"tags": []
}
],
"meta": {
"aggregate": {
"quantity": 2,
"hourlyCommitment": 2
},
"pagination": {
"totalCount": 2
}
}
}
Example Savings Plan Inventory Request
List Savings Plans
The following will list the first 50 active or expired r5 EC2 Savings Plans in us-east-1 sorted by expiration date from those expiring soonest to those expiring farthest in the future.
curl "https://api.cloudability.com/v3/reservations/aws/portfolio/savingsPlan?filter&limit=50&offset=0&product=savingsPlan&sortOrder=%2Bend&viewId=0" \\
-u ‘[auth_token]:’
The Google Cloud Platform(GCP) Commitment Endpoint
The following api endpoint will provide a list of commitments.
The following curl will work with GET/ POST requests: GET with query parameters and POST with request body.
curl 'https://api.cloudability.com/v3/reservations/gcp/portfolio/commitment'
-H 'accept: application/json, text/plain, /'
-H 'accept-language: en-US,en;q=0.9'
-H 'authorization: Bearer [auth_token]'
-H 'content-type: application/json'
--data-raw '{"start":"2025-02-28","end":"2025-03-30","basis":"adjusted","filter":"commitment_category==spend","viewId":0,"limit":10,"offset":0,"sortOrder":"-billingAccountIdentifier","service":"scud-groups","services":"compute_engine"}'
The following table lists the valid payload options:
Payload Options |
Valid Format |
Details |
---|---|---|
start |
Date in the format “YYYY-MM-DD" |
|
end |
Date in the format “YYYY-MM-DD" |
|
basis |
adjusted, cost |
|
filter |
Look how filters get formed in the developer toolbar. |
|
sortOrder |
A valid field e.g. billingAccountIdentifier for ALL, netsavings for other CUDs. |
|
services |
Comma separated string with values from
|
Current supported services include “compute_engine” and “cloud_sql”. |
For SCUDs, RCUDs or ALL commitments to be returned via the above endpoint, use the following in filters along with dates.
Commitments |
Filter Values |
Details |
---|---|---|
Flex CUDs Commitments |
"commitment_category==spend" |
When commitment category as spend is provided, the above endpoint should return Flex CUDs commitments only. |
RCUDs Commitments |
"commitment_category==resource" |
When commitment category as resource is provided, the above endpoint should return Resource CUDs commitments only. |
All Commitments | No filter added | When no commitment category is provided as filter, Flex CUDs and RCUDs are returned as response by merging the results of RCUD and SCUD commitments |
Cloud SQL CUDs |
"commitment_category==spend" |
"commitment_category==spend" with services in payload should be “cloud_sql” |
The Google Cloud Platform(GCP) Commitment Endpoint Object
commitmentGroupId (string): The commitment group id for the group commitment belongs to.
billingAccountIdentifier (string): Billing Account Identifier in which commitment belong to.
term (integer): CUD term length in years.
region (string): Text description of the CUD's assigned region e.g. 'us-central'.
status (string): Current CUD status.
hourlyCommitmentAmount (string): Hourly commitment amount.
hourlyCommitmentCost (string): Hourly commitment cost that is being paid.
totalCommitmentAmount (string): Hourly commitment cost that is being paid.
totalCommitmentCost (string): Total commitment cost to be paid.
commitmentCostRemaining (string): Commitment remaining cost.
remainingCost (string): Remaining cost of the CUD to be paid.
commitmentDiscountRate (string): Commitment discount rate percentage / 100.
creation (string): The creation date of the CUD was requested
start (string): The start date of when the CUD began applying to usage
end (string): The CUD expiration date
expirationDate (string): The CUD expiration date
offer (string): CUD offer details if available.
description (string): Description of the CUD.
name (string): User assigned CUD name
accountIdentifier(string): User assigned account ID
memory (integer): MB of memory allocated (at 1024MB/GB)
vcpus (integer): vCPUs allocated to the CUD
duration (integer): Duration of the RI in seconds
statusMessage (string): Long form status description and explanation
type (string): Flex-CUD or CUD type of the CUD
commitmentGroupDetails (object): Commitment group details object {}
service: Service name CUD belongs to
reservationId/ commitmentId (string): Unique identifier of the CUD.
commitmentCategory (string): Commitment category, Spend or Resource.
Example GCP Commitment Endpoint Object
This is example response for ALL Commitments with 1 Flex CUD (SCUD) and 1 RCUD.
"result": [
{
"commitmentGroupId": "01E091-D83A6B-1F55DD:spend:COMPUTE_ENGINE:all-regions",
"billingAccountIdentifier": "01E091-D83A6B-1F55DD",
"term": 1,
"region": "n/a",
"quantity": 0,
"status": "Active",
"hourlyCommitmentAmount": 0.12,
"hourlyCommitmentCost": 0.086397,
"totalCommitmentAmount": 89.28,
"totalCommitmentCost": 64.279011,
"commitmentCostRemaining": 275.78,
"commitmentDiscountRate": 0.280029,
"creation": "2024-01-04",
"start": "2024-01-04",
"end": "2025-01-04",
"expirationDate": "2025-01-04",
"offer": "services/compute.googleapis.com/standardOffers/ffe0f6a3-2f98-437e-8d49-fc443a05d3c2",
"description": "billingAccounts/01E091-D83A6B-1F55DD/orders/2b455b7d-d3d2-4696-a9bd-6d046776edcf",
"name": "James Smith requested Flex CUD",
"accountIdentifier": "01E091-D83A6B-1F55DD",
"memory": 0,
"vcpus": 0,
"duration": 0,
"commitmentGroupDetails": {
"reservationId": "01E091-D83A6B-1F55DD:spend:COMPUTE_ENGINE:all-regions",
"commitmentCategory": "Spend",
"region": "all-regions",
"quantity": 3,
"status": "Active",
"nextExpirationDate": "2025-01-04",
"netSavings": -13.279300,
"realizedSavingsRate": -0.0991584521,
"commitmentListDiscountRate": 0.290029,
"hourlyCommitmentAmount": 0.180000,
"totalCommitmentAmount": 133.920000,
"hourlyCommitmentCost": 0.127795,
"totalCommitmentCost": 95.079368,
"scudGroupUtilization": 0.610836,
"remainingCost": 503.310000,
"accountIdentifier": "01E091-D83A6B-1F55DD",
"unrealizedSavings": -13.279300,
"nextExpiration": 0,
"vcpus": 0,
"memory": 0,
"predefinedOnDemandPrice": 0.0,
"customOnDemandPrice": 0.0,
"commit1YrPrice": 0.0,
"commit3YrPrice": 0.0,
"orgId": 112844,
"service": "COMPUTE_ENGINE",
"billingAccountIdentifier": "01E091-D83A6B-1F55DD",
"scuds": []
},
"orgId": 112844,
"service": "COMPUTE_ENGINE",
"reservationId": "2b455b7d-d3d2-4696-a9bd-6d046776edcf",
"commitmentCategory": "Spend"
},
{
"commitmentGroupId": "staging-rightsizing:us-central1:GENERAL_PURPOSE_E2",
"billingAccountIdentifier": "staging-rightsizing",
"term": 1,
"region": "us-central1",
"quantity": 0,
"status": "ACTIVE",
"hourlyCommitmentAmount": 0.0,
"hourlyCommitmentCost": 0.0,
"totalCommitmentAmount": 0.0,
"totalCommitmentCost": 0.0,
"commitmentCostRemaining": 0.0,
"commitmentDiscountRate": 0.0,
"creation": "2024-06-18",
"start": "2024-06-19",
"end": "2025-06-19",
"expirationDate": "2025-06-19",
"offer": "0.0",
"description": "",
"name": "sean-e2-commitment",
"accountIdentifier": "staging-rightsizing",
"commitmentType": "GENERAL_PURPOSE_E2",
"memory": 2048,
"vcpus": 2,
"selfLink": "https://www.googleapis.com/compute/beta/projects/staging-rightsizing/regions/us-central1/commitments/sean-e2-commitment",
"statusMessage": "The commitment is active, and so will apply to current resource usage.",
"duration": 0,
"orgId": 112844,
"service": "COMPUTE_ENGINE",
"reservationId": "4034804980905703051",
"commitmentCategory": "Resource"
},
],
"aggregate": {
"quantity": 13,
"unrealizedSavings": 0,
"hourlyCommitment": 0.127795,
"totalCommitment": 95.079368,
"netSavings": 171.847206,
"overallUtilization": 0.610836,
"effectiveSavingsRate": 0.000000,
"coverage": 0.007172,
"remainingCommitmentCost": 503.310000,
"rcudCoverageAmount": 964.089371,
"scudCoverageAmount": 133.920001,
"commitmentCoverageAmount": 1098.009372,
"commitmentEligibleCoverageCost": 4456.955846,
"relevantSpendCommitmentCoverageCost": 5554.965218,
"rcudExclusiveEligibleCoverageCost": 6866.890625,
"relevantAllCommitmentCoverageCost": 12421.855843,
"costsUncoverableByCommitments": 4539.347407,
"totalServiceODCost": 16961.203250,
"sudCredit": -2038.881740
},
"pagination": {
"totalCount": 2
}
The commitment-groups endpoint has SCUDs[] or CUDs[] according to commitment category whereas commitment endpoint has commitmentGroupDetails against each commitment. But commitmentGroupDetails does not re-populate scuds[] or cuds[] again for commitment endpoint.
The Google Cloud Platform(GCP) Commitment Groups Endpoint
The following api endpoint will provide a list of commitment groups and associated commitments in it.
The following curl will work with GET/ POST requests: GET with query parameters and POST with request body.
curl 'https://api.cloudability.com/v3/reservations/gcp/portfolio/commitment-groups'
-H 'accept: application/json, text/plain, /'
-H 'accept-language: en-US,en;q=0.9'
-H 'authorization: Bearer [auth_token]'
-H 'content-type: application/json'
--data-raw '{"start":"2025-02-28","end":"2025-03-30","basis":"adjusted","filter":"commitment_category==spend","viewId":0,"limit":10,"offset":0,"sortOrder":"-netSavings","service":"scud-groups","services":"compute_engine"}'
The following table lists the valid payload options:
Payload Options |
Valid Format |
Details |
---|---|---|
start |
Date in the format “YYYY-MM-DD" |
|
end |
Date in the format “YYYY-MM-DD" |
|
basis |
adjusted, cost |
|
filter |
Look how filters get formed in the developer toolbar. |
|
sortOrder |
A valid field e.g. billingAccountIdentifier for ALL, netsavings for other CUDs. |
|
services |
Comma separated string with values from
|
Current supported services include “compute_engine” and “cloud_sql”. |
For SCUDs, RCUDs or ALL commitments to be returned via the above endpoint, use the following in filters along with dates.
Commitments |
Filter Values |
Details |
---|---|---|
Flex CUDs Commitments |
"commitment_category==spend" |
When commitment category as spend is provided, the above endpoint should return Flex CUDs commitments only. |
RCUDs Commitments |
"commitment_category==resource" |
When commitment category as resource is provided, the above endpoint should return Resource CUDs commitments only. |
All Commitments | No filter added | When no commitment category is provided as filter, Flex CUDs and RCUDs are returned as response by merging the results of RCUD and SCUD commitments |
Cloud SQL CUDs |
"commitment_category==spend" |
"commitment_category==spend" with services in payload should be “cloud_sql” |
The Google Cloud Platform(GCP) Commitment Groups Endpoint Object
commitmentGroupId (string): The commitment group id for the group commitment belongs to.
billingAccountIdentifier (string): Billing Account Identifier in which commitment belong to.
term (integer): CUD term length in years.
region (string): Text description of the CUD's assigned region e.g. 'us-central'.
status (string): Current CUD status.
hourlyCommitmentAmount (string): Hourly commitment amount.
hourlyCommitmentCost (string): Hourly commitment cost that is being paid.
totalCommitmentAmount (string): Hourly commitment cost that is being paid.
totalCommitmentCost (string): Total commitment cost to be paid.
commitmentCostRemaining (string): Commitment remaining cost.
remainingCost (string): Remaining cost of the CUD to be paid.
commitmentDiscountRate (string): Commitment discount rate percentage / 100.
creation (string): The creation date of the CUD was requested
start (string): The start date of when the CUD began applying to usage
end (string): The CUD expiration date
expirationDate (string): The CUD expiration date
offer (string): CUD offer details if available.
description (string): Description of the CUD.
name (string): User assigned CUD name
accountIdentifier(string): User assigned account ID
memory (integer): MB of memory allocated (at 1024MB/GB)
vcpus (integer): vCPUs allocated to the CUD
duration (integer): Duration of the RI in seconds
statusMessage (string): Long form status description and explanation
type (string): Flex-CUD or CUD type of the CUD
commitmentGroupDetails (object): Commitment group details object {}
service: Service name CUD belongs to
reservationId/ commitmentId (string): Unique identifier of the CUD.
commitmentCategory (string): Commitment category, Spend or Resource.
Example Google Cloud Platform(GCP) Commitment Groups Endpoint Object
This is an example response for Commitment Groups for Flex CUDs.
{
{
"result": [
{
"reservationId": "01E091-D83A6B-1F55DD:spend:COMPUTE_ENGINE:all-regions",
"commitmentGroupId": "01E091-D83A6B-1F55DD:spend:COMPUTE_ENGINE:all-regions",
"commitmentCategory": "Spend",
"region": "all-regions",
"quantity": 3,
"status": "Active",
"nextExpirationDate": "2025-01-04",
"netSavings": 0.000000,
"commitmentListDiscountRate": 0.290000,
"hourlyCommitmentAmount": 0.180000,
"hourlyCommitmentCost": 0.127800,
"totalCommitmentAmount": 133.920000,
"totalCommitmentCost": 95.083200,
"totalLifeTimeCommitmentCost": 1214.136000,
"totalLifeTimeCommitmentAmount": 1752.000000,
"scudGroupUtilization": 0.000000,
"remainingCost": 261.010000,
"accountIdentifier": "n/a",
"unrealizedSavings": 0.000000,
"nextExpiration": 0,
"vcpus": 0,
"memory": 0,
"predefinedOnDemandPrice": 0.0,
"customOnDemandPrice": 0.0,
"commit1YrPrice": 0.0,
"commit3YrPrice": 0.0,
"scudsMinStartDate": "2024-01-04",
"orgId": 108194,
"service": "COMPUTE_ENGINE",
"billingAccountIdentifier": "01E091-D83A6B-1F55DD",
"scuds": [
{
"commitmentGroupId": "01E091-D83A6B-1F55DD:spend:COMPUTE_ENGINE:all-regions",
"billingAccountIdentifier": "01E091-D83A6B-1F55DD",
"term": 1,
"region": "n/a",
"status": "Active",
"hourlyCommitmentAmount": 0.12,
"hourlyCommitmentCost": 0.0864,
"totalCommitmentAmount": 89.28,
"totalCommitmentCost": 64.2816,
"totalLifeTimeCommitmentCost": 756.864000,
"totalLifeTimeCommitmentAmount": 1051.200000,
"commitmentCostRemaining": 111.97,
"remainingCost": 111.97,
"commitmentDiscountRate": 0.28,
"creation": "2024-01-04",
"start": "2024-01-04",
"end": "2025-01-04",
"expirationDate": "2025-01-04",
"offer": "services/compute.googleapis.com/standardOffers/ffe0f6a3-2f98-437e-8d49-fc443a05d3c2",
"description": "billingAccounts/01E091-D83A6B-1F55DD/orders/2b455b7d-d3d2-4696-a9bd-6d046776edcf",
"name": "James Smith requested Flex CUD",
"accountIdentifier": "n/a",
"memory": 0,
"vcpus": 0,
"duration": 0,
"type": "Compute Flex-CUD",
"orgId": 108194,
"service": "COMPUTE_ENGINE",
"reservationId": "2b455b7d-d3d2-4696-a9bd-6d046776edcf",
"commitmentCategory": "Spend"
},
{
"commitmentGroupId": "01E091-D83A6B-1F55DD:spend:COMPUTE_ENGINE:all-regions",
"billingAccountIdentifier": "01E091-D83A6B-1F55DD",
"term": 1,
"region": "n/a",
"status": "Active",
"hourlyCommitmentAmount": 0.05,
"hourlyCommitmentCost": 0.036,
"totalCommitmentAmount": 37.2,
"totalCommitmentCost": 26.784,
"totalLifeTimeCommitmentCost": 315.360000,
"totalLifeTimeCommitmentAmount": 438.000000,
"commitmentCostRemaining": 46.66,
"remainingCost": 46.66,
"commitmentDiscountRate": 0.28,
"creation": "2024-01-04",
"start": "2024-01-04",
"end": "2025-01-04",
"expirationDate": "2025-01-04",
"offer": "services/compute.googleapis.com/standardOffers/ffe0f6a3-2f98-437e-8d49-fc443a05d3c2",
"description": "billingAccounts/01E091-D83A6B-1F55DD/orders/e3e36abf-36c6-4ebf-adb1-295e570f09da",
"name": "James Smith requested Flex CUD",
"accountIdentifier": "n/a",
"memory": 0,
"vcpus": 0,
"duration": 0,
"type": "Compute Flex-CUD",
"orgId": 108194,
"service": "COMPUTE_ENGINE",
"reservationId": "e3e36abf-36c6-4ebf-adb1-295e570f09da",
"commitmentCategory": "Spend"
},
{
"commitmentGroupId": "01E091-D83A6B-1F55DD:spend:COMPUTE_ENGINE:all-regions",
"billingAccountIdentifier": "01E091-D83A6B-1F55DD",
"term": 3,
"region": "n/a",
"status": "Active",
"hourlyCommitmentAmount": 0.01,
"hourlyCommitmentCost": 0.0054,
"totalCommitmentAmount": 7.44,
"totalCommitmentCost": 4.0176,
"totalLifeTimeCommitmentCost": 141.912000,
"totalLifeTimeCommitmentAmount": 262.800000,
"commitmentCostRemaining": 102.38,
"remainingCost": 102.38,
"commitmentDiscountRate": 0.46,
"creation": "2024-01-10",
"start": "2024-01-10",
"end": "2027-01-10",
"expirationDate": "2027-01-10",
"offer": "services/compute.googleapis.com/standardOffers/062a285d-8989-4ce7-8f9a-bed8d183236f",
"description": "billingAccounts/01E091-D83A6B-1F55DD/orders/fda5efd3-ca2e-4c79-9dfd-2d16f1746bbe",
"name": "Blake Corum 3 year commitment",
"accountIdentifier": "n/a",
"memory": 0,
"vcpus": 0,
"duration": 0,
"type": "Compute Flex-CUD",
"orgId": 108194,
"service": "COMPUTE_ENGINE",
"reservationId": "fda5efd3-ca2e-4c79-9dfd-2d16f1746bbe",
"commitmentCategory": "Spend"
}
]
}
],
"aggregate": {
"quantity": 3,
"unrealizedSavings": 0.000000,
"netSavings": 0.000000,
"overallUtilization": 0.000000,
"effectiveSavingsRate": 0.000000,
"coverage": 0.000000,
"remainingCommitmentCost": 261.010000,
"totalRemainingCost": 261.010000,
"rcudCoverageAmount": 0.000000,
"scudCoverageAmount": 0.000000,
"spendCoveredResourceEligibleCost": 98.234687,
"resourceCoveredSpendEligibleCost": 166.385452,
"totalCoveredAmount": 0.000000,
"spendTotalCoveredAmount": 166.385452,
"resourceTotalCoveredAmount": 98.234687,
"spendCommitmentEligibleCoverageCost": 1199.875958,
"resourceCommitmentEligibleCoverageCost": 2769.947700,
"relevantResourceCommitmentCoverageCost": 2868.182387,
"relevantSpendCommitmentCoverageCost": 1366.261410,
"rcudExclusiveEligibleCoverageCost": 1573.353773,
"scudExclusiveEligibleCoverageCost": 3.282031,
"relevantAllCommitmentCoverageCost": 2773.229731,
"costsUncoverableByCommitments": 1185.002169,
"totalServiceODCost": 3958.231900,
"sudCredit": -634.953422,
"commitmentEligibleCoverageCost": 2773.229731,
"nonExclusiveEligibleCost": 1196.593927
}
"pagination": {
"totalCount": 1
}
}
The commitment-groups endpoint has SCUDs[] or CUDs[] according to commitment category whereas commitment endpoint has commitmentGroupDetails against each commitment. But commitmentGroupDetails does not re-populate scuds[] or cuds[] again for commitment endpoint.
The Azure Reserved Instance Object
vendorAccountId (string): Vendor assigned unique alphanumeric subscription identifier
reservationId (string): Vendor assigned unique alphanumeric reservation identifier
AccountName (string): User assigned subscription name
size (string): On demand instance family covered by the reservation(e.g.'DS1_v2')
tier (string): On demand instance tier covered by the reservation (e.g.'Standard')
term (integer): Reservation term length in years
quantity (integer): Number of instances covered by the reservation
region (string): Text description of the reservation's assigned region e.g. 'westus2'
state (string): Current reservation status
start (number): The Epoch millisecond formatted time stamp of when the CUD began applying to usage
end (number): The Epoch millisecond formatted CUD expiration time stamp
currencyCode (string): The currency reporting type for the reservation
upfront (integer): The up front reservation purchase price in the applicable currency
Example Azure Reservation Object
{
"result": [
{
"vendorAccountId": "2####252-2##4-4##e-9##7-b95#########",
"reservationId": "45####04-3X#2-4##7-b##6-35c##XX###X#",
"accountName": "AZU Staging US",
"size": "DS1_v2",
"tier": "Standard",
"term": 1,
"quantity": 3,
"region": "westus2",
"state": "Cancelled",
"start": 1560211200000,
"end": 1560729600000,
"pricing": {
"currencyCode": "USD",
"upfront": 810
}
},
{
"vendorAccountId": "c####d37-eecc-##d6-###b-######da36a6",
"reservationId": "XX6d##d7-b034-4XX8-a8a0-3bcc###a####",
"accountName": "Azure Prod",
"size": "B1s",
"tier": "Standard",
"term": 1,
"quantity": 1,
"region": "westus2",
"state": "Succeeded",
"start": 1557446400000,
"end": 1588896000000,
"pricing": {
"currencyCode": "USD",
"upfront": 53
}
},
{
"vendorAccountId": "26e#####-2##4-434e-####-b95f#####fd#",
"reservationId": "3d####f7-0X##-40b0-b###-82bd######a#",
"accountName": "AZU Staging US",
"size": "DS1_v2",
"tier": "Standard",
"term": 1,
"quantity": 2,
"region": "westus2",
"state": "Succeeded",
"start": 1560729600000,
"end": 1591747200000,
"pricing": {
"currencyCode": "USD",
"upfront": 540
}
},
"meta": {
"aggregate": {
"quantity": 6
},
"pagination": {
"totalCount": 3
}
}
}
Example Azure Reservation Portfolio Request
The following will generate a list of Azure Reserved Instances
curl "https://api.cloudability.com/v3/reservations/azure/portfolio/compute" \\
-u ‘[auth_token]:’