File: types.go

package info (click to toggle)
golang-github-aws-aws-sdk-go-v2 1.30.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 662,428 kB
  • sloc: java: 16,875; makefile: 432; sh: 175
file content (947 lines) | stat: -rw-r--r-- 34,221 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
// Code generated by smithy-go-codegen DO NOT EDIT.

package types

import (
	smithydocument "github.com/aws/smithy-go/document"
	"time"
)

// If the interval for this service level objective is a calendar interval, this
// structure contains the interval specifications.
type CalendarInterval struct {

	// Specifies the duration of each calendar interval. For example, if Duration is 1
	// and DurationUnit is MONTH , each interval is one month, aligned with the
	// calendar.
	//
	// This member is required.
	Duration *int32

	// Specifies the calendar interval unit.
	//
	// This member is required.
	DurationUnit DurationUnit

	// The date and time when you want the first interval to start. Be sure to choose
	// a time that configures the intervals the way that you want. For example, if you
	// want weekly intervals starting on Mondays at 6 a.m., be sure to specify a start
	// time that is a Monday at 6 a.m.
	//
	// When used in a raw HTTP Query API, it is formatted as be epoch time in seconds.
	// For example: 1698778057
	//
	// As soon as one calendar interval ends, another automatically begins.
	//
	// This member is required.
	StartTime *time.Time

	noSmithyDocumentSerde
}

// A dimension is a name/value pair that is part of the identity of a metric.
// Because dimensions are part of the unique identifier for a metric, whenever you
// add a unique name/value pair to one of your metrics, you are creating a new
// variation of that metric. For example, many Amazon EC2 metrics publish
// InstanceId as a dimension name, and the actual instance ID as the value for that
// dimension.
//
// You can assign up to 30 dimensions to a metric.
type Dimension struct {

	// The name of the dimension. Dimension names must contain only ASCII characters,
	// must include at least one non-whitespace character, and cannot start with a
	// colon ( : ). ASCII control characters are not supported as part of dimension
	// names.
	//
	// This member is required.
	Name *string

	// The value of the dimension. Dimension values must contain only ASCII characters
	// and must include at least one non-whitespace character. ASCII control characters
	// are not supported as part of dimension values.
	//
	// This member is required.
	Value *string

	noSmithyDocumentSerde
}

// This structure contains the attributes that determine the goal of an SLO. This
// includes the time period for evaluation and the attainment threshold.
type Goal struct {

	// The threshold that determines if the goal is being met. An attainment goal is
	// the ratio of good periods that meet the threshold requirements to the total
	// periods within the interval. For example, an attainment goal of 99.9% means that
	// within your interval, you are targeting 99.9% of the periods to be in healthy
	// state.
	//
	// If you omit this parameter, 99 is used to represent 99% as the attainment goal.
	AttainmentGoal *float64

	// The time period used to evaluate the SLO. It can be either a calendar interval
	// or rolling interval.
	//
	// If you omit this parameter, a rolling interval of 7 days is used.
	Interval Interval

	// The percentage of remaining budget over total budget that you want to get
	// warnings for. If you omit this parameter, the default of 50.0 is used.
	WarningThreshold *float64

	noSmithyDocumentSerde
}

// The time period used to evaluate the SLO. It can be either a calendar interval
// or rolling interval.
//
// The following types satisfy this interface:
//
//	IntervalMemberCalendarInterval
//	IntervalMemberRollingInterval
type Interval interface {
	isInterval()
}

// If the interval is a calendar interval, this structure contains the interval
// specifications.
type IntervalMemberCalendarInterval struct {
	Value CalendarInterval

	noSmithyDocumentSerde
}

func (*IntervalMemberCalendarInterval) isInterval() {}

// If the interval is a rolling interval, this structure contains the interval
// specifications.
type IntervalMemberRollingInterval struct {
	Value RollingInterval

	noSmithyDocumentSerde
}

func (*IntervalMemberRollingInterval) isInterval() {}

// This structure defines the metric used for a service level indicator, including
// the metric name, namespace, and dimensions
type Metric struct {

	// An array of one or more dimensions to use to define the metric that you want to
	// use. For more information, see [Dimensions].
	//
	// [Dimensions]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension
	Dimensions []Dimension

	// The name of the metric to use.
	MetricName *string

	// The namespace of the metric. For more information, see [Namespaces].
	//
	// [Namespaces]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace
	Namespace *string

	noSmithyDocumentSerde
}

