Skip to content

Commit 0d2d9d9

Browse files
author
AWS
committed
AWS Billing Update: Add ability to combine custom billing views to create new consolidated views.
1 parent 76ace8c commit 0d2d9d9

File tree

2 files changed

+227
-7
lines changed

2 files changed

+227
-7
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "feature",
3+
"category": "AWS Billing",
4+
"contributor": "",
5+
"description": "Add ability to combine custom billing views to create new consolidated views."
6+
}

services/billing/src/main/resources/codegen-resources/service-2.json

Lines changed: 221 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,27 @@
1515
"uid":"billing-2023-09-07"
1616
},
1717
"operations":{
18+
"AssociateSourceViews":{
19+
"name":"AssociateSourceViews",
20+
"http":{
21+
"method":"POST",
22+
"requestUri":"/"
23+
},
24+
"input":{"shape":"AssociateSourceViewsRequest"},
25+
"output":{"shape":"AssociateSourceViewsResponse"},
26+
"errors":[
27+
{"shape":"BillingViewHealthStatusException"},
28+
{"shape":"ServiceQuotaExceededException"},
29+
{"shape":"ThrottlingException"},
30+
{"shape":"ResourceNotFoundException"},
31+
{"shape":"AccessDeniedException"},
32+
{"shape":"ConflictException"},
33+
{"shape":"ValidationException"},
34+
{"shape":"InternalServerException"}
35+
],
36+
"documentation":"<p> Associates one or more source billing views with an existing billing view. This allows creating aggregate billing views that combine data from multiple sources. </p>",
37+
"idempotent":true
38+
},
1839
"CreateBillingView":{
1940
"name":"CreateBillingView",
2041
"http":{
@@ -24,8 +45,10 @@
2445
"input":{"shape":"CreateBillingViewRequest"},
2546
"output":{"shape":"CreateBillingViewResponse"},
2647
"errors":[
48+
{"shape":"BillingViewHealthStatusException"},
2749
{"shape":"ServiceQuotaExceededException"},
2850
{"shape":"ThrottlingException"},
51+
{"shape":"ResourceNotFoundException"},
2952
{"shape":"AccessDeniedException"},
3053
{"shape":"ConflictException"},
3154
{"shape":"ValidationException"},
@@ -52,6 +75,26 @@
5275
"documentation":"<p>Deletes the specified billing view.</p>",
5376
"idempotent":true
5477
},
78+
"DisassociateSourceViews":{
79+
"name":"DisassociateSourceViews",
80+
"http":{
81+
"method":"POST",
82+
"requestUri":"/"
83+
},
84+
"input":{"shape":"DisassociateSourceViewsRequest"},
85+
"output":{"shape":"DisassociateSourceViewsResponse"},
86+
"errors":[
87+
{"shape":"BillingViewHealthStatusException"},
88+
{"shape":"ThrottlingException"},
89+
{"shape":"ResourceNotFoundException"},
90+
{"shape":"AccessDeniedException"},
91+
{"shape":"ConflictException"},
92+
{"shape":"ValidationException"},
93+
{"shape":"InternalServerException"}
94+
],
95+
"documentation":"<p> Removes the association between one or more source billing views and an existing billing view. This allows modifying the composition of aggregate billing views. </p>",
96+
"idempotent":true
97+
},
5598
"GetBillingView":{
5699
"name":"GetBillingView",
57100
"http":{
@@ -67,7 +110,8 @@
67110
{"shape":"ValidationException"},
68111
{"shape":"InternalServerException"}
69112
],
70-
"documentation":"<p>Returns the metadata associated to the specified billing view ARN. </p>"
113+
"documentation":"<p>Returns the metadata associated to the specified billing view ARN. </p>",
114+
"readonly":true
71115
},
72116
"GetResourcePolicy":{
73117
"name":"GetResourcePolicy",
@@ -84,7 +128,8 @@
84128
{"shape":"ValidationException"},
85129
{"shape":"InternalServerException"}
86130
],
87-
"documentation":"<p>Returns the resource-based policy document attached to the resource in <code>JSON</code> format. </p>"
131+
"documentation":"<p>Returns the resource-based policy document attached to the resource in <code>JSON</code> format. </p>",
132+
"readonly":true
88133
},
89134
"ListBillingViews":{
90135
"name":"ListBillingViews",
@@ -100,7 +145,8 @@
100145
{"shape":"ValidationException"},
101146
{"shape":"InternalServerException"}
102147
],
103-
"documentation":"<p>Lists the billing views available for a given time period. </p> <p>Every Amazon Web Services account has a unique <code>PRIMARY</code> billing view that represents the billing data available by default. Accounts that use Billing Conductor also have <code>BILLING_GROUP</code> billing views representing pro forma costs associated with each created billing group.</p>"
148+
"documentation":"<p>Lists the billing views available for a given time period. </p> <p>Every Amazon Web Services account has a unique <code>PRIMARY</code> billing view that represents the billing data available by default. Accounts that use Billing Conductor also have <code>BILLING_GROUP</code> billing views representing pro forma costs associated with each created billing group.</p>",
149+
"readonly":true
104150
},
105151
"ListSourceViewsForBillingView":{
106152
"name":"ListSourceViewsForBillingView",
@@ -117,7 +163,8 @@
117163
{"shape":"ValidationException"},
118164
{"shape":"InternalServerException"}
119165
],
120-
"documentation":"<p>Lists the source views (managed Amazon Web Services billing views) associated with the billing view. </p>"
166+
"documentation":"<p>Lists the source views (managed Amazon Web Services billing views) associated with the billing view. </p>",
167+
"readonly":true
121168
},
122169
"ListTagsForResource":{
123170
"name":"ListTagsForResource",
@@ -134,7 +181,8 @@
134181
{"shape":"ValidationException"},
135182
{"shape":"InternalServerException"}
136183
],
137-
"documentation":"<p>Lists tags associated with the billing view resource. </p>"
184+
"documentation":"<p>Lists tags associated with the billing view resource. </p>",
185+
"readonly":true
138186
},
139187
"TagResource":{
140188
"name":"TagResource",
@@ -179,6 +227,7 @@
179227
"input":{"shape":"UpdateBillingViewRequest"},
180228
"output":{"shape":"UpdateBillingViewResponse"},
181229
"errors":[
230+
{"shape":"BillingViewHealthStatusException"},
182231
{"shape":"ServiceQuotaExceededException"},
183232
{"shape":"ThrottlingException"},
184233
{"shape":"ResourceNotFoundException"},
@@ -223,9 +272,36 @@
223272
},
224273
"documentation":"<p>A time range with a start and end time.</p>"
225274
},
275+
"AssociateSourceViewsRequest":{
276+
"type":"structure",
277+
"required":[
278+
"arn",
279+
"sourceViews"
280+
],
281+
"members":{
282+
"arn":{
283+
"shape":"BillingViewArn",
284+
"documentation":"<p> The Amazon Resource Name (ARN) of the billing view to associate source views with. </p>"
285+
},
286+
"sourceViews":{
287+
"shape":"BillingViewSourceViewsList",
288+
"documentation":"<p> A list of ARNs of the source billing views to associate. </p>"
289+
}
290+
}
291+
},
292+
"AssociateSourceViewsResponse":{
293+
"type":"structure",
294+
"required":["arn"],
295+
"members":{
296+
"arn":{
297+
"shape":"BillingViewArn",
298+
"documentation":"<p> The ARN of the billing view that the source views were associated with. </p>"
299+
}
300+
}
301+
},
226302
"BillingViewArn":{
227303
"type":"string",
228-
"pattern":"arn:aws[a-z-]*:(billing)::[0-9]{12}:billingview/[a-zA-Z0-9/:_\\+=\\.\\-@]{0,59}[a-zA-Z0-9]"
304+
"pattern":"arn:aws[a-z-]*:(billing)::[0-9]{12}:billingview/[a-zA-Z0-9/:_\\+=\\.\\-@]{0,75}[a-zA-Z0-9]"
229305
},
230306
"BillingViewArnList":{
231307
"type":"list",
@@ -263,6 +339,10 @@
263339
"shape":"AccountId",
264340
"documentation":"<p>The account owner of the billing view. </p>"
265341
},
342+
"sourceAccountId":{
343+
"shape":"AccountId",
344+
"documentation":"<p> The Amazon Web Services account ID that owns the source billing view, if this is a derived billing view. </p>"
345+
},
266346
"dataFilterExpression":{
267347
"shape":"Expression",
268348
"documentation":"<p> See <a href=\"https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_billing_Expression.html\">Expression</a>. Billing view only supports <code>LINKED_ACCOUNT</code> and <code>Tags</code>. </p>"
@@ -274,10 +354,49 @@
274354
"updatedAt":{
275355
"shape":"Timestamp",
276356
"documentation":"<p>The time when the billing view was last updated. </p>"
357+
},
358+
"derivedViewCount":{
359+
"shape":"Integer",
360+
"documentation":"<p> The number of billing views that use this billing view as a source. </p>"
361+
},
362+
"sourceViewCount":{
363+
"shape":"Integer",
364+
"documentation":"<p> The number of source views associated with this billing view. </p>"
365+
},
366+
"viewDefinitionLastUpdatedAt":{
367+
"shape":"Timestamp",
368+
"documentation":"<p> The timestamp of when the billing view definition was last updated. </p>"
369+
},
370+
"healthStatus":{
371+
"shape":"BillingViewHealthStatus",
372+
"documentation":"<p> The current health status of the billing view. </p>"
277373
}
278374
},
279375
"documentation":"<p>The metadata associated to the billing view. </p>"
280376
},
377+
"BillingViewHealthStatus":{
378+
"type":"structure",
379+
"members":{
380+
"statusCode":{
381+
"shape":"BillingViewStatus",
382+
"documentation":"<p>The current health status code of the billing view.</p>"
383+
},
384+
"statusReasons":{
385+
"shape":"BillingViewStatusReasons",
386+
"documentation":"<p>A list of reasons explaining the current health status, if applicable.</p>"
387+
}
388+
},
389+
"documentation":"<p> Represents the health status of a billing view, including a status code and optional reasons for the status. </p>"
390+
},
391+
"BillingViewHealthStatusException":{
392+
"type":"structure",
393+
"required":["message"],
394+
"members":{
395+
"message":{"shape":"ErrorMessage"}
396+
},
397+
"documentation":"<p> Exception thrown when a billing view's health status prevents an operation from being performed. This may occur if the billing view is in a state other than <code>HEALTHY</code>.</p>",
398+
"exception":true
399+
},
281400
"BillingViewList":{
282401
"type":"list",
283402
"member":{"shape":"BillingViewListElement"}
@@ -301,9 +420,17 @@
301420
"shape":"AccountId",
302421
"documentation":"<p> The list of owners of the Billing view. </p>"
303422
},
423+
"sourceAccountId":{
424+
"shape":"AccountId",
425+
"documentation":"<p> The Amazon Web Services account ID that owns the source billing view, if this is a derived billing view. </p>"
426+
},
304427
"billingViewType":{
305428
"shape":"BillingViewType",
306429
"documentation":"<p>The type of billing view.</p>"
430+
},
431+
"healthStatus":{
432+
"shape":"BillingViewHealthStatus",
433+
"documentation":"<p> The current health status of the billing view. </p>"
307434
}
308435
},
309436
"documentation":"<p>A representation of a billing view.</p>"
@@ -318,9 +445,35 @@
318445
"BillingViewSourceViewsList":{
319446
"type":"list",
320447
"member":{"shape":"BillingViewArn"},
321-
"max":1,
448+
"max":10,
322449
"min":1
323450
},
451+
"BillingViewStatus":{
452+
"type":"string",
453+
"enum":[
454+
"HEALTHY",
455+
"UNHEALTHY",
456+
"CREATING",
457+
"UPDATING"
458+
]
459+
},
460+
"BillingViewStatusReason":{
461+
"type":"string",
462+
"enum":[
463+
"SOURCE_VIEW_UNHEALTHY",
464+
"SOURCE_VIEW_UPDATING",
465+
"SOURCE_VIEW_ACCESS_DENIED",
466+
"SOURCE_VIEW_NOT_FOUND",
467+
"CYCLIC_DEPENDENCY",
468+
"SOURCE_VIEW_DEPTH_EXCEEDED",
469+
"AGGREGATE_SOURCE",
470+
"VIEW_OWNER_NOT_MANAGEMENT_ACCOUNT"
471+
]
472+
},
473+
"BillingViewStatusReasons":{
474+
"type":"list",
475+
"member":{"shape":"BillingViewStatusReason"}
476+
},
324477
"BillingViewType":{
325478
"type":"string",
326479
"enum":[
@@ -339,6 +492,10 @@
339492
"max":100,
340493
"min":1
341494
},
495+
"Boolean":{
496+
"type":"boolean",
497+
"box":true
498+
},
342499
"ClientToken":{
343500
"type":"string",
344501
"pattern":"[a-zA-Z0-9-]+"
@@ -419,6 +576,10 @@
419576
"arn":{
420577
"shape":"BillingViewArn",
421578
"documentation":"<p> The Amazon Resource Name (ARN) that can be used to uniquely identify the billing view. </p>"
579+
},
580+
"force":{
581+
"shape":"Boolean",
582+
"documentation":"<p> If set to true, forces deletion of the billing view even if it has derived resources (e.g. other billing views or budgets). Use with caution as this may break dependent resources. </p>"
422583
}
423584
}
424585
},
@@ -454,6 +615,33 @@
454615
},
455616
"documentation":"<p> The metadata that you can use to filter and group your results. </p>"
456617
},
618+
"DisassociateSourceViewsRequest":{
619+
"type":"structure",
620+
"required":[
621+
"arn",
622+
"sourceViews"
623+
],
624+
"members":{
625+
"arn":{
626+
"shape":"BillingViewArn",
627+
"documentation":"<p> The Amazon Resource Name (ARN) of the billing view to disassociate source views from. </p>"
628+
},
629+
"sourceViews":{
630+
"shape":"BillingViewSourceViewsList",
631+
"documentation":"<p> A list of ARNs of the source billing views to disassociate. </p>"
632+
}
633+
}
634+
},
635+
"DisassociateSourceViewsResponse":{
636+
"type":"structure",
637+
"required":["arn"],
638+
"members":{
639+
"arn":{
640+
"shape":"BillingViewArn",
641+
"documentation":"<p> The ARN of the billing view that the source views were disassociated from. </p>"
642+
}
643+
}
644+
},
457645
"ErrorMessage":{
458646
"type":"string",
459647
"max":1024,
@@ -469,6 +657,10 @@
469657
"tags":{
470658
"shape":"TagValues",
471659
"documentation":"<p> The specific <code>Tag</code> to use for <code>Expression</code>. </p>"
660+
},
661+
"timeRange":{
662+
"shape":"TimeRange",
663+
"documentation":"<p> Specifies a time range filter for the billing view data. </p>"
472664
}
473665
},
474666
"documentation":"<p> See <a href=\"https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_billing_Expression.html\">Expression</a>. Billing view only supports <code>LINKED_ACCOUNT</code> and <code>Tags</code>. </p>"
@@ -522,6 +714,10 @@
522714
}
523715
}
524716
},
717+
"Integer":{
718+
"type":"integer",
719+
"box":true
720+
},
525721
"InternalServerException":{
526722
"type":"structure",
527723
"required":["message"],
@@ -551,6 +747,10 @@
551747
"shape":"AccountId",
552748
"documentation":"<p> The list of owners of the billing view. </p>"
553749
},
750+
"sourceAccountId":{
751+
"shape":"AccountId",
752+
"documentation":"<p> Filters the results to include only billing views that use the specified account as a source. </p>"
753+
},
554754
"maxResults":{
555755
"shape":"BillingViewsMaxResults",
556756
"documentation":"<p>The maximum number of billing views to retrieve. Default is 100. </p>"
@@ -799,6 +999,20 @@
799999
"documentation":"<p>The request was denied due to request throttling. </p>",
8001000
"exception":true
8011001
},
1002+
"TimeRange":{
1003+
"type":"structure",
1004+
"members":{
1005+
"beginDateInclusive":{
1006+
"shape":"Timestamp",
1007+
"documentation":"<p> The inclusive start date of the time range. </p>"
1008+
},
1009+
"endDateInclusive":{
1010+
"shape":"Timestamp",
1011+
"documentation":"<p> The inclusive end date of the time range. </p>"
1012+
}
1013+
},
1014+
"documentation":"<p> Specifies a time range with inclusive begin and end dates. </p>"
1015+
},
8021016
"Timestamp":{"type":"timestamp"},
8031017
"UntagResourceRequest":{
8041018
"type":"structure",

0 commit comments

Comments
 (0)