diff --git a/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/consumption.json b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/consumption.json index 077dbd24d7be..b4e43114095f 100644 --- a/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/consumption.json +++ b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/consumption.json @@ -47,6 +47,12 @@ "x-ms-examples": { "UsageDetailsList": { "$ref": "./examples/UsageDetailsList.json" + }, + "UsageDetailsListFilterByTag": { + "$ref": "./examples/UsageDetailsListFilterByTag.json" + }, + "UsageDetailsListGroupByTagDate": { + "$ref": "./examples/UsageDetailsListGroupByTagDate.json" } }, "parameters": [ @@ -62,7 +68,7 @@ }, { "name": "$filter", - "description": "May be used to filter usageDetails by properties/usageEnd (Utc time), properties/usageStart (Utc time), properties/resourceGroup, properties/instanceName or properties/instanceId. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'.", + "description": "May be used to filter usageDetails by properties/usageEnd (Utc time), properties/usageStart (Utc time), properties/resourceGroup, properties/instanceName, properties/instanceId or tags. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. Tag filter is a key value pair string where key and value is separated by a colon (:).", "in": "query", "required": false, "type": "string" @@ -83,6 +89,18 @@ "minimum": 1, "maximum": 1000 }, + { + "name": "$apply", + "description": "OData apply expression to aggregatie usageDetails by tags or (tags and properties/usageStart)", + "in": "query", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "QueryOptions" + }, + "x-ms-client-name": "Apply" + }, { "$ref": "#/parameters/apiVersionParameter" } @@ -122,6 +140,9 @@ }, "UsageDetailsExpand": { "$ref": "./examples/UsageDetailsExpand.json" + }, + "UsageDetailsListForBillingPeriodGroupByTag": { + "$ref": "./examples/UsageDetailsListForBillingPeriodGroupByTag.json" } }, "parameters": [ @@ -140,11 +161,23 @@ }, { "name": "$filter", - "description": "May be used to filter usageDetails by properties/usageEnd (Utc time), properties/usageStart (Utc time), properties/resourceGroup, properties/instanceName or properties/instanceId. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'.", + "description": "May be used to filter usageDetails by properties/usageEnd (Utc time), properties/usageStart (Utc time), properties/resourceGroup, properties/instanceName or properties/instanceId. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. Tag filter is a key value pair string where key and value is separated by a colon (:).", "in": "query", "required": false, "type": "string" }, + { + "name": "$apply", + "description": "OData apply expression to aggregatie usageDetails by tags or (tags and properties/usageStart) for specified billing period", + "in": "query", + "required": false, + "type": "string", + "x-ms-parameter-location": "method", + "x-ms-parameter-grouping": { + "name": "QueryOptions" + }, + "x-ms-client-name": "Apply" + }, { "name": "$skiptoken", "description": "Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls.", @@ -533,6 +566,58 @@ } } }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/reservationRecommendations": { + "get": { + "tags": [ + "ReservationRecommendations" + ], + "operationId": "ReservationRecommendations_List", + "description": "List of recomendations for purchasing reserved instances.", + "externalDocs": { + "url": "https://docs.microsoft.com/en-us/rest/api/consumption/" + }, + "x-ms-examples": { + "ReservationRecommendations": { + "$ref": "./examples/ReservationRecommendationsList.json" + }, + "ReservationRecommendationsFilterByScopeLookBackPeriod": { + "$ref": "./examples/ReservationRecommendationsFilterByScopeLookBackPeriod.json" + } + }, + "parameters": [ + { + "name": "$filter", + "description": "May be used to filter reservationRecommendations by properties/scope and properties/lookBackPeriod.", + "in": "query", + "required": false, + "type": "string" + }, + { + "$ref": "#/parameters/apiVersionParameter" + }, + { + "$ref": "#/parameters/subscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "OK. The request has succeeded.", + "schema": { + "$ref": "#/definitions/ReservationRecommendationsListResult" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, "/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets": { "get": { "tags": [ @@ -1550,6 +1635,99 @@ } } }, + "ReservationRecommendationsProperties": { + "description": "The properties of the reservation recommendations.", + "properties": { + "lookBackPeriod": { + "description": "The number of days of usage to look back for recommendations.", + "type": "string", + "readOnly": true + }, + "meterId": { + "description": "The meter id (GUID)", + "type": "string", + "format":"uuid", + "readOnly": true + }, + "term": { + "description": "RI recommendations in one or three year terms.", + "type": "string", + "readOnly": true + }, + "costWithNoReservedInstances": { + "description": "The total amount of cost without reserved instances.", + "type": "number", + "format": "decimal", + "readOnly": true + }, + "recommendedQuantity": { + "description": "Recomended quality for reserved instances.", + "type": "number", + "format": "decimal", + "readOnly": true + }, + "totalCostWithReservedInstances": { + "description": "The total amount of cost with reserved instances.", + "type": "number", + "format": "decimal", + "readOnly": true + }, + "netSavings": { + "description": "Total estimated savings with reserved instances.", + "type": "number", + "format": "decimal", + "readOnly": true + }, + "firstUsageDate": { + "description": "The usage date for looking back.", + "type": "string", + "format": "date-time", + "readOnly": true + }, + "scope": { + "description": "Shared or single recommendation.", + "type": "string", + "readOnly": true + } + } + }, + "ReservationRecommendations": { + "description": "Reservation recommendations resource.", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/Resource" + }, + { + "$ref": "#/definitions/ResourceAttributes" + } + ], + "properties": { + "properties": { + "x-ms-client-flatten": true, + "$ref": "#/definitions/ReservationRecommendationsProperties", + "title": "Reservation Recommendations properties" + } + } + }, + "ReservationRecommendationsListResult": { + "description": "Result of listing reservation recommendations.", + "properties": { + "value": { + "description": "The list of reservation recommendations.", + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/ReservationRecommendations" + } + }, + "nextLink": { + "description": "The link (url) to the next page of results.", + "type": "string", + "readOnly": true + } + } + }, "ReservationDetailsProperties": { "description": "The properties of the reservation details.", "properties": { @@ -1937,6 +2115,21 @@ }, "x-ms-azure-resource": true }, + "ResourceAttributes": { + "description": "The Resource model definition.", + "properties": { + "location": { + "readOnly": true, + "type": "string", + "description": "Resource location" + }, + "sku": { + "readOnly": true, + "type": "string", + "description": "Resource sku" + } + } + }, "ProxyResource": { "description": "The Resource model definition.", "properties": { diff --git a/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/ReservationRecommendationsFilterByScopeLookBackPeriod.json b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/ReservationRecommendationsFilterByScopeLookBackPeriod.json new file mode 100644 index 000000000000..a8785dded1d4 --- /dev/null +++ b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/ReservationRecommendationsFilterByScopeLookBackPeriod.json @@ -0,0 +1,52 @@ +{ + "parameters": { + "api-version": "2018-03-31", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "$filter": "properties/scope eq 'Single' AND properties/lookBackPeriod eq 'Last7Days'" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Consumption/reservationRecommendations/reservationRecommendations1", + "name": "reservationRecommendations1", + "type": "Microsoft.Consumption/reservationRecommendations", + "sku": "Standard_DS1_v2", + "location": "northeurope", + "properties": { + "lookBackPeriod": "Last7Days", + "meterId": "00000000-0000-0000-0000-000000000000", + "term": "P1Y", + "costWithNoReservedInstances": 0.0, + "recommendedQuantity": 1, + "totalCostWithReservedInstances": 0.0, + "netSavings": 4.634521202630137, + "firstUsageDate": "2018-03-06T00:00:00Z", + "scope": "Single" + } + }, + { + "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Consumption/reservationRecommendations/reservationRecommendations2", + "name": "reservationRecommendations2", + "type": "Microsoft.Consumption/reservationRecommendations", + "sku": "Standard_DS1_v2", + "location": "northeurope", + "properties": { + "lookBackPeriod": "Last7Days", + "meterId": "00000000-0000-0000-0000-000000000000", + "term": "P3Y", + "costWithNoReservedInstances": 0.0, + "recommendedQuantity": 1, + "totalCostWithReservedInstances": 0.0, + "netSavings": 7.2893157231780812, + "firstUsageDate": "2018-03-06T00:00:00Z", + "scope": "Single" + } + } + ], + "nextLink" : "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Consumption/reservationRecommendations?api-version=2018-03-31&$filter=properties/scope+eq+'Single'+AND+properties/lookBackPeriod+eq+'Last7Days'&$skiptoken=AQAAAA%3D%3D&" + } + } + } +} \ No newline at end of file diff --git a/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/ReservationRecommendationsList.json b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/ReservationRecommendationsList.json new file mode 100644 index 000000000000..21237a8ac071 --- /dev/null +++ b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/ReservationRecommendationsList.json @@ -0,0 +1,51 @@ +{ + "parameters": { + "api-version": "2018-03-31", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Consumption/reservationRecommendations/reservationRecommendations1", + "name": "reservationRecommendations1", + "type": "Microsoft.Consumption/reservationRecommendations", + "sku": "Standard_DS1_v2", + "location": "northeurope", + "properties": { + "lookBackPeriod": "Last7Days", + "meterId": "00000000-0000-0000-0000-000000000000", + "term": "P1Y", + "costWithNoReservedInstances": 0.0, + "recommendedQuantity": 1, + "totalCostWithReservedInstances": 0.0, + "netSavings": 4.634521202630137, + "firstUsageDate": "2018-03-06T00:00:00Z", + "scope": "Single" + } + }, + { + "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Consumption/reservationRecommendations/reservationRecommendations2", + "name": "reservationRecommendations2", + "type": "Microsoft.Consumption/reservationRecommendations", + "sku": "Standard_DS1_v2", + "location": "northeurope", + "properties": { + "lookBackPeriod": "Last7Days", + "meterId": "00000000-0000-0000-0000-000000000000", + "term": "P3Y", + "costWithNoReservedInstances": 0.0, + "recommendedQuantity": 1, + "totalCostWithReservedInstances": 0.0, + "netSavings": 7.2893157231780812, + "firstUsageDate": "2018-03-06T00:00:00Z", + "scope": "Single" + } + } + ], + "nextLink" : "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Consumption/reservationRecommendations?api-version=2018-03-31&$skiptoken=AQAAAA%3D%3D&" + } + } + } +} \ No newline at end of file diff --git a/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsExpand.json b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsExpand.json index 00651e1d75bb..6dc01996b8cb 100644 --- a/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsExpand.json +++ b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsExpand.json @@ -4,7 +4,7 @@ "subscriptionId": "00000000-0000-0000-0000-000000000000", "billingPeriodName": "201702", "$expand": "meterDetails,additionalProperties", - "$filter": "properties/usageEnd ge '2018-01-14' AND properties/usageEnd le '2018-02-14'", + "$filter": "properties/usageEnd ge '2018-01-14' AND properties/usageEnd le '2018-02-14' AND tags eq 'dev:tools'", "$top": 1 }, "responses": { diff --git a/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsListFilterByTag.json b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsListFilterByTag.json new file mode 100644 index 000000000000..8aaa20461016 --- /dev/null +++ b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsListFilterByTag.json @@ -0,0 +1,38 @@ +{ + "parameters": { + "api-version": "2018-03-31", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "$filter": "tags eq 'dev:tools'" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Consumption/usageDetails/usageDetailsId1", + "name": "usageDetailsId1", + "type": "Microsoft.Consumption/usageDetails", + "tags": { + "dev": "tools" + }, + "properties": { + "billingPeriodId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Billing/billingPeriods/201702", + "invoiceId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Billing/invoices/201703-123456789", + "usageStart": "2017-02-13T00:00:00Z", + "usageEnd": "2017-02-13T23:59:59Z", + "instanceName": "shared1", + "instanceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Default-Web-eastasia/providers/Microsoft.Web/sites/shared1", + "instanceLocation": "eastasia", + "currency": "USD", + "usageQuantity": 0.00328, + "billableQuantity": 0.00328, + "pretaxCost": 0.67, + "isEstimated": false, + "meterId": "00000000-0000-0000-0000-000000000000" + } + } + ] + } + } + } +} \ No newline at end of file diff --git a/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsListForBillingPeriodGroupByTag.json b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsListForBillingPeriodGroupByTag.json new file mode 100644 index 000000000000..287d532992d5 --- /dev/null +++ b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsListForBillingPeriodGroupByTag.json @@ -0,0 +1,44 @@ +{ + "parameters": { + "api-version": "2018-03-31", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "billingPeriodName": "201803", + "$apply": "groupby((tags))" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Billing/billingPeriods/20180301/providers/Microsoft.Consumption/usageDetails/usageDetailsId1", + "name": "usageDetailsId1", + "type": "Microsoft.Consumption/usageDetails", + "tags": { + "description": "Azure VCAP STA - RDS Server" + }, + "properties": { + "billingPeriodId": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Billing/billingPeriods/20180301", + "usageQuantity": 11.11111, + "pretaxCost": 0, + "currency": "USD" + } + }, + { + "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Billing/billingPeriods/20180301/providers/Microsoft.Consumption/usageDetails/usageDetailsId1", + "name": "usageDetailsId1", + "type": "Microsoft.Consumption/usageDetails", + "tags": { + "description": "Domain controller - STA" + }, + "properties": { + "billingPeriodId": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Billing/billingPeriods/20180301", + "usageQuantity": 111.11111111111, + "pretaxCost": 0, + "currency": "USD" + } + } + ] + } + } + } +} \ No newline at end of file diff --git a/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsListGroupByTagDate.json b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsListGroupByTagDate.json new file mode 100644 index 000000000000..635e84e55585 --- /dev/null +++ b/specification/consumption/resource-manager/Microsoft.Consumption/stable/2018-03-31/examples/UsageDetailsListGroupByTagDate.json @@ -0,0 +1,47 @@ +{ + "parameters": { + "api-version": "2018-03-31", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "$apply": "groupby((tags,properties/usageStart))" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Billing/billingPeriods/20180301/providers/Microsoft.Consumption/usageDetails/usageDetailsId1", + "name": "usageDetailsId1", + "type": "Microsoft.Consumption/usageDetails", + "tags": { + "description": "Azure VCAP STA - RDS Server" + }, + "properties": { + "billingPeriodId": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Billing/billingPeriods/20180301", + "usageStart": "2018-03-01T00:00:00.0000000Z", + "usageEnd": "2018-03-01T23:59:59.0000000Z", + "usageQuantity": 11.11111, + "pretaxCost": 0, + "currency": "USD" + } + }, + { + "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Billing/billingPeriods/20180301/providers/Microsoft.Consumption/usageDetails/usageDetailsId1", + "name": "usageDetailsId1", + "type": "Microsoft.Consumption/usageDetails", + "tags": { + "description": "Azure VCAP STA - RDS Server" + }, + "properties": { + "billingPeriodId": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Billing/billingPeriods/20180301", + "usageStart": "2018-03-02T00:00:00.0000000Z", + "usageEnd": "2018-03-02T23:59:59.0000000Z", + "usageQuantity": 1.11111111111, + "pretaxCost": 0, + "currency": "USD" + } + } + ] + } + } + } +} \ No newline at end of file diff --git a/specification/consumption/resource-manager/readme.md b/specification/consumption/resource-manager/readme.md index 2b57481024d5..b128de08e57f 100644 --- a/specification/consumption/resource-manager/readme.md +++ b/specification/consumption/resource-manager/readme.md @@ -98,6 +98,7 @@ This is not used by Autorest itself. ``` yaml $(swagger-to-sdk) swagger-to-sdk: + - repo: azure-sdk-for-go - repo: azure-sdk-for-python ``` @@ -160,10 +161,10 @@ go: ``` yaml $(go) && $(multiapi) batch: - tag: package-2017-04-preview - - tag: package-2017-11-30 - - tag: package-2017-12-30-preview - - tag: package-2018-01-31 - - tag: package-2018-03-31 + - tag: package-2017-11 + - tag: package-2017-12-preview + - tag: package-2018-01 + - tag: package-2018-03 ```