// Use this structure to define a metric or metric math expression that you want
// to use as for a service level objective.
//
// Each MetricDataQuery in the MetricDataQueries array specifies either a metric
// to retrieve, or a metric math expression to be performed on retrieved metrics. A
// single MetricDataQueries array can include as many as 20 MetricDataQuery
// structures in the array. The 20 structures can include as many as 10 structures
// that contain a MetricStat parameter to retrieve a metric, and as many as 10
// structures that contain the Expression parameter to perform a math expression.
// Of those Expression structures, exactly one must have true as the value for
// ReturnData . The result of this expression used for the SLO.
//
// For more information about metric math expressions, see [CloudWatchUse metric math].
//
// Within each MetricDataQuery object, you must specify either Expression or
// MetricStat but not both.
//
// [CloudWatchUse metric math]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html
type MetricDataQuery struct {

	// A short name used to tie this object to the results in the response. This Id
	// must be unique within a MetricDataQueries array. If you are performing math
	// expressions on this set of data, this name represents that data and can serve as
	// a variable in the metric math expression. The valid characters are letters,
	// numbers, and underscore. The first character must be a lowercase letter.
	//
	// This member is required.
	Id *string

	// The ID of the account where this metric is located. If you are performing this
	// operatiion in a monitoring account, use this to specify which source account to
	// retrieve this metric from.
	AccountId *string

	// This field can contain a metric math expression to be performed on the other
	// metrics that you are retrieving within this MetricDataQueries structure.
	//
	// A math expression can use the Id of the other metrics or queries to refer to
	// those metrics, and can also use the Id of other expressions to use the result
	// of those expressions. For more information about metric math expressions, see [Metric Math Syntax and Functions]
	// in the Amazon CloudWatch User Guide.
	//
	// Within each MetricDataQuery object, you must specify either Expression or
	// MetricStat but not both.
	//
	// [Metric Math Syntax and Functions]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax
	Expression *string

	// A human-readable label for this metric or expression. This is especially useful
	// if this is an expression, so that you know what the value represents. If the
	// metric or expression is shown in a CloudWatch dashboard widget, the label is
	// shown. If Label is omitted, CloudWatch generates a default.
	//
	// You can put dynamic expressions into a label, so that it is more descriptive.
	// For more information, see [Using Dynamic Labels].
	//
	// [Using Dynamic Labels]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph-dynamic-labels.html
	Label *string

	// A metric to be used directly for the SLO, or to be used in the math expression
	// that will be used for the SLO.
	//
	// Within one MetricDataQuery object, you must specify either Expression or
	// MetricStat but not both.
	MetricStat *MetricStat

	// The granularity, in seconds, of the returned data points for this metric. For
	// metrics with regular resolution, a period can be as short as one minute (60
	// seconds) and must be a multiple of 60. For high-resolution metrics that are
	// collected at intervals of less than one minute, the period can be 1, 5, 10, 30,
	// 60, or any multiple of 60. High-resolution metrics are those metrics stored by a
	// PutMetricData call that includes a StorageResolution of 1 second.
	//
	// If the StartTime parameter specifies a time stamp that is greater than 3 hours
	// ago, you must specify the period as follows or no data points in that time range
	// is returned:
	//
	//   - Start time between 3 hours and 15 days ago - Use a multiple of 60 seconds
	//   (1 minute).
	//
	//   - Start time between 15 and 63 days ago - Use a multiple of 300 seconds (5
	//   minutes).
	//
	//   - Start time greater than 63 days ago - Use a multiple of 3600 seconds (1
	//   hour).
	Period *int32

	// Use this only if you are using a metric math expression for the SLO. Specify
	// true for ReturnData for only the one expression result to use as the alarm. For
	// all other metrics and expressions in the same CreateServiceLevelObjective
	// operation, specify ReturnData as false .
	ReturnData *bool

	noSmithyDocumentSerde
}

