1use std::collections::HashMap;
4
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
9pub enum DataProtectionStatus {
10 #[default]
12 #[serde(rename = "ACTIVATED")]
13 Activated,
14 #[serde(rename = "ARCHIVED")]
15 Archived,
16 #[serde(rename = "DELETED")]
17 Deleted,
18 #[serde(rename = "DISABLED")]
19 Disabled,
20}
21
22impl DataProtectionStatus {
23 #[must_use]
25 pub fn as_str(&self) -> &'static str {
26 match self {
27 Self::Activated => "ACTIVATED",
28 Self::Archived => "ARCHIVED",
29 Self::Deleted => "DELETED",
30 Self::Disabled => "DISABLED",
31 }
32 }
33}
34
35impl std::fmt::Display for DataProtectionStatus {
36 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
37 f.write_str(self.as_str())
38 }
39}
40
41impl From<&str> for DataProtectionStatus {
42 fn from(s: &str) -> Self {
43 match s {
44 "ACTIVATED" => Self::Activated,
45 "ARCHIVED" => Self::Archived,
46 "DELETED" => Self::Deleted,
47 "DISABLED" => Self::Disabled,
48 _ => Self::default(),
49 }
50 }
51}
52
53#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
55pub enum Distribution {
56 #[default]
58 ByLogStream,
59 Random,
60}
61
62impl Distribution {
63 #[must_use]
65 pub fn as_str(&self) -> &'static str {
66 match self {
67 Self::ByLogStream => "ByLogStream",
68 Self::Random => "Random",
69 }
70 }
71}
72
73impl std::fmt::Display for Distribution {
74 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
75 f.write_str(self.as_str())
76 }
77}
78
79impl From<&str> for Distribution {
80 fn from(s: &str) -> Self {
81 match s {
82 "ByLogStream" => Self::ByLogStream,
83 "Random" => Self::Random,
84 _ => Self::default(),
85 }
86 }
87}
88
89#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
91pub enum EntityRejectionErrorType {
92 #[default]
94 EntitySizeTooLarge,
95 InvalidAttributes,
96 InvalidEntity,
97 #[serde(rename = "InvalidKeyAttributes")]
98 InvalidKeyAttribute,
99 InvalidTypeValue,
100 MissingRequiredFields,
101 UnsupportedLogGroupType,
102}
103
104impl EntityRejectionErrorType {
105 #[must_use]
107 pub fn as_str(&self) -> &'static str {
108 match self {
109 Self::EntitySizeTooLarge => "EntitySizeTooLarge",
110 Self::InvalidAttributes => "InvalidAttributes",
111 Self::InvalidEntity => "InvalidEntity",
112 Self::InvalidKeyAttribute => "InvalidKeyAttributes",
113 Self::InvalidTypeValue => "InvalidTypeValue",
114 Self::MissingRequiredFields => "MissingRequiredFields",
115 Self::UnsupportedLogGroupType => "UnsupportedLogGroupType",
116 }
117 }
118}
119
120impl std::fmt::Display for EntityRejectionErrorType {
121 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
122 f.write_str(self.as_str())
123 }
124}
125
126impl From<&str> for EntityRejectionErrorType {
127 fn from(s: &str) -> Self {
128 match s {
129 "EntitySizeTooLarge" => Self::EntitySizeTooLarge,
130 "InvalidAttributes" => Self::InvalidAttributes,
131 "InvalidEntity" => Self::InvalidEntity,
132 "InvalidKeyAttributes" => Self::InvalidKeyAttribute,
133 "InvalidTypeValue" => Self::InvalidTypeValue,
134 "MissingRequiredFields" => Self::MissingRequiredFields,
135 "UnsupportedLogGroupType" => Self::UnsupportedLogGroupType,
136 _ => Self::default(),
137 }
138 }
139}
140
141#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
143pub enum ExportTaskStatusCode {
144 #[default]
146 #[serde(rename = "CANCELLED")]
147 Cancelled,
148 #[serde(rename = "COMPLETED")]
149 Completed,
150 #[serde(rename = "FAILED")]
151 Failed,
152 #[serde(rename = "PENDING")]
153 Pending,
154 #[serde(rename = "PENDING_CANCEL")]
155 PendingCancel,
156 #[serde(rename = "RUNNING")]
157 Running,
158}
159
160impl ExportTaskStatusCode {
161 #[must_use]
163 pub fn as_str(&self) -> &'static str {
164 match self {
165 Self::Cancelled => "CANCELLED",
166 Self::Completed => "COMPLETED",
167 Self::Failed => "FAILED",
168 Self::Pending => "PENDING",
169 Self::PendingCancel => "PENDING_CANCEL",
170 Self::Running => "RUNNING",
171 }
172 }
173}
174
175impl std::fmt::Display for ExportTaskStatusCode {
176 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
177 f.write_str(self.as_str())
178 }
179}
180
181impl From<&str> for ExportTaskStatusCode {
182 fn from(s: &str) -> Self {
183 match s {
184 "CANCELLED" => Self::Cancelled,
185 "COMPLETED" => Self::Completed,
186 "FAILED" => Self::Failed,
187 "PENDING" => Self::Pending,
188 "PENDING_CANCEL" => Self::PendingCancel,
189 "RUNNING" => Self::Running,
190 _ => Self::default(),
191 }
192 }
193}
194
195#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
197pub enum InheritedProperty {
198 #[default]
200 #[serde(rename = "ACCOUNT_DATA_PROTECTION")]
201 AccountDataProtection,
202}
203
204impl InheritedProperty {
205 #[must_use]
207 pub fn as_str(&self) -> &'static str {
208 match self {
209 Self::AccountDataProtection => "ACCOUNT_DATA_PROTECTION",
210 }
211 }
212}
213
214impl std::fmt::Display for InheritedProperty {
215 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
216 f.write_str(self.as_str())
217 }
218}
219
220impl From<&str> for InheritedProperty {
221 fn from(s: &str) -> Self {
222 match s {
223 "ACCOUNT_DATA_PROTECTION" => Self::AccountDataProtection,
224 _ => Self::default(),
225 }
226 }
227}
228
229#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
231pub enum LogGroupClass {
232 #[default]
234 #[serde(rename = "DELIVERY")]
235 Delivery,
236 #[serde(rename = "INFREQUENT_ACCESS")]
237 InfrequentAccess,
238 #[serde(rename = "STANDARD")]
239 Standard,
240}
241
242impl LogGroupClass {
243 #[must_use]
245 pub fn as_str(&self) -> &'static str {
246 match self {
247 Self::Delivery => "DELIVERY",
248 Self::InfrequentAccess => "INFREQUENT_ACCESS",
249 Self::Standard => "STANDARD",
250 }
251 }
252}
253
254impl std::fmt::Display for LogGroupClass {
255 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
256 f.write_str(self.as_str())
257 }
258}
259
260impl From<&str> for LogGroupClass {
261 fn from(s: &str) -> Self {
262 match s {
263 "DELIVERY" => Self::Delivery,
264 "INFREQUENT_ACCESS" => Self::InfrequentAccess,
265 "STANDARD" => Self::Standard,
266 _ => Self::default(),
267 }
268 }
269}
270
271#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
273pub enum OrderBy {
274 #[default]
276 LastEventTime,
277 LogStreamName,
278}
279
280impl OrderBy {
281 #[must_use]
283 pub fn as_str(&self) -> &'static str {
284 match self {
285 Self::LastEventTime => "LastEventTime",
286 Self::LogStreamName => "LogStreamName",
287 }
288 }
289}
290
291impl std::fmt::Display for OrderBy {
292 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
293 f.write_str(self.as_str())
294 }
295}
296
297impl From<&str> for OrderBy {
298 fn from(s: &str) -> Self {
299 match s {
300 "LastEventTime" => Self::LastEventTime,
301 "LogStreamName" => Self::LogStreamName,
302 _ => Self::default(),
303 }
304 }
305}
306
307#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
309pub enum PolicyScope {
310 #[default]
312 #[serde(rename = "ACCOUNT")]
313 Account,
314 #[serde(rename = "RESOURCE")]
315 Resource,
316}
317
318impl PolicyScope {
319 #[must_use]
321 pub fn as_str(&self) -> &'static str {
322 match self {
323 Self::Account => "ACCOUNT",
324 Self::Resource => "RESOURCE",
325 }
326 }
327}
328
329impl std::fmt::Display for PolicyScope {
330 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
331 f.write_str(self.as_str())
332 }
333}
334
335impl From<&str> for PolicyScope {
336 fn from(s: &str) -> Self {
337 match s {
338 "ACCOUNT" => Self::Account,
339 "RESOURCE" => Self::Resource,
340 _ => Self::default(),
341 }
342 }
343}
344
345#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
347pub enum QueryLanguage {
348 #[default]
350 #[serde(rename = "CWLI")]
351 Cwli,
352 #[serde(rename = "PPL")]
353 Ppl,
354 #[serde(rename = "SQL")]
355 Sql,
356}
357
358impl QueryLanguage {
359 #[must_use]
361 pub fn as_str(&self) -> &'static str {
362 match self {
363 Self::Cwli => "CWLI",
364 Self::Ppl => "PPL",
365 Self::Sql => "SQL",
366 }
367 }
368}
369
370impl std::fmt::Display for QueryLanguage {
371 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
372 f.write_str(self.as_str())
373 }
374}
375
376impl From<&str> for QueryLanguage {
377 fn from(s: &str) -> Self {
378 match s {
379 "CWLI" => Self::Cwli,
380 "PPL" => Self::Ppl,
381 "SQL" => Self::Sql,
382 _ => Self::default(),
383 }
384 }
385}
386
387#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
389pub enum QueryStatus {
390 #[default]
392 Cancelled,
393 Complete,
394 Failed,
395 Running,
396 Scheduled,
397 Timeout,
398 Unknown,
399}
400
401impl QueryStatus {
402 #[must_use]
404 pub fn as_str(&self) -> &'static str {
405 match self {
406 Self::Cancelled => "Cancelled",
407 Self::Complete => "Complete",
408 Self::Failed => "Failed",
409 Self::Running => "Running",
410 Self::Scheduled => "Scheduled",
411 Self::Timeout => "Timeout",
412 Self::Unknown => "Unknown",
413 }
414 }
415}
416
417impl std::fmt::Display for QueryStatus {
418 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
419 f.write_str(self.as_str())
420 }
421}
422
423impl From<&str> for QueryStatus {
424 fn from(s: &str) -> Self {
425 match s {
426 "Cancelled" => Self::Cancelled,
427 "Complete" => Self::Complete,
428 "Failed" => Self::Failed,
429 "Running" => Self::Running,
430 "Scheduled" => Self::Scheduled,
431 "Timeout" => Self::Timeout,
432 "Unknown" => Self::Unknown,
433 _ => Self::default(),
434 }
435 }
436}
437
438#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
440pub enum StandardUnit {
441 #[default]
443 Bits,
444 #[serde(rename = "Bits/Second")]
445 BitsSecond,
446 Bytes,
447 #[serde(rename = "Bytes/Second")]
448 BytesSecond,
449 Count,
450 #[serde(rename = "Count/Second")]
451 CountSecond,
452 Gigabits,
453 #[serde(rename = "Gigabits/Second")]
454 GigabitsSecond,
455 Gigabytes,
456 #[serde(rename = "Gigabytes/Second")]
457 GigabytesSecond,
458 Kilobits,
459 #[serde(rename = "Kilobits/Second")]
460 KilobitsSecond,
461 Kilobytes,
462 #[serde(rename = "Kilobytes/Second")]
463 KilobytesSecond,
464 Megabits,
465 #[serde(rename = "Megabits/Second")]
466 MegabitsSecond,
467 Megabytes,
468 #[serde(rename = "Megabytes/Second")]
469 MegabytesSecond,
470 Microseconds,
471 Milliseconds,
472 None,
473 Percent,
474 Seconds,
475 Terabits,
476 #[serde(rename = "Terabits/Second")]
477 TerabitsSecond,
478 Terabytes,
479 #[serde(rename = "Terabytes/Second")]
480 TerabytesSecond,
481}
482
483impl StandardUnit {
484 #[must_use]
486 pub fn as_str(&self) -> &'static str {
487 match self {
488 Self::Bits => "Bits",
489 Self::BitsSecond => "Bits/Second",
490 Self::Bytes => "Bytes",
491 Self::BytesSecond => "Bytes/Second",
492 Self::Count => "Count",
493 Self::CountSecond => "Count/Second",
494 Self::Gigabits => "Gigabits",
495 Self::GigabitsSecond => "Gigabits/Second",
496 Self::Gigabytes => "Gigabytes",
497 Self::GigabytesSecond => "Gigabytes/Second",
498 Self::Kilobits => "Kilobits",
499 Self::KilobitsSecond => "Kilobits/Second",
500 Self::Kilobytes => "Kilobytes",
501 Self::KilobytesSecond => "Kilobytes/Second",
502 Self::Megabits => "Megabits",
503 Self::MegabitsSecond => "Megabits/Second",
504 Self::Megabytes => "Megabytes",
505 Self::MegabytesSecond => "Megabytes/Second",
506 Self::Microseconds => "Microseconds",
507 Self::Milliseconds => "Milliseconds",
508 Self::None => "None",
509 Self::Percent => "Percent",
510 Self::Seconds => "Seconds",
511 Self::Terabits => "Terabits",
512 Self::TerabitsSecond => "Terabits/Second",
513 Self::Terabytes => "Terabytes",
514 Self::TerabytesSecond => "Terabytes/Second",
515 }
516 }
517}
518
519impl std::fmt::Display for StandardUnit {
520 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
521 f.write_str(self.as_str())
522 }
523}
524
525impl From<&str> for StandardUnit {
526 fn from(s: &str) -> Self {
527 match s {
528 "Bits" => Self::Bits,
529 "Bits/Second" => Self::BitsSecond,
530 "Bytes" => Self::Bytes,
531 "Bytes/Second" => Self::BytesSecond,
532 "Count" => Self::Count,
533 "Count/Second" => Self::CountSecond,
534 "Gigabits" => Self::Gigabits,
535 "Gigabits/Second" => Self::GigabitsSecond,
536 "Gigabytes" => Self::Gigabytes,
537 "Gigabytes/Second" => Self::GigabytesSecond,
538 "Kilobits" => Self::Kilobits,
539 "Kilobits/Second" => Self::KilobitsSecond,
540 "Kilobytes" => Self::Kilobytes,
541 "Kilobytes/Second" => Self::KilobytesSecond,
542 "Megabits" => Self::Megabits,
543 "Megabits/Second" => Self::MegabitsSecond,
544 "Megabytes" => Self::Megabytes,
545 "Megabytes/Second" => Self::MegabytesSecond,
546 "Microseconds" => Self::Microseconds,
547 "Milliseconds" => Self::Milliseconds,
548 "None" => Self::None,
549 "Percent" => Self::Percent,
550 "Seconds" => Self::Seconds,
551 "Terabits" => Self::Terabits,
552 "Terabits/Second" => Self::TerabitsSecond,
553 "Terabytes" => Self::Terabytes,
554 "Terabytes/Second" => Self::TerabytesSecond,
555 _ => Self::default(),
556 }
557 }
558}
559
560#[derive(Debug, Clone, Default, Serialize, Deserialize)]
562#[serde(rename_all = "camelCase")]
563pub struct Destination {
564 #[serde(skip_serializing_if = "Option::is_none")]
565 pub access_policy: Option<String>,
566 #[serde(skip_serializing_if = "Option::is_none")]
567 pub arn: Option<String>,
568 #[serde(skip_serializing_if = "Option::is_none")]
569 pub creation_time: Option<i64>,
570 #[serde(skip_serializing_if = "Option::is_none")]
571 pub destination_name: Option<String>,
572 #[serde(skip_serializing_if = "Option::is_none")]
573 pub role_arn: Option<String>,
574 #[serde(skip_serializing_if = "Option::is_none")]
575 pub target_arn: Option<String>,
576}
577
578#[derive(Debug, Clone, Default, Serialize, Deserialize)]
580#[serde(rename_all = "camelCase")]
581pub struct Entity {
582 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
583 pub attributes: HashMap<String, String>,
584 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
585 pub key_attributes: HashMap<String, String>,
586}
587
588#[derive(Debug, Clone, Default, Serialize, Deserialize)]
590#[serde(rename_all = "camelCase")]
591pub struct ExportTask {
592 #[serde(skip_serializing_if = "Option::is_none")]
593 pub destination: Option<String>,
594 #[serde(skip_serializing_if = "Option::is_none")]
595 pub destination_prefix: Option<String>,
596 #[serde(skip_serializing_if = "Option::is_none")]
597 pub execution_info: Option<ExportTaskExecutionInfo>,
598 #[serde(skip_serializing_if = "Option::is_none")]
599 pub from: Option<i64>,
600 #[serde(skip_serializing_if = "Option::is_none")]
601 pub log_group_name: Option<String>,
602 #[serde(skip_serializing_if = "Option::is_none")]
603 pub status: Option<ExportTaskStatus>,
604 #[serde(skip_serializing_if = "Option::is_none")]
605 pub task_id: Option<String>,
606 #[serde(skip_serializing_if = "Option::is_none")]
607 pub task_name: Option<String>,
608 #[serde(skip_serializing_if = "Option::is_none")]
609 pub to: Option<i64>,
610}
611
612#[derive(Debug, Clone, Default, Serialize, Deserialize)]
614#[serde(rename_all = "camelCase")]
615pub struct ExportTaskExecutionInfo {
616 #[serde(skip_serializing_if = "Option::is_none")]
617 pub completion_time: Option<i64>,
618 #[serde(skip_serializing_if = "Option::is_none")]
619 pub creation_time: Option<i64>,
620}
621
622#[derive(Debug, Clone, Default, Serialize, Deserialize)]
624#[serde(rename_all = "camelCase")]
625pub struct ExportTaskStatus {
626 #[serde(skip_serializing_if = "Option::is_none")]
627 pub code: Option<ExportTaskStatusCode>,
628 #[serde(skip_serializing_if = "Option::is_none")]
629 pub message: Option<String>,
630}
631
632#[derive(Debug, Clone, Default, Serialize, Deserialize)]
634#[serde(rename_all = "camelCase")]
635pub struct FilteredLogEvent {
636 #[serde(skip_serializing_if = "Option::is_none")]
637 pub event_id: Option<String>,
638 #[serde(skip_serializing_if = "Option::is_none")]
639 pub ingestion_time: Option<i64>,
640 #[serde(skip_serializing_if = "Option::is_none")]
641 pub log_stream_name: Option<String>,
642 #[serde(skip_serializing_if = "Option::is_none")]
643 pub message: Option<String>,
644 #[serde(skip_serializing_if = "Option::is_none")]
645 pub timestamp: Option<i64>,
646}
647
648#[derive(Debug, Clone, Default, Serialize, Deserialize)]
650#[serde(rename_all = "camelCase")]
651pub struct InputLogEvent {
652 pub message: String,
653 pub timestamp: i64,
654}
655
656#[derive(Debug, Clone, Default, Serialize, Deserialize)]
658#[serde(rename_all = "camelCase")]
659pub struct LogGroup {
660 #[serde(skip_serializing_if = "Option::is_none")]
661 pub arn: Option<String>,
662 #[serde(skip_serializing_if = "Option::is_none")]
663 pub bearer_token_authentication_enabled: Option<bool>,
664 #[serde(skip_serializing_if = "Option::is_none")]
665 pub creation_time: Option<i64>,
666 #[serde(skip_serializing_if = "Option::is_none")]
667 pub data_protection_status: Option<DataProtectionStatus>,
668 #[serde(skip_serializing_if = "Option::is_none")]
669 pub deletion_protection_enabled: Option<bool>,
670 #[serde(default, skip_serializing_if = "Vec::is_empty")]
671 pub inherited_properties: Vec<InheritedProperty>,
672 #[serde(skip_serializing_if = "Option::is_none")]
673 pub kms_key_id: Option<String>,
674 #[serde(skip_serializing_if = "Option::is_none")]
675 pub log_group_arn: Option<String>,
676 #[serde(skip_serializing_if = "Option::is_none")]
677 pub log_group_class: Option<LogGroupClass>,
678 #[serde(skip_serializing_if = "Option::is_none")]
679 pub log_group_name: Option<String>,
680 #[serde(skip_serializing_if = "Option::is_none")]
681 pub metric_filter_count: Option<i32>,
682 #[serde(skip_serializing_if = "Option::is_none")]
683 pub retention_in_days: Option<i32>,
684 #[serde(skip_serializing_if = "Option::is_none")]
685 pub stored_bytes: Option<i64>,
686}
687
688#[derive(Debug, Clone, Default, Serialize, Deserialize)]
690#[serde(rename_all = "camelCase")]
691pub struct LogStream {
692 #[serde(skip_serializing_if = "Option::is_none")]
693 pub arn: Option<String>,
694 #[serde(skip_serializing_if = "Option::is_none")]
695 pub creation_time: Option<i64>,
696 #[serde(skip_serializing_if = "Option::is_none")]
697 pub first_event_timestamp: Option<i64>,
698 #[serde(skip_serializing_if = "Option::is_none")]
699 pub last_event_timestamp: Option<i64>,
700 #[serde(skip_serializing_if = "Option::is_none")]
701 pub last_ingestion_time: Option<i64>,
702 #[serde(skip_serializing_if = "Option::is_none")]
703 pub log_stream_name: Option<String>,
704 #[serde(skip_serializing_if = "Option::is_none")]
705 pub stored_bytes: Option<i64>,
706 #[serde(skip_serializing_if = "Option::is_none")]
707 pub upload_sequence_token: Option<String>,
708}
709
710#[derive(Debug, Clone, Default, Serialize, Deserialize)]
712#[serde(rename_all = "camelCase")]
713pub struct MetricFilter {
714 #[serde(skip_serializing_if = "Option::is_none")]
715 pub apply_on_transformed_logs: Option<bool>,
716 #[serde(skip_serializing_if = "Option::is_none")]
717 pub creation_time: Option<i64>,
718 #[serde(default, skip_serializing_if = "Vec::is_empty")]
719 pub emit_system_field_dimensions: Vec<String>,
720 #[serde(skip_serializing_if = "Option::is_none")]
721 pub field_selection_criteria: Option<String>,
722 #[serde(skip_serializing_if = "Option::is_none")]
723 pub filter_name: Option<String>,
724 #[serde(skip_serializing_if = "Option::is_none")]
725 pub filter_pattern: Option<String>,
726 #[serde(skip_serializing_if = "Option::is_none")]
727 pub log_group_name: Option<String>,
728 #[serde(default, skip_serializing_if = "Vec::is_empty")]
729 pub metric_transformations: Vec<MetricTransformation>,
730}
731
732#[derive(Debug, Clone, Default, Serialize, Deserialize)]
734#[serde(rename_all = "camelCase")]
735pub struct MetricFilterMatchRecord {
736 #[serde(skip_serializing_if = "Option::is_none")]
737 pub event_message: Option<String>,
738 #[serde(skip_serializing_if = "Option::is_none")]
739 pub event_number: Option<i64>,
740 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
741 pub extracted_values: HashMap<String, String>,
742}
743
744#[derive(Debug, Clone, Default, Serialize, Deserialize)]
746#[serde(rename_all = "camelCase")]
747pub struct MetricTransformation {
748 #[serde(skip_serializing_if = "Option::is_none")]
749 pub default_value: Option<f64>,
750 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
751 pub dimensions: HashMap<String, String>,
752 pub metric_name: String,
753 pub metric_namespace: String,
754 pub metric_value: String,
755 #[serde(skip_serializing_if = "Option::is_none")]
756 pub unit: Option<StandardUnit>,
757}
758
759#[derive(Debug, Clone, Default, Serialize, Deserialize)]
761#[serde(rename_all = "camelCase")]
762pub struct OutputLogEvent {
763 #[serde(skip_serializing_if = "Option::is_none")]
764 pub ingestion_time: Option<i64>,
765 #[serde(skip_serializing_if = "Option::is_none")]
766 pub message: Option<String>,
767 #[serde(skip_serializing_if = "Option::is_none")]
768 pub timestamp: Option<i64>,
769}
770
771#[derive(Debug, Clone, Default, Serialize, Deserialize)]
773#[serde(rename_all = "camelCase")]
774pub struct QueryDefinition {
775 #[serde(skip_serializing_if = "Option::is_none")]
776 pub last_modified: Option<i64>,
777 #[serde(default, skip_serializing_if = "Vec::is_empty")]
778 pub log_group_names: Vec<String>,
779 #[serde(skip_serializing_if = "Option::is_none")]
780 pub name: Option<String>,
781 #[serde(skip_serializing_if = "Option::is_none")]
782 pub query_definition_id: Option<String>,
783 #[serde(skip_serializing_if = "Option::is_none")]
784 pub query_language: Option<QueryLanguage>,
785 #[serde(skip_serializing_if = "Option::is_none")]
786 pub query_string: Option<String>,
787}
788
789#[derive(Debug, Clone, Default, Serialize, Deserialize)]
791#[serde(rename_all = "camelCase")]
792pub struct QueryInfo {
793 #[serde(skip_serializing_if = "Option::is_none")]
794 pub create_time: Option<i64>,
795 #[serde(skip_serializing_if = "Option::is_none")]
796 pub log_group_name: Option<String>,
797 #[serde(skip_serializing_if = "Option::is_none")]
798 pub query_id: Option<String>,
799 #[serde(skip_serializing_if = "Option::is_none")]
800 pub query_language: Option<QueryLanguage>,
801 #[serde(skip_serializing_if = "Option::is_none")]
802 pub query_string: Option<String>,
803 #[serde(skip_serializing_if = "Option::is_none")]
804 pub status: Option<QueryStatus>,
805}
806
807#[derive(Debug, Clone, Default, Serialize, Deserialize)]
809#[serde(rename_all = "camelCase")]
810pub struct QueryStatistics {
811 #[serde(skip_serializing_if = "Option::is_none")]
812 pub bytes_scanned: Option<f64>,
813 #[serde(skip_serializing_if = "Option::is_none")]
814 pub estimated_bytes_skipped: Option<f64>,
815 #[serde(skip_serializing_if = "Option::is_none")]
816 pub estimated_records_skipped: Option<f64>,
817 #[serde(skip_serializing_if = "Option::is_none")]
818 pub log_groups_scanned: Option<f64>,
819 #[serde(skip_serializing_if = "Option::is_none")]
820 pub records_matched: Option<f64>,
821 #[serde(skip_serializing_if = "Option::is_none")]
822 pub records_scanned: Option<f64>,
823}
824
825#[derive(Debug, Clone, Default, Serialize, Deserialize)]
827#[serde(rename_all = "camelCase")]
828pub struct RejectedEntityInfo {
829 pub error_type: EntityRejectionErrorType,
830}
831
832#[derive(Debug, Clone, Default, Serialize, Deserialize)]
834#[serde(rename_all = "camelCase")]
835pub struct RejectedLogEventsInfo {
836 #[serde(skip_serializing_if = "Option::is_none")]
837 pub expired_log_event_end_index: Option<i32>,
838 #[serde(skip_serializing_if = "Option::is_none")]
839 pub too_new_log_event_start_index: Option<i32>,
840 #[serde(skip_serializing_if = "Option::is_none")]
841 pub too_old_log_event_end_index: Option<i32>,
842}
843
844#[derive(Debug, Clone, Default, Serialize, Deserialize)]
846#[serde(rename_all = "camelCase")]
847pub struct ResourcePolicy {
848 #[serde(skip_serializing_if = "Option::is_none")]
849 pub last_updated_time: Option<i64>,
850 #[serde(skip_serializing_if = "Option::is_none")]
851 pub policy_document: Option<String>,
852 #[serde(skip_serializing_if = "Option::is_none")]
853 pub policy_name: Option<String>,
854 #[serde(skip_serializing_if = "Option::is_none")]
855 pub policy_scope: Option<PolicyScope>,
856 #[serde(skip_serializing_if = "Option::is_none")]
857 pub resource_arn: Option<String>,
858 #[serde(skip_serializing_if = "Option::is_none")]
859 pub revision_id: Option<String>,
860}
861
862#[derive(Debug, Clone, Default, Serialize, Deserialize)]
864#[serde(rename_all = "camelCase")]
865pub struct ResultField {
866 #[serde(skip_serializing_if = "Option::is_none")]
867 pub field: Option<String>,
868 #[serde(skip_serializing_if = "Option::is_none")]
869 pub value: Option<String>,
870}
871
872#[derive(Debug, Clone, Default, Serialize, Deserialize)]
874#[serde(rename_all = "camelCase")]
875pub struct SearchedLogStream {
876 #[serde(skip_serializing_if = "Option::is_none")]
877 pub log_stream_name: Option<String>,
878 #[serde(skip_serializing_if = "Option::is_none")]
879 pub searched_completely: Option<bool>,
880}
881
882#[derive(Debug, Clone, Default, Serialize, Deserialize)]
884#[serde(rename_all = "camelCase")]
885pub struct SubscriptionFilter {
886 #[serde(skip_serializing_if = "Option::is_none")]
887 pub apply_on_transformed_logs: Option<bool>,
888 #[serde(skip_serializing_if = "Option::is_none")]
889 pub creation_time: Option<i64>,
890 #[serde(skip_serializing_if = "Option::is_none")]
891 pub destination_arn: Option<String>,
892 #[serde(skip_serializing_if = "Option::is_none")]
893 pub distribution: Option<Distribution>,
894 #[serde(default, skip_serializing_if = "Vec::is_empty")]
895 pub emit_system_fields: Vec<String>,
896 #[serde(skip_serializing_if = "Option::is_none")]
897 pub field_selection_criteria: Option<String>,
898 #[serde(skip_serializing_if = "Option::is_none")]
899 pub filter_name: Option<String>,
900 #[serde(skip_serializing_if = "Option::is_none")]
901 pub filter_pattern: Option<String>,
902 #[serde(skip_serializing_if = "Option::is_none")]
903 pub log_group_name: Option<String>,
904 #[serde(skip_serializing_if = "Option::is_none")]
905 pub role_arn: Option<String>,
906}