// This structure contains information about one CloudWatch metric associated with
// this entity discovered by Application Signals.
type MetricReference struct {

	// The name of the metric.
	//
	// This member is required.
	MetricName *string

	// Used to display the appropriate statistics in the CloudWatch console.
	//
	// This member is required.
	MetricType *string

	// The namespace of the metric. For more information, see [CloudWatchNamespaces].
	//
	// [CloudWatchNamespaces]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace
	//
	// This member is required.
	Namespace *string

	// An array of one or more dimensions that further define the metric. For more
	// information, see [CloudWatchDimensions].
	//
	// [CloudWatchDimensions]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension
	Dimensions []Dimension

	noSmithyDocumentSerde
}

// This structure defines the metric to be used as the service level indicator,
// along with the statistics, period, and unit.
type MetricStat struct {

	// The metric to use as the service level indicator, including the metric name,
	// namespace, and dimensions.
	//
	// This member is required.
	Metric *Metric

	// The granularity, in seconds, to be used for the metric. For metrics with
	// regular resolution, a period can be as short as one minute (60 seconds) and must
	// be a multiple of 60. For high-resolution metrics that are collected at intervals
	// of less than one minute, the period can be 1, 5, 10, 30, 60, or any multiple of
	// 60. High-resolution metrics are those metrics stored by a PutMetricData call
	// that includes a StorageResolution of 1 second.
	//
	// This member is required.
	Period *int32

	// The statistic to use for comparison to the threshold. It can be any CloudWatch
	// statistic or extended statistic. For more information about statistics, see [CloudWatch statistics definitions].
	//
	// [CloudWatch statistics definitions]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html
	//
	// This member is required.
	Stat *string

	// If you omit Unit then all data that was collected with any unit is returned,
	// along with the corresponding units that were specified when the data was
	// reported to CloudWatch. If you specify a unit, the operation returns only data
	// that was collected with that unit specified. If you specify a unit that does not
	// match the data collected, the results of the operation are null. CloudWatch does
	// not perform unit conversions.
	Unit StandardUnit

	noSmithyDocumentSerde
}

// If the interval for this SLO is a rolling interval, this structure contains the
// interval specifications.
type RollingInterval struct {

	// Specifies the duration of each rolling interval. For example, if Duration is 7
	// and DurationUnit is DAY , each rolling interval is seven days.
	//
	// This member is required.
	Duration *int32

	// Specifies the rolling interval unit.
	//
	// This member is required.
	DurationUnit DurationUnit

	noSmithyDocumentSerde
}

// This structure contains information about one of your services that was
// discovered by Application Signals.
type Service struct {

	// This is a string-to-string map. It can include the following fields.
	//
	//   - Type designates the type of object this is.
	//
	//   - ResourceType specifies the type of the resource. This field is used only
	//   when the value of the Type field is Resource or AWS::Resource .
	//
	//   - Name specifies the name of the object. This is used only if the value of the
	//   Type field is Service , RemoteService , or AWS::Service .
	//
	//   - Identifier identifies the resource objects of this resource. This is used
	//   only if the value of the Type field is Resource or AWS::Resource .
	//
	//   - Environment specifies the location where this object is hosted, or what it
	//   belongs to.
	//
	// This member is required.
	KeyAttributes map[string]string

	// An array of structures that each contain information about one metric
	// associated with this service.
	//
	// This member is required.
	MetricReferences []MetricReference

	// This structure contains one or more string-to-string maps that help identify
	// this service. It can include platform attributes, application attributes, and
	// telemetry attributes.
	//
	// Platform attributes contain information the service's platform.
	//
	//   - PlatformType defines the hosted-in platform.
	//
	//   - EKS.Cluster is the name of the Amazon EKS cluster.
	//
	//   - K8s.Cluster is the name of the self-hosted Kubernetes cluster.
	//
	//   - K8s.Namespace is the name of the Kubernetes namespace in either Amazon EKS
	//   or Kubernetes clusters.
	//
	//   - K8s.Workload is the name of the Kubernetes workload in either Amazon EKS or
	//   Kubernetes clusters.
	//
	//   - K8s.Node is the name of the Kubernetes node in either Amazon EKS or
	//   Kubernetes clusters.
	//
	//   - K8s.Pod is the name of the Kubernetes pod in either Amazon EKS or Kubernetes
	//   clusters.
	//
	//   - EC2.AutoScalingGroup is the name of the Amazon EC2 Auto Scaling group.
	//
	//   - EC2.InstanceId is the ID of the Amazon EC2 instance.
	//
	//   - Host is the name of the host, for all platform types.
	//
	// Applciation attributes contain information about the application.
	//
	//   - AWS.Application is the application's name in Amazon Web Services Service
	//   Catalog AppRegistry.
	//
	//   - AWS.Application.ARN is the application's ARN in Amazon Web Services Service
	//   Catalog AppRegistry.
	//
	// Telemetry attributes contain telemetry information.
	//
	//   - Telemetry.SDK is the fingerprint of the OpenTelemetry SDK version for
	//   instrumented services.
	//
	//   - Telemetry.Agent is the fingerprint of the agent used to collect and send
	//   telemetry data.
	//
	//   - Telemetry.Source Specifies the point of application where the telemetry was
	//   collected or specifies what was used for the source of telemetry data.
	AttributeMaps []map[string]string

	noSmithyDocumentSerde
}

// This structure contains information about one dependency of this service.
type ServiceDependency struct {

	// This is a string-to-string map. It can include the following fields.
	//
	//   - Type designates the type of object this is.
	//
	//   - ResourceType specifies the type of the resource. This field is used only
	//   when the value of the Type field is Resource or AWS::Resource .
	//
	//   - Name specifies the name of the object. This is used only if the value of the
	//   Type field is Service , RemoteService , or AWS::Service .
	//
	//   - Identifier identifies the resource objects of this resource. This is used
	//   only if the value of the Type field is Resource or AWS::Resource .
	//
	//   - Environment specifies the location where this object is hosted, or what it
	//   belongs to.
	//
	// This member is required.
	DependencyKeyAttributes map[string]string

	// The name of the called operation in the dependency.
	//
	// This member is required.
	DependencyOperationName *string

	// An array of structures that each contain information about one metric
	// associated with this service dependency that was discovered by Application
	// Signals.
	//
	// This member is required.
	MetricReferences []MetricReference

	// The name of the operation in this service that calls the dependency.
	//
	// This member is required.
	OperationName *string

	noSmithyDocumentSerde
}

// This structure contains information about a service dependent that was
// discovered by Application Signals. A dependent is an entity that invoked the
// specified service during the provided time range. Dependents include other
// services, CloudWatch Synthetics canaries, and clients that are instrumented with
// CloudWatch RUM app monitors.
type ServiceDependent struct {

	// This is a string-to-string map. It can include the following fields.
	//
	//   - Type designates the type of object this is.
	//
	//   - ResourceType specifies the type of the resource. This field is used only
	//   when the value of the Type field is Resource or AWS::Resource .
	//
	//   - Name specifies the name of the object. This is used only if the value of the
	//   Type field is Service , RemoteService , or AWS::Service .
	//
	//   - Identifier identifies the resource objects of this resource. This is used
	//   only if the value of the Type field is Resource or AWS::Resource .
	//
	//   - Environment specifies the location where this object is hosted, or what it
	//   belongs to.
	//
	// This member is required.
	DependentKeyAttributes map[string]string

	// An array of structures that each contain information about one metric
	// associated with this service dependent that was discovered by Application
	// Signals.
	//
	// This member is required.
	MetricReferences []MetricReference

	// If the dependent invoker was a service that invoked it from an operation, the
	// name of that dependent operation is displayed here.
	DependentOperationName *string

	// If the invoked entity is an operation on an entity, the name of that dependent
	// operation is displayed here.
	OperationName *string

	noSmithyDocumentSerde
}

// This structure contains information about the performance metric that an SLO
// monitors.
type ServiceLevelIndicator struct {

	// The arithmetic operation used when comparing the specified metric to the
	// threshold.
	//
	// This member is required.
	ComparisonOperator ServiceLevelIndicatorComparisonOperator

	// The value that the SLI metric is compared to.
	//
	// This member is required.
	MetricThreshold *float64

	// A structure that contains information about the metric that the SLO monitors.
	//
	// This member is required.
	SliMetric *ServiceLevelIndicatorMetric

	noSmithyDocumentSerde
}

// This structure specifies the information about the service and the performance
// metric that an SLO is to monitor.
type ServiceLevelIndicatorConfig struct {

	// The arithmetic operation to use when comparing the specified metric to the
	// threshold.
	//
	// This member is required.
	ComparisonOperator ServiceLevelIndicatorComparisonOperator

	// The value that the SLI metric is compared to.
	//
	// This member is required.
	MetricThreshold *float64

	// Use this structure to specify the metric to be used for the SLO.
	//
	// This member is required.
	SliMetricConfig *ServiceLevelIndicatorMetricConfig

	noSmithyDocumentSerde
}

// This structure contains the information about the metric that is used for the
// SLO.
type ServiceLevelIndicatorMetric struct {

	// If this SLO monitors a CloudWatch metric or the result of a CloudWatch metric
	// math expression, this structure includes the information about that metric or
	// expression.
	//
	// This member is required.
	MetricDataQueries []MetricDataQuery

	// This is a string-to-string map that contains information about the type of
	// object that this SLO is related to. It can include the following fields.
	//
	//   - Type designates the type of object that this SLO is related to.
	//
	//   - ResourceType specifies the type of the resource. This field is used only
	//   when the value of the Type field is Resource or AWS::Resource .
	//
	//   - Name specifies the name of the object. This is used only if the value of the
	//   Type field is Service , RemoteService , or AWS::Service .
	//
	//   - Identifier identifies the resource objects of this resource. This is used
	//   only if the value of the Type field is Resource or AWS::Resource .
	//
	//   - Environment specifies the location where this object is hosted, or what it
	//   belongs to.
	KeyAttributes map[string]string

	// If the SLO monitors either the LATENCY or AVAILABILITY metric that Application
	// Signals collects, this field displays which of those metrics is used.
	MetricType ServiceLevelIndicatorMetricType

	// If the SLO monitors a specific operation of the service, this field displays
	// that operation name.
	OperationName *string

	noSmithyDocumentSerde
}

// Use this structure to specify the information for the metric that the SLO will
// monitor.
type ServiceLevelIndicatorMetricConfig struct {

	// If this SLO is related to a metric collected by Application Signals, you must
	// use this field to specify which service the SLO metric is related to. To do so,
	// you must specify at least the Type , Name , and Environment attributes.
	//
	// This is a string-to-string map. It can include the following fields.
	//
	//   - Type designates the type of object this is.
	//
	//   - ResourceType specifies the type of the resource. This field is used only
	//   when the value of the Type field is Resource or AWS::Resource .
	//
	//   - Name specifies the name of the object. This is used only if the value of the
	//   Type field is Service , RemoteService , or AWS::Service .
	//
	//   - Identifier identifies the resource objects of this resource. This is used
	//   only if the value of the Type field is Resource or AWS::Resource .
	//
	//   - Environment specifies the location where this object is hosted, or what it
	//   belongs to.
	KeyAttributes map[string]string

	// If this SLO monitors a CloudWatch metric or the result of a CloudWatch metric
	// math expression, use this structure to specify that metric or expression.
	MetricDataQueries []MetricDataQuery

	// If the SLO is to monitor either the LATENCY or AVAILABILITY metric that
	// Application Signals collects, use this field to specify which of those metrics
	// is used.
	MetricType ServiceLevelIndicatorMetricType

	// If the SLO is to monitor a specific operation of the service, use this field to
	// specify the name of that operation.
	OperationName *string

	// The number of seconds to use as the period for SLO evaluation. Your
	// application's performance is compared to the SLI during each period. For each
	// period, the application is determined to have either achieved or not achieved
	// the necessary performance.
	PeriodSeconds *int32

	// The statistic to use for comparison to the threshold. It can be any CloudWatch
	// statistic or extended statistic. For more information about statistics, see [CloudWatch statistics definitions].
	//
	// [CloudWatch statistics definitions]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html
	Statistic *string

	noSmithyDocumentSerde
}

// A structure containing information about one service level objective (SLO) that
// has been created in Application Signals. Creating SLOs can help you ensure your
// services are performing to the level that you expect. SLOs help you set and
// track a specific target level for the reliability and availability of your
// applications and services. Each SLO uses a service level indicator (SLI), which
// is a key performance metric, to calculate how much underperformance can be
// tolerated before the goal that you set for the SLO is not achieved.
type ServiceLevelObjective struct {

	// The ARN of this SLO.
	//
	// This member is required.
	Arn *string

	// The date and time that this SLO was created. When used in a raw HTTP Query API,
	// it is formatted as yyyy-MM-dd'T'HH:mm:ss . For example, 2019-07-01T23:59:59 .
	//
	// This member is required.
	CreatedTime *time.Time

	// This structure contains the attributes that determine the goal of an SLO. This
	// includes the time period for evaluation and the attainment threshold.
	//
	// This member is required.
	Goal *Goal

	// The time that this SLO was most recently updated. When used in a raw HTTP Query
	// API, it is formatted as yyyy-MM-dd'T'HH:mm:ss . For example, 2019-07-01T23:59:59
	// .
	//
	// This member is required.
	LastUpdatedTime *time.Time

	// The name of this SLO.
	//
	// This member is required.
	Name *string

	// A structure containing information about the performance metric that this SLO
	// monitors.
	//
	// This member is required.
	Sli *ServiceLevelIndicator

	// The description that you created for this SLO.
	Description *string

	noSmithyDocumentSerde
}

// A structure containing an SLO budget report that you have requested.
type ServiceLevelObjectiveBudgetReport struct {

	// The ARN of the SLO that this report is for.
	//
	// This member is required.
	Arn *string

	// The status of this SLO, as it relates to the error budget for the entire time
	// interval.
	//
	//   - OK means that the SLO had remaining budget above the warning threshold, as
	//   of the time that you specified in TimeStamp .
	//
	//   - WARNING means that the SLO's remaining budget was below the warning
	//   threshold, as of the time that you specified in TimeStamp .
	//
	//   - BREACHED means that the SLO's budget was exhausted, as of the time that you
	//   specified in TimeStamp .
	//
	//   - INSUFFICIENT_DATA means that the specifed start and end times were before
	//   the SLO was created, or that attainment data is missing.
	//
	// This member is required.
	BudgetStatus ServiceLevelObjectiveBudgetStatus

	// The name of the SLO that this report is for.
	//
	// This member is required.
	Name *string

	// A number between 0 and 100 that represents the percentage of time periods that
	// the service has attained the SLO's attainment goal, as of the time of the
	// request.
	Attainment *float64

	// The budget amount remaining before the SLO status becomes BREACHING , at the
	// time specified in the Timestemp parameter of the request. If this value is
	// negative, then the SLO is already in BREACHING status.
	BudgetSecondsRemaining *int32

	// This structure contains the attributes that determine the goal of an SLO. This
	// includes the time period for evaluation and the attainment threshold.
	Goal *Goal

	// A structure that contains information about the performance metric that this
	// SLO monitors.
	Sli *ServiceLevelIndicator

	// The total number of seconds in the error budget for the interval.
	TotalBudgetSeconds *int32

	noSmithyDocumentSerde
}

// A structure containing information about one error that occurred during a [BatchGetServiceLevelObjectiveBudgetReport]
// operation.
//
// [BatchGetServiceLevelObjectiveBudgetReport]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_BatchGetServiceLevelObjectiveBudgetReport.html
type ServiceLevelObjectiveBudgetReportError struct {

	// The ARN of the SLO that this error is related to.
	//
	// This member is required.
	Arn *string

	// The error code for this error.
	//
	// This member is required.
	ErrorCode *string

	// The message for this error.
	//
	// This member is required.
	ErrorMessage *string

	// The name of the SLO that this error is related to.
	//
	// This member is required.
	Name *string

	noSmithyDocumentSerde
}

// A structure that contains information about one service level objective (SLO)
// created in Application Signals.
type ServiceLevelObjectiveSummary struct {

	// The ARN of this service level objective.
	//
	// This member is required.
	Arn *string

	// The name of the service level objective.
	//
	// This member is required.
	Name *string

	// The date and time that this service level objective was created. It is
	// expressed as the number of milliseconds since Jan 1, 1970 00:00:00 UTC.
	CreatedTime *time.Time

	// This is a string-to-string map. It can include the following fields.
	//
	//   - Type designates the type of object this service level objective is for.
	//
	//   - ResourceType specifies the type of the resource. This field is used only
	//   when the value of the Type field is Resource or AWS::Resource .
	//
	//   - Name specifies the name of the object. This is used only if the value of the
	//   Type field is Service , RemoteService , or AWS::Service .
	//
	//   - Identifier identifies the resource objects of this resource. This is used
	//   only if the value of the Type field is Resource or AWS::Resource .
	//
	//   - Environment specifies the location where this object is hosted, or what it
	//   belongs to.
	KeyAttributes map[string]string

	// If this service level objective is specific to a single operation, this field
	// displays the name of that operation.
	OperationName *string

	noSmithyDocumentSerde
}

// This structure contains information about an operation discovered by
// Application Signals. An operation is a specific function performed by a service
// that was discovered by Application Signals, and is often an API that is called
// by an upstream dependent.
type ServiceOperation struct {

	// An array of structures that each contain information about one metric
	// associated with this service operation that was discovered by Application
	// Signals.
	//
	// This member is required.
	MetricReferences []MetricReference

	// The name of the operation, discovered by Application Signals.
	//
	// This member is required.
	Name *string

	noSmithyDocumentSerde
}

// This structure contains information about one of your services that was
// discoverd by Application Signals
type ServiceSummary struct {

	// This is a string-to-string map that help identify the objects discovered by
	// Application Signals. It can include the following fields.
	//
	//   - Type designates the type of object this is.
	//
	//   - ResourceType specifies the type of the resource. This field is used only
	//   when the value of the Type field is Resource or AWS::Resource .
	//
	//   - Name specifies the name of the object. This is used only if the value of the
	//   Type field is Service , RemoteService , or AWS::Service .
	//
	//   - Identifier identifies the resource objects of this resource. This is used
	//   only if the value of the Type field is Resource or AWS::Resource .
	//
	//   - Environment specifies the location where this object is hosted, or what it
	//   belongs to.
	//
	// This member is required.
	KeyAttributes map[string]string

	// An array of structures that each contain information about one metric
	// associated with this service.
	//
	// This member is required.
	MetricReferences []MetricReference

	// This structure contains one or more string-to-string maps that help identify
	// this service. It can include platform attributes, application attributes, and
	// telemetry attributes.
	//
	// Platform attributes contain information the service's platform.
	//
	//   - PlatformType defines the hosted-in platform.
	//
	//   - EKS.Cluster is the name of the Amazon EKS cluster.
	//
	//   - K8s.Cluster is the name of the self-hosted Kubernetes cluster.
	//
	//   - K8s.Namespace is the name of the Kubernetes namespace in either Amazon EKS
	//   or Kubernetes clusters.
	//
	//   - K8s.Workload is the name of the Kubernetes workload in either Amazon EKS or
	//   Kubernetes clusters.
	//
	//   - K8s.Node is the name of the Kubernetes node in either Amazon EKS or
	//   Kubernetes clusters.
	//
	//   - K8s.Pod is the name of the Kubernetes pod in either Amazon EKS or Kubernetes
	//   clusters.
	//
	//   - EC2.AutoScalingGroup is the name of the Amazon EC2 Auto Scaling group.
	//
	//   - EC2.InstanceId is the ID of the Amazon EC2 instance.
	//
	//   - Host is the name of the host, for all platform types.
	//
	// Applciation attributes contain information about the application.
	//
	//   - AWS.Application is the application's name in Amazon Web Services Service
	//   Catalog AppRegistry.
	//
	//   - AWS.Application.ARN is the application's ARN in Amazon Web Services Service
	//   Catalog AppRegistry.
	//
	// Telemetry attributes contain telemetry information.
	//
	//   - Telemetry.SDK is the fingerprint of the OpenTelemetry SDK version for
	//   instrumented services.
	//
	//   - Telemetry.Agent is the fingerprint of the agent used to collect and send
	//   telemetry data.
	//
	//   - Telemetry.Source Specifies the point of application where the telemetry was
	//   collected or specifies what was used for the source of telemetry data.
	AttributeMaps []map[string]string

	noSmithyDocumentSerde
}

// A key-value pair associated with a resource. Tags can help you organize and
// categorize your resources.
type Tag struct {

	// A string that you can use to assign a value. The combination of tag keys and
	// values can help you organize and categorize your resources.
	//
	// This member is required.
	Key *string

	// The value for the specified tag key.
	//
	// This member is required.
	Value *string

	noSmithyDocumentSerde
}

type noSmithyDocumentSerde = smithydocument.NoSerde

// UnknownUnionMember is returned when a union member is returned over the wire,
// but has an unknown tag.
type UnknownUnionMember struct {
	Tag   string
	Value []byte

	noSmithyDocumentSerde
}

func (*UnknownUnionMember) isInterval() {}