diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index e2256f32b..04212e969 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -15217,6 +15217,87 @@ components: - findings - project type: object + CreateMaintenanceRequest: + example: + data: + attributes: + completed_date: '2026-02-18T19:51:13.332360075Z' + completed_description: We have completed maintenance on the API to improve + performance. + components_affected: + - id: 1234abcd-12ab-34cd-56ef-123456abcdef + status: operational + in_progress_description: We are currently performing maintenance on the + API to improve performance. + scheduled_description: We will be performing maintenance on the API to + improve performance. + start_date: '2026-02-18T19:21:13.332360075Z' + title: API Maintenance + type: maintenances + properties: + data: + $ref: '#/components/schemas/CreateMaintenanceRequestData' + type: object + CreateMaintenanceRequestData: + properties: + attributes: + $ref: '#/components/schemas/CreateMaintenanceRequestDataAttributes' + type: + $ref: '#/components/schemas/PatchMaintenanceRequestDataType' + required: + - attributes + - type + type: object + CreateMaintenanceRequestDataAttributes: + description: The supported attributes for creating a maintenance. + properties: + completed_date: + description: Timestamp of when the maintenance was completed. + format: date-time + type: string + completed_description: + description: The description shown when the maintenance is completed. + type: string + components_affected: + description: The components affected by the maintenance. + items: + $ref: '#/components/schemas/CreateMaintenanceRequestDataAttributesComponentsAffectedItems' + type: array + in_progress_description: + description: The description shown while the maintenance is in progress. + type: string + scheduled_description: + description: The description shown when the maintenance is scheduled. + type: string + start_date: + description: Timestamp of when the maintenance is scheduled to start. + format: date-time + type: string + title: + description: The title of the maintenance. + example: API Maintenance + type: string + required: + - components_affected + - title + type: object + CreateMaintenanceRequestDataAttributesComponentsAffectedItems: + properties: + id: + description: The ID of the component. Must be a component of type `component`. + example: 1234abcd-12ab-34cd-56ef-123456abcdef + format: uuid + type: string + name: + description: The name of the component. + readOnly: true + type: string + status: + $ref: '#/components/schemas/PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus' + required: + - id + - status + type: object CreateNotificationChannelAttributes: description: Attributes for creating an on-call notification channel. properties: @@ -19989,7 +20070,7 @@ components: description: The included related resources of a degradation. Client must explicitly request these resources by name in the `include` query parameter. items: - $ref: '#/components/schemas/DegradationArrayIncluded' + $ref: '#/components/schemas/DegradationIncluded' type: array type: object DegradationArray: @@ -20002,17 +20083,13 @@ components: description: The included related resources of a degradation. Client must explicitly request these resources by name in the `include` query parameter. items: - $ref: '#/components/schemas/DegradationArrayIncluded' + $ref: '#/components/schemas/DegradationIncluded' type: array meta: - $ref: '#/components/schemas/StatusPagesResponseMeta' + $ref: '#/components/schemas/PaginationMeta' required: - data type: object - DegradationArrayIncluded: - oneOf: - - $ref: '#/components/schemas/StatusPagesUser' - - $ref: '#/components/schemas/StatusPageAsIncluded' DegradationData: properties: attributes: @@ -20047,6 +20124,8 @@ components: description: Timestamp of when the degradation was last modified. format: date-time type: string + source: + $ref: '#/components/schemas/DegradationDataAttributesSource' status: $ref: '#/components/schemas/CreateDegradationRequestDataAttributesStatus' title: @@ -20075,6 +20154,33 @@ components: - id - status type: object + DegradationDataAttributesSource: + description: The source of the degradation. + properties: + created_at: + description: Timestamp of when the source was created. + example: '' + format: date-time + type: string + source_id: + description: The ID of the source. + example: '' + type: string + type: + $ref: '#/components/schemas/DegradationDataAttributesSourceType' + required: + - created_at + - source_id + - type + type: object + DegradationDataAttributesSourceType: + description: The type of the source. + enum: + - incident + example: incident + type: string + x-enum-varnames: + - INCIDENT DegradationDataAttributesUpdatesItems: properties: components_affected: @@ -20100,6 +20206,10 @@ components: format: date-time readOnly: true type: string + started_at: + description: Timestamp of when the update started. + format: date-time + type: string status: $ref: '#/components/schemas/CreateDegradationRequestDataAttributesStatus' type: object @@ -20192,6 +20302,10 @@ components: - type - id type: object + DegradationIncluded: + oneOf: + - $ref: '#/components/schemas/StatusPagesUser' + - $ref: '#/components/schemas/StatusPageAsIncluded' DeleteAppResponse: description: The response object after an app is successfully deleted. properties: @@ -36955,6 +37069,251 @@ components: - ms_channel_name - redirect_url type: object + Maintenance: + properties: + data: + $ref: '#/components/schemas/MaintenanceData' + included: + description: The included related resources of a maintenance. Client must + explicitly request these resources by name in the `include` query parameter. + items: + $ref: '#/components/schemas/DegradationIncluded' + type: array + type: object + MaintenanceArray: + properties: + data: + items: + $ref: '#/components/schemas/MaintenanceData' + type: array + included: + description: The included related resources of a maintenance. Client must + explicitly request these resources by name in the `include` query parameter. + items: + $ref: '#/components/schemas/DegradationIncluded' + type: array + meta: + $ref: '#/components/schemas/PaginationMeta' + required: + - data + type: object + MaintenanceData: + properties: + attributes: + $ref: '#/components/schemas/MaintenanceDataAttributes' + id: + description: The ID of the maintenance. + format: uuid + type: string + relationships: + $ref: '#/components/schemas/MaintenanceDataRelationships' + type: + $ref: '#/components/schemas/PatchMaintenanceRequestDataType' + required: + - type + type: object + MaintenanceDataAttributes: + description: The attributes of a maintenance. + properties: + completed_date: + description: Timestamp of when the maintenance was completed. + format: date-time + type: string + completed_description: + description: The description shown when the maintenance is completed. + type: string + components_affected: + description: Components affected by the maintenance. + items: + $ref: '#/components/schemas/MaintenanceDataAttributesComponentsAffectedItems' + type: array + in_progress_description: + description: The description shown while the maintenance is in progress. + type: string + modified_at: + description: Timestamp of when the maintenance was last modified. + format: date-time + type: string + published_date: + description: Timestamp of when the maintenance was published. + format: date-time + type: string + scheduled_description: + description: The description shown when the maintenance is scheduled. + type: string + start_date: + description: Timestamp of when the maintenance is scheduled to start. + format: date-time + type: string + status: + $ref: '#/components/schemas/MaintenanceDataAttributesStatus' + description: The status of the maintenance. + title: + description: Title of the maintenance. + type: string + updates: + description: Past updates made to the maintenance. + items: + $ref: '#/components/schemas/MaintenanceDataAttributesUpdatesItems' + type: array + type: object + MaintenanceDataAttributesComponentsAffectedItems: + properties: + id: + description: The ID of the component. Must be a component of type `component`. + example: 1234abcd-12ab-34cd-56ef-123456abcdef + format: uuid + type: string + name: + description: The name of the component. + readOnly: true + type: string + status: + $ref: '#/components/schemas/PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus' + required: + - id + - status + type: object + MaintenanceDataAttributesStatus: + description: The status of the maintenance. + enum: + - scheduled + - in_progress + - completed + type: string + x-enum-varnames: + - SCHEDULED + - IN_PROGRESS + - COMPLETED + MaintenanceDataAttributesUpdatesItems: + properties: + components_affected: + description: The components affected at the time of the update. + items: + $ref: '#/components/schemas/MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems' + type: array + created_at: + description: Timestamp of when the update was created. + format: date-time + readOnly: true + type: string + description: + description: Description of the update. + type: string + id: + description: Identifier of the update. + format: uuid + readOnly: true + type: string + manual_transition: + description: Whether the update was applied manually by a user (true) or + automatically by the system (false). + readOnly: true + type: boolean + modified_at: + description: Timestamp of when the update was last modified. + format: date-time + readOnly: true + type: string + started_at: + description: Timestamp of when the update started. + format: date-time + type: string + status: + description: The status of the update. + type: string + type: object + MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems: + properties: + id: + description: Identifier of the component affected at the time of the update. + example: 1234abcd-12ab-34cd-56ef-123456abcdef + format: uuid + type: string + name: + description: The name of the component affected at the time of the update. + readOnly: true + type: string + status: + $ref: '#/components/schemas/PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus' + description: The status of the component affected at the time of the update. + required: + - id + - status + type: object + MaintenanceDataRelationships: + description: The relationships of a maintenance. + properties: + created_by_user: + $ref: '#/components/schemas/MaintenanceDataRelationshipsCreatedByUser' + description: The Datadog user who created the maintenance. + last_modified_by_user: + $ref: '#/components/schemas/MaintenanceDataRelationshipsLastModifiedByUser' + description: The Datadog user who last modified the maintenance. + status_page: + $ref: '#/components/schemas/MaintenanceDataRelationshipsStatusPage' + description: The status page the maintenance belongs to. + type: object + MaintenanceDataRelationshipsCreatedByUser: + properties: + data: + $ref: '#/components/schemas/MaintenanceDataRelationshipsCreatedByUserData' + required: + - data + type: object + MaintenanceDataRelationshipsCreatedByUserData: + properties: + id: + description: The ID of the Datadog user who created the maintenance. + example: '' + format: uuid + type: string + type: + $ref: '#/components/schemas/StatusPagesUserType' + required: + - type + - id + type: object + MaintenanceDataRelationshipsLastModifiedByUser: + properties: + data: + $ref: '#/components/schemas/MaintenanceDataRelationshipsLastModifiedByUserData' + required: + - data + type: object + MaintenanceDataRelationshipsLastModifiedByUserData: + properties: + id: + description: The ID of the Datadog user who last modified the maintenance. + example: '' + format: uuid + type: string + type: + $ref: '#/components/schemas/StatusPagesUserType' + required: + - type + - id + type: object + MaintenanceDataRelationshipsStatusPage: + properties: + data: + $ref: '#/components/schemas/MaintenanceDataRelationshipsStatusPageData' + required: + - data + type: object + MaintenanceDataRelationshipsStatusPageData: + properties: + id: + description: The ID of the status page. + example: '' + format: uuid + type: string + type: + $ref: '#/components/schemas/StatusPageDataType' + required: + - type + - id + type: object MemberTeam: description: A member team properties: @@ -46755,6 +47114,80 @@ components: format: int64 type: integer type: object + PaginationMeta: + description: Response metadata. + properties: + page: + $ref: '#/components/schemas/PaginationMetaPage' + readOnly: true + type: object + PaginationMetaPage: + description: Offset-based pagination schema. + example: + first_offset: 0 + last_offset: 900 + limit: 100 + next_offset: 100 + offset: 0 + prev_offset: 100 + total: 1000 + type: offset_limit + properties: + first_offset: + description: Integer representing the offset to fetch the first page of + results. + example: 0 + format: int64 + type: integer + last_offset: + description: Integer representing the offset to fetch the last page of results. + example: 900 + format: int64 + nullable: true + type: integer + limit: + description: Integer representing the number of elements to be returned + in the results. + example: 100 + format: int64 + type: integer + next_offset: + description: Integer representing the index of the first element in the + next page of results. Equal to page size added to the current offset. + example: 100 + format: int64 + nullable: true + type: integer + offset: + description: Integer representing the index of the first element in the + results. + example: 0 + format: int64 + type: integer + prev_offset: + description: Integer representing the index of the first element in the + previous page of results. + example: 100 + format: int64 + nullable: true + type: integer + total: + description: Integer representing the total number of elements available. + example: 1000 + format: int64 + nullable: true + type: integer + type: + $ref: '#/components/schemas/PaginationMetaPageType' + type: object + PaginationMetaPageType: + default: offset_limit + enum: + - offset_limit + example: offset_limit + type: string + x-enum-varnames: + - OFFSET_LIMIT Parameter: description: The definition of `Parameter` object. properties: @@ -47062,6 +47495,107 @@ components: required: - data type: object + PatchMaintenanceRequest: + example: + data: + attributes: + completed_date: '2026-02-18T20:01:13.332360075Z' + in_progress_description: We are currently performing maintenance on the + API to improve performance for 40 minutes. + scheduled_description: We will be performing maintenance on the API to + improve performance for 40 minutes. + start_date: '2026-02-18T19:21:13.332360075Z' + title: API Maintenance + id: 1234abcd-12ab-34cd-56ef-123456abcdef + type: maintenances + properties: + data: + $ref: '#/components/schemas/PatchMaintenanceRequestData' + type: object + PatchMaintenanceRequestData: + properties: + attributes: + $ref: '#/components/schemas/PatchMaintenanceRequestDataAttributes' + id: + description: The ID of the maintenance. + example: 1234abcd-12ab-34cd-56ef-123456abcdef + format: uuid + type: string + type: + $ref: '#/components/schemas/PatchMaintenanceRequestDataType' + required: + - attributes + - type + - id + type: object + PatchMaintenanceRequestDataAttributes: + description: The supported attributes for updating a maintenance. + properties: + completed_date: + description: Timestamp of when the maintenance was completed. + format: date-time + type: string + completed_description: + description: The description shown when the maintenance is completed. + type: string + components_affected: + description: The components affected by the maintenance. + items: + $ref: '#/components/schemas/PatchMaintenanceRequestDataAttributesComponentsAffectedItems' + type: array + in_progress_description: + description: The description shown while the maintenance is in progress. + type: string + scheduled_description: + description: The description shown when the maintenance is scheduled. + type: string + start_date: + description: Timestamp of when the maintenance is scheduled to start. + format: date-time + type: string + status: + $ref: '#/components/schemas/MaintenanceDataAttributesStatus' + description: The status of the maintenance. + title: + description: The title of the maintenance. + type: string + type: object + PatchMaintenanceRequestDataAttributesComponentsAffectedItems: + properties: + id: + description: The ID of the component. Must be a component of type `component`. + example: 1234abcd-12ab-34cd-56ef-123456abcdef + format: uuid + type: string + name: + description: The name of the component. + readOnly: true + type: string + status: + $ref: '#/components/schemas/PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus' + required: + - id + - status + type: object + PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus: + description: The status of the component. + enum: + - operational + - maintenance + example: operational + type: string + x-enum-varnames: + - OPERATIONAL + - MAINTENANCE + PatchMaintenanceRequestDataType: + default: maintenances + description: Maintenances resource type. + enum: + - maintenances + example: maintenances + type: string + x-enum-varnames: + - MAINTENANCES PatchNotificationRuleParameters: description: Body of the notification rule patch request. properties: @@ -63047,7 +63581,7 @@ components: $ref: '#/components/schemas/StatusPageArrayIncluded' type: array meta: - $ref: '#/components/schemas/StatusPagesResponseMeta' + $ref: '#/components/schemas/PaginationMeta' required: - data type: object @@ -63486,6 +64020,7 @@ components: - degraded - partial_outage - major_outage + - maintenance example: operational type: string x-enum-varnames: @@ -63493,6 +64028,7 @@ components: - DEGRADED - PARTIAL_OUTAGE - MAJOR_OUTAGE + - MAINTENANCE StatusPagesComponentDataRelationships: description: The relationships of a component. properties: @@ -63662,6 +64198,7 @@ components: - degraded - partial_outage - major_outage + - maintenance readOnly: true type: string x-enum-varnames: @@ -63669,6 +64206,7 @@ components: - DEGRADED - PARTIAL_OUTAGE - MAJOR_OUTAGE + - MAINTENANCE StatusPagesComponentGroupAttributesComponentsItemsType: description: The type of the component. enum: @@ -63781,71 +64319,6 @@ components: type: string x-enum-varnames: - COMPONENTS - StatusPagesPagination: - description: Offset-based pagination schema. - properties: - first_offset: - description: Integer representing the offset to fetch the first page of - results. - example: 0 - format: int64 - type: integer - last_offset: - description: Integer representing the offset to fetch the last page of results. - example: 900 - format: int64 - nullable: true - type: integer - limit: - description: Integer representing the number of elements to returned in - the results. - example: 100 - format: int64 - type: integer - next_offset: - description: Integer representing the index of the first element in the - next page of results. Equal to page size added to the current offset. - example: 100 - format: int64 - nullable: true - type: integer - offset: - description: Integer representing the index of the first element in the - results. - example: 0 - format: int64 - type: integer - prev_offset: - description: Integer representing the index of the first element in the - previous page of results. - example: 100 - format: int64 - nullable: true - type: integer - total: - description: Integer representing the total number of elements available. - example: 1000 - format: int64 - nullable: true - type: integer - type: - $ref: '#/components/schemas/StatusPagesPaginationType' - type: object - StatusPagesPaginationType: - default: offset_limit - enum: - - offset_limit - example: offset_limit - type: string - x-enum-varnames: - - OFFSET_LIMIT - StatusPagesResponseMeta: - description: Response metadata. - properties: - page: - $ref: '#/components/schemas/StatusPagesPagination' - readOnly: true - type: object StatusPagesUser: description: The included Datadog user resource. properties: @@ -103172,6 +103645,12 @@ paths: name: filter[status] schema: type: string + - description: 'Sort order. Prefix with ''-'' for descending. Supported values: + created_at, -created_at, modified_at, -modified_at.' + in: query + name: sort + schema: + type: string responses: '200': content: @@ -103192,6 +103671,67 @@ paths: operator: AND permissions: - status_pages_settings_read + /api/v2/statuspages/maintenances: + get: + description: Lists all maintenances for the organization. Optionally filter + by status and page. + operationId: ListMaintenances + parameters: + - description: Optional page id filter. + in: query + name: filter[page_id] + schema: + type: string + - description: Offset to use as the start of the page. + in: query + name: page[offset] + schema: + default: 0 + type: integer + - description: The number of maintenances to return per page. + in: query + name: page[limit] + schema: + default: 50 + type: integer + - description: 'Comma-separated list of resources to include. Supported values: + created_by_user, last_modified_by_user, status_page.' + in: query + name: include + schema: + type: string + - description: 'Optional maintenance status filter. Supported values: scheduled, + in_progress, completed.' + in: query + name: filter[status] + schema: + type: string + - description: 'Sort order. Prefix with ''-'' for descending. Supported values: + created_at, -created_at, start_date, -start_date.' + in: query + name: sort + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/MaintenanceArray' + description: OK + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: [] + summary: List maintenances + tags: + - Status Pages + x-permission: + operator: AND + permissions: + - status_pages_settings_read /api/v2/statuspages/{page_id}: delete: description: Deletes a status page by its ID. @@ -103720,6 +104260,157 @@ paths: operator: AND permissions: - status_pages_incident_write + /api/v2/statuspages/{page_id}/maintenances: + post: + description: Schedules a new maintenance. + operationId: CreateMaintenance + parameters: + - description: The ID of the status page. + in: path + name: page_id + required: true + schema: + format: uuid + type: string + - description: Whether to notify page subscribers of the maintenance. + in: query + name: notify_subscribers + schema: + default: true + type: boolean + - description: 'Comma-separated list of resources to include. Supported values: + created_by_user, last_modified_by_user, status_page.' + in: query + name: include + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateMaintenanceRequest' + required: true + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/Maintenance' + description: Created + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: [] + summary: Schedule maintenance + tags: + - Status Pages + x-permission: + operator: AND + permissions: + - status_pages_incident_write + /api/v2/statuspages/{page_id}/maintenances/{maintenance_id}: + get: + description: Retrieves a specific maintenance by its ID. + operationId: GetMaintenance + parameters: + - description: The ID of the status page. + in: path + name: page_id + required: true + schema: + format: uuid + type: string + - description: The ID of the maintenance. + in: path + name: maintenance_id + required: true + schema: + format: uuid + type: string + - description: 'Comma-separated list of resources to include. Supported values: + created_by_user, last_modified_by_user, status_page.' + in: query + name: include + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Maintenance' + description: OK + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: [] + summary: Get maintenance + tags: + - Status Pages + x-permission: + operator: AND + permissions: + - status_pages_settings_read + patch: + description: Updates an existing maintenance's attributes. + operationId: UpdateMaintenance + parameters: + - description: The ID of the status page. + in: path + name: page_id + required: true + schema: + format: uuid + type: string + - description: Whether to notify page subscribers of the maintenance. + in: query + name: notify_subscribers + schema: + default: true + type: boolean + - description: The ID of the maintenance. + in: path + name: maintenance_id + required: true + schema: + format: uuid + type: string + - description: 'Comma-separated list of resources to include. Supported values: + created_by_user, last_modified_by_user, status_page.' + in: query + name: include + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchMaintenanceRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Maintenance' + description: OK + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: [] + summary: Update maintenance + tags: + - Status Pages + x-permission: + operator: AND + permissions: + - status_pages_incident_write /api/v2/synthetics/settings/on_demand_concurrency_cap: get: description: Get the on-demand concurrency cap. diff --git a/examples/v2_status-pages_CreateMaintenance.rs b/examples/v2_status-pages_CreateMaintenance.rs new file mode 100644 index 000000000..b170ca54f --- /dev/null +++ b/examples/v2_status-pages_CreateMaintenance.rs @@ -0,0 +1,62 @@ +// Schedule maintenance returns "Created" response +use chrono::{DateTime, Utc}; +use datadog_api_client::datadog; +use datadog_api_client::datadogV2::api_status_pages::CreateMaintenanceOptionalParams; +use datadog_api_client::datadogV2::api_status_pages::StatusPagesAPI; +use datadog_api_client::datadogV2::model::CreateMaintenanceRequest; +use datadog_api_client::datadogV2::model::CreateMaintenanceRequestData; +use datadog_api_client::datadogV2::model::CreateMaintenanceRequestDataAttributes; +use datadog_api_client::datadogV2::model::CreateMaintenanceRequestDataAttributesComponentsAffectedItems; +use datadog_api_client::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus; +use datadog_api_client::datadogV2::model::PatchMaintenanceRequestDataType; +use uuid::Uuid; + +#[tokio::main] +async fn main() { + let body = CreateMaintenanceRequest::new().data(CreateMaintenanceRequestData::new( + CreateMaintenanceRequestDataAttributes::new( + vec![ + CreateMaintenanceRequestDataAttributesComponentsAffectedItems::new( + Uuid::parse_str("1234abcd-12ab-34cd-56ef-123456abcdef").expect("invalid UUID"), + PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus::OPERATIONAL, + ), + ], + "API Maintenance".to_string(), + ) + .completed_date( + DateTime::parse_from_rfc3339("2026-02-18T19:51:13.332360+00:00") + .expect("Failed to parse datetime") + .with_timezone(&Utc), + ) + .completed_description( + "We have completed maintenance on the API to improve performance.".to_string(), + ) + .in_progress_description( + "We are currently performing maintenance on the API to improve performance." + .to_string(), + ) + .scheduled_description( + "We will be performing maintenance on the API to improve performance.".to_string(), + ) + .start_date( + DateTime::parse_from_rfc3339("2026-02-18T19:21:13.332360+00:00") + .expect("Failed to parse datetime") + .with_timezone(&Utc), + ), + PatchMaintenanceRequestDataType::MAINTENANCES, + )); + let configuration = datadog::Configuration::new(); + let api = StatusPagesAPI::with_config(configuration); + let resp = api + .create_maintenance( + Uuid::parse_str("00000000-0000-0000-0000-000000000000").expect("invalid UUID"), + body, + CreateMaintenanceOptionalParams::default(), + ) + .await; + if let Ok(value) = resp { + println!("{:#?}", value); + } else { + println!("{:#?}", resp.unwrap_err()); + } +} diff --git a/examples/v2_status-pages_CreateMaintenance_2202276054.rs b/examples/v2_status-pages_CreateMaintenance_2202276054.rs new file mode 100644 index 000000000..2929df8f3 --- /dev/null +++ b/examples/v2_status-pages_CreateMaintenance_2202276054.rs @@ -0,0 +1,68 @@ +// Create maintenance returns "Created" response +use chrono::{DateTime, Utc}; +use datadog_api_client::datadog; +use datadog_api_client::datadogV2::api_status_pages::CreateMaintenanceOptionalParams; +use datadog_api_client::datadogV2::api_status_pages::StatusPagesAPI; +use datadog_api_client::datadogV2::model::CreateMaintenanceRequest; +use datadog_api_client::datadogV2::model::CreateMaintenanceRequestData; +use datadog_api_client::datadogV2::model::CreateMaintenanceRequestDataAttributes; +use datadog_api_client::datadogV2::model::CreateMaintenanceRequestDataAttributesComponentsAffectedItems; +use datadog_api_client::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus; +use datadog_api_client::datadogV2::model::PatchMaintenanceRequestDataType; + +#[tokio::main] +async fn main() { + // there is a valid "status_page" in the system + let status_page_data_attributes_components_0_components_0_id = uuid::Uuid::parse_str( + &std::env::var("STATUS_PAGE_DATA_ATTRIBUTES_COMPONENTS_0_COMPONENTS_0_ID").unwrap(), + ) + .expect("Invalid UUID"); + let status_page_data_id = uuid::Uuid::parse_str(&std::env::var("STATUS_PAGE_DATA_ID").unwrap()) + .expect("Invalid UUID"); + let body = CreateMaintenanceRequest::new().data(CreateMaintenanceRequestData::new( + CreateMaintenanceRequestDataAttributes::new( + vec![ + CreateMaintenanceRequestDataAttributesComponentsAffectedItems::new( + status_page_data_attributes_components_0_components_0_id.clone(), + PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus::OPERATIONAL, + ), + ], + "API Maintenance".to_string(), + ) + .completed_date( + DateTime::parse_from_rfc3339("2021-11-11T13:11:11+00:00") + .expect("Failed to parse datetime") + .with_timezone(&Utc), + ) + .completed_description( + "We have completed maintenance on the API to improve performance.".to_string(), + ) + .in_progress_description( + "We are currently performing maintenance on the API to improve performance." + .to_string(), + ) + .scheduled_description( + "We will be performing maintenance on the API to improve performance.".to_string(), + ) + .start_date( + DateTime::parse_from_rfc3339("2021-11-11T12:11:11+00:00") + .expect("Failed to parse datetime") + .with_timezone(&Utc), + ), + PatchMaintenanceRequestDataType::MAINTENANCES, + )); + let configuration = datadog::Configuration::new(); + let api = StatusPagesAPI::with_config(configuration); + let resp = api + .create_maintenance( + status_page_data_id.clone(), + body, + CreateMaintenanceOptionalParams::default(), + ) + .await; + if let Ok(value) = resp { + println!("{:#?}", value); + } else { + println!("{:#?}", resp.unwrap_err()); + } +} diff --git a/examples/v2_status-pages_GetMaintenance.rs b/examples/v2_status-pages_GetMaintenance.rs new file mode 100644 index 000000000..a108ab54f --- /dev/null +++ b/examples/v2_status-pages_GetMaintenance.rs @@ -0,0 +1,29 @@ +// Get maintenance returns "OK" response +use datadog_api_client::datadog; +use datadog_api_client::datadogV2::api_status_pages::GetMaintenanceOptionalParams; +use datadog_api_client::datadogV2::api_status_pages::StatusPagesAPI; + +#[tokio::main] +async fn main() { + // there is a valid "status_page" in the system + let status_page_data_id = uuid::Uuid::parse_str(&std::env::var("STATUS_PAGE_DATA_ID").unwrap()) + .expect("Invalid UUID"); + + // there is a valid "maintenance" in the system + let maintenance_data_id = uuid::Uuid::parse_str(&std::env::var("MAINTENANCE_DATA_ID").unwrap()) + .expect("Invalid UUID"); + let configuration = datadog::Configuration::new(); + let api = StatusPagesAPI::with_config(configuration); + let resp = api + .get_maintenance( + status_page_data_id.clone(), + maintenance_data_id.clone(), + GetMaintenanceOptionalParams::default(), + ) + .await; + if let Ok(value) = resp { + println!("{:#?}", value); + } else { + println!("{:#?}", resp.unwrap_err()); + } +} diff --git a/examples/v2_status-pages_ListMaintenances.rs b/examples/v2_status-pages_ListMaintenances.rs new file mode 100644 index 000000000..378cffe94 --- /dev/null +++ b/examples/v2_status-pages_ListMaintenances.rs @@ -0,0 +1,18 @@ +// List maintenances returns "OK" response +use datadog_api_client::datadog; +use datadog_api_client::datadogV2::api_status_pages::ListMaintenancesOptionalParams; +use datadog_api_client::datadogV2::api_status_pages::StatusPagesAPI; + +#[tokio::main] +async fn main() { + let configuration = datadog::Configuration::new(); + let api = StatusPagesAPI::with_config(configuration); + let resp = api + .list_maintenances(ListMaintenancesOptionalParams::default()) + .await; + if let Ok(value) = resp { + println!("{:#?}", value); + } else { + println!("{:#?}", resp.unwrap_err()); + } +} diff --git a/examples/v2_status-pages_UpdateMaintenance.rs b/examples/v2_status-pages_UpdateMaintenance.rs new file mode 100644 index 000000000..b7d1f0b8d --- /dev/null +++ b/examples/v2_status-pages_UpdateMaintenance.rs @@ -0,0 +1,49 @@ +// Update maintenance returns "OK" response +use datadog_api_client::datadog; +use datadog_api_client::datadogV2::api_status_pages::StatusPagesAPI; +use datadog_api_client::datadogV2::api_status_pages::UpdateMaintenanceOptionalParams; +use datadog_api_client::datadogV2::model::PatchMaintenanceRequest; +use datadog_api_client::datadogV2::model::PatchMaintenanceRequestData; +use datadog_api_client::datadogV2::model::PatchMaintenanceRequestDataAttributes; +use datadog_api_client::datadogV2::model::PatchMaintenanceRequestDataType; + +#[tokio::main] +async fn main() { + // there is a valid "status_page" in the system + let status_page_data_id = uuid::Uuid::parse_str(&std::env::var("STATUS_PAGE_DATA_ID").unwrap()) + .expect("Invalid UUID"); + + // there is a valid "maintenance" in the system + let maintenance_data_id = uuid::Uuid::parse_str(&std::env::var("MAINTENANCE_DATA_ID").unwrap()) + .expect("Invalid UUID"); + let body = + PatchMaintenanceRequest + ::new().data( + PatchMaintenanceRequestData::new( + PatchMaintenanceRequestDataAttributes::new() + .in_progress_description( + "We are currently performing maintenance on the API to improve performance for 40 minutes.".to_string(), + ) + .scheduled_description( + "We will be performing maintenance on the API to improve performance for 40 minutes.".to_string(), + ), + maintenance_data_id.clone(), + PatchMaintenanceRequestDataType::MAINTENANCES, + ), + ); + let configuration = datadog::Configuration::new(); + let api = StatusPagesAPI::with_config(configuration); + let resp = api + .update_maintenance( + status_page_data_id.clone(), + maintenance_data_id.clone(), + body, + UpdateMaintenanceOptionalParams::default(), + ) + .await; + if let Ok(value) = resp { + println!("{:#?}", value); + } else { + println!("{:#?}", resp.unwrap_err()); + } +} diff --git a/src/datadogV2/api/api_status_pages.rs b/src/datadogV2/api/api_status_pages.rs index 4f388b384..7f2e09001 100644 --- a/src/datadogV2/api/api_status_pages.rs +++ b/src/datadogV2/api/api_status_pages.rs @@ -49,6 +49,29 @@ impl CreateDegradationOptionalParams { } } +/// CreateMaintenanceOptionalParams is a struct for passing parameters to the method [`StatusPagesAPI::create_maintenance`] +#[non_exhaustive] +#[derive(Clone, Default, Debug)] +pub struct CreateMaintenanceOptionalParams { + /// Whether to notify page subscribers of the maintenance. + pub notify_subscribers: Option, + /// Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page. + pub include: Option, +} + +impl CreateMaintenanceOptionalParams { + /// Whether to notify page subscribers of the maintenance. + pub fn notify_subscribers(mut self, value: bool) -> Self { + self.notify_subscribers = Some(value); + self + } + /// Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page. + pub fn include(mut self, value: String) -> Self { + self.include = Some(value); + self + } +} + /// CreateStatusPageOptionalParams is a struct for passing parameters to the method [`StatusPagesAPI::create_status_page`] #[non_exhaustive] #[derive(Clone, Default, Debug)] @@ -97,6 +120,22 @@ impl GetDegradationOptionalParams { } } +/// GetMaintenanceOptionalParams is a struct for passing parameters to the method [`StatusPagesAPI::get_maintenance`] +#[non_exhaustive] +#[derive(Clone, Default, Debug)] +pub struct GetMaintenanceOptionalParams { + /// Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page. + pub include: Option, +} + +impl GetMaintenanceOptionalParams { + /// Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page. + pub fn include(mut self, value: String) -> Self { + self.include = Some(value); + self + } +} + /// GetStatusPageOptionalParams is a struct for passing parameters to the method [`StatusPagesAPI::get_status_page`] #[non_exhaustive] #[derive(Clone, Default, Debug)] @@ -143,6 +182,8 @@ pub struct ListDegradationsOptionalParams { pub include: Option, /// Optional degradation status filter. Supported values: investigating, identified, monitoring, resolved. pub filter_status: Option, + /// Sort order. Prefix with '-' for descending. Supported values: created_at, -created_at, modified_at, -modified_at. + pub sort: Option, } impl ListDegradationsOptionalParams { @@ -171,6 +212,62 @@ impl ListDegradationsOptionalParams { self.filter_status = Some(value); self } + /// Sort order. Prefix with '-' for descending. Supported values: created_at, -created_at, modified_at, -modified_at. + pub fn sort(mut self, value: String) -> Self { + self.sort = Some(value); + self + } +} + +/// ListMaintenancesOptionalParams is a struct for passing parameters to the method [`StatusPagesAPI::list_maintenances`] +#[non_exhaustive] +#[derive(Clone, Default, Debug)] +pub struct ListMaintenancesOptionalParams { + /// Optional page id filter. + pub filter_page_id: Option, + /// Offset to use as the start of the page. + pub page_offset: Option, + /// The number of maintenances to return per page. + pub page_limit: Option, + /// Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page. + pub include: Option, + /// Optional maintenance status filter. Supported values: scheduled, in_progress, completed. + pub filter_status: Option, + /// Sort order. Prefix with '-' for descending. Supported values: created_at, -created_at, start_date, -start_date. + pub sort: Option, +} + +impl ListMaintenancesOptionalParams { + /// Optional page id filter. + pub fn filter_page_id(mut self, value: String) -> Self { + self.filter_page_id = Some(value); + self + } + /// Offset to use as the start of the page. + pub fn page_offset(mut self, value: i32) -> Self { + self.page_offset = Some(value); + self + } + /// The number of maintenances to return per page. + pub fn page_limit(mut self, value: i32) -> Self { + self.page_limit = Some(value); + self + } + /// Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page. + pub fn include(mut self, value: String) -> Self { + self.include = Some(value); + self + } + /// Optional maintenance status filter. Supported values: scheduled, in_progress, completed. + pub fn filter_status(mut self, value: String) -> Self { + self.filter_status = Some(value); + self + } + /// Sort order. Prefix with '-' for descending. Supported values: created_at, -created_at, start_date, -start_date. + pub fn sort(mut self, value: String) -> Self { + self.sort = Some(value); + self + } } /// ListStatusPagesOptionalParams is a struct for passing parameters to the method [`StatusPagesAPI::list_status_pages`] @@ -242,6 +339,29 @@ impl UpdateDegradationOptionalParams { } } +/// UpdateMaintenanceOptionalParams is a struct for passing parameters to the method [`StatusPagesAPI::update_maintenance`] +#[non_exhaustive] +#[derive(Clone, Default, Debug)] +pub struct UpdateMaintenanceOptionalParams { + /// Whether to notify page subscribers of the maintenance. + pub notify_subscribers: Option, + /// Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page. + pub include: Option, +} + +impl UpdateMaintenanceOptionalParams { + /// Whether to notify page subscribers of the maintenance. + pub fn notify_subscribers(mut self, value: bool) -> Self { + self.notify_subscribers = Some(value); + self + } + /// Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page. + pub fn include(mut self, value: String) -> Self { + self.include = Some(value); + self + } +} + /// UpdateStatusPageOptionalParams is a struct for passing parameters to the method [`StatusPagesAPI::update_status_page`] #[non_exhaustive] #[derive(Clone, Default, Debug)] @@ -281,6 +401,14 @@ pub enum CreateDegradationError { UnknownValue(serde_json::Value), } +/// CreateMaintenanceError is a struct for typed errors of method [`StatusPagesAPI::create_maintenance`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CreateMaintenanceError { + APIErrorResponse(crate::datadogV2::model::APIErrorResponse), + UnknownValue(serde_json::Value), +} + /// CreateStatusPageError is a struct for typed errors of method [`StatusPagesAPI::create_status_page`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -329,6 +457,14 @@ pub enum GetDegradationError { UnknownValue(serde_json::Value), } +/// GetMaintenanceError is a struct for typed errors of method [`StatusPagesAPI::get_maintenance`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetMaintenanceError { + APIErrorResponse(crate::datadogV2::model::APIErrorResponse), + UnknownValue(serde_json::Value), +} + /// GetStatusPageError is a struct for typed errors of method [`StatusPagesAPI::get_status_page`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -353,6 +489,14 @@ pub enum ListDegradationsError { UnknownValue(serde_json::Value), } +/// ListMaintenancesError is a struct for typed errors of method [`StatusPagesAPI::list_maintenances`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum ListMaintenancesError { + APIErrorResponse(crate::datadogV2::model::APIErrorResponse), + UnknownValue(serde_json::Value), +} + /// ListStatusPagesError is a struct for typed errors of method [`StatusPagesAPI::list_status_pages`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -377,6 +521,14 @@ pub enum UpdateDegradationError { UnknownValue(serde_json::Value), } +/// UpdateMaintenanceError is a struct for typed errors of method [`StatusPagesAPI::update_maintenance`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum UpdateMaintenanceError { + APIErrorResponse(crate::datadogV2::model::APIErrorResponse), + UnknownValue(serde_json::Value), +} + /// UpdateStatusPageError is a struct for typed errors of method [`StatusPagesAPI::update_status_page`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -788,13 +940,17 @@ impl StatusPagesAPI { } } - /// Creates a new status page. - pub async fn create_status_page( + /// Schedules a new maintenance. + pub async fn create_maintenance( &self, - body: crate::datadogV2::model::CreateStatusPageRequest, - params: CreateStatusPageOptionalParams, - ) -> Result> { - match self.create_status_page_with_http_info(body, params).await { + page_id: uuid::Uuid, + body: crate::datadogV2::model::CreateMaintenanceRequest, + params: CreateMaintenanceOptionalParams, + ) -> Result> { + match self + .create_maintenance_with_http_info(page_id, body, params) + .await + { Ok(response_content) => { if let Some(e) = response_content.entity { Ok(e) @@ -808,30 +964,37 @@ impl StatusPagesAPI { } } - /// Creates a new status page. - pub async fn create_status_page_with_http_info( + /// Schedules a new maintenance. + pub async fn create_maintenance_with_http_info( &self, - body: crate::datadogV2::model::CreateStatusPageRequest, - params: CreateStatusPageOptionalParams, + page_id: uuid::Uuid, + body: crate::datadogV2::model::CreateMaintenanceRequest, + params: CreateMaintenanceOptionalParams, ) -> Result< - datadog::ResponseContent, - datadog::Error, + datadog::ResponseContent, + datadog::Error, > { let local_configuration = &self.config; - let operation_id = "v2.create_status_page"; + let operation_id = "v2.create_maintenance"; // unbox and build optional parameters + let notify_subscribers = params.notify_subscribers; let include = params.include; let local_client = &self.client; let local_uri_str = format!( - "{}/api/v2/statuspages", - local_configuration.get_operation_host(operation_id) + "{}/api/v2/statuspages/{page_id}/maintenances", + local_configuration.get_operation_host(operation_id), + page_id = datadog::urlencode(page_id.to_string()) ); let mut local_req_builder = local_client.request(reqwest::Method::POST, local_uri_str.as_str()); + if let Some(ref local_query_param) = notify_subscribers { + local_req_builder = + local_req_builder.query(&[("notify_subscribers", &local_query_param.to_string())]); + }; if let Some(ref local_query_param) = include { local_req_builder = local_req_builder.query(&[("include", &local_query_param.to_string())]); @@ -925,7 +1088,7 @@ impl StatusPagesAPI { log::debug!("response content: {}", local_content); if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::(&local_content) { + match serde_json::from_str::(&local_content) { Ok(e) => { return Ok(datadog::ResponseContent { status: local_status, @@ -936,7 +1099,7 @@ impl StatusPagesAPI { Err(e) => return Err(datadog::Error::Serde(e)), }; } else { - let local_entity: Option = + let local_entity: Option = serde_json::from_str(&local_content).ok(); let local_error = datadog::ResponseContent { status: local_status, @@ -947,44 +1110,59 @@ impl StatusPagesAPI { } } - /// Deletes a component by its ID. - pub async fn delete_component( + /// Creates a new status page. + pub async fn create_status_page( &self, - page_id: uuid::Uuid, - component_id: uuid::Uuid, - ) -> Result<(), datadog::Error> { - match self - .delete_component_with_http_info(page_id, component_id) - .await - { - Ok(_) => Ok(()), + body: crate::datadogV2::model::CreateStatusPageRequest, + params: CreateStatusPageOptionalParams, + ) -> Result> { + match self.create_status_page_with_http_info(body, params).await { + Ok(response_content) => { + if let Some(e) = response_content.entity { + Ok(e) + } else { + Err(datadog::Error::Serde(serde::de::Error::custom( + "response content was None", + ))) + } + } Err(err) => Err(err), } } - /// Deletes a component by its ID. - pub async fn delete_component_with_http_info( + /// Creates a new status page. + pub async fn create_status_page_with_http_info( &self, - page_id: uuid::Uuid, - component_id: uuid::Uuid, - ) -> Result, datadog::Error> { + body: crate::datadogV2::model::CreateStatusPageRequest, + params: CreateStatusPageOptionalParams, + ) -> Result< + datadog::ResponseContent, + datadog::Error, + > { let local_configuration = &self.config; - let operation_id = "v2.delete_component"; + let operation_id = "v2.create_status_page"; + + // unbox and build optional parameters + let include = params.include; let local_client = &self.client; let local_uri_str = format!( - "{}/api/v2/statuspages/{page_id}/components/{component_id}", - local_configuration.get_operation_host(operation_id), - page_id = datadog::urlencode(page_id.to_string()), - component_id = datadog::urlencode(component_id.to_string()) + "{}/api/v2/statuspages", + local_configuration.get_operation_host(operation_id) ); let mut local_req_builder = - local_client.request(reqwest::Method::DELETE, local_uri_str.as_str()); + local_client.request(reqwest::Method::POST, local_uri_str.as_str()); + + if let Some(ref local_query_param) = include { + local_req_builder = + local_req_builder.query(&[("include", &local_query_param.to_string())]); + }; // build headers let mut headers = HeaderMap::new(); - headers.insert("Accept", HeaderValue::from_static("*/*")); + headers.insert("Content-Type", HeaderValue::from_static("application/json")); + headers.insert("Accept", HeaderValue::from_static("application/json")); // build user agent match HeaderValue::from_str(local_configuration.user_agent.as_str()) { @@ -1014,6 +1192,51 @@ impl StatusPagesAPI { ); }; + // build body parameters + let output = Vec::new(); + let mut ser = serde_json::Serializer::with_formatter(output, datadog::DDFormatter); + if body.serialize(&mut ser).is_ok() { + if let Some(content_encoding) = headers.get("Content-Encoding") { + match content_encoding.to_str().unwrap_or_default() { + "gzip" => { + let mut enc = GzEncoder::new(Vec::new(), Compression::default()); + let _ = enc.write_all(ser.into_inner().as_slice()); + match enc.finish() { + Ok(buf) => { + local_req_builder = local_req_builder.body(buf); + } + Err(e) => return Err(datadog::Error::Io(e)), + } + } + "deflate" => { + let mut enc = ZlibEncoder::new(Vec::new(), Compression::default()); + let _ = enc.write_all(ser.into_inner().as_slice()); + match enc.finish() { + Ok(buf) => { + local_req_builder = local_req_builder.body(buf); + } + Err(e) => return Err(datadog::Error::Io(e)), + } + } + "zstd1" => { + let mut enc = zstd::stream::Encoder::new(Vec::new(), 0).unwrap(); + let _ = enc.write_all(ser.into_inner().as_slice()); + match enc.finish() { + Ok(buf) => { + local_req_builder = local_req_builder.body(buf); + } + Err(e) => return Err(datadog::Error::Io(e)), + } + } + _ => { + local_req_builder = local_req_builder.body(ser.into_inner()); + } + } + } else { + local_req_builder = local_req_builder.body(ser.into_inner()); + } + } + local_req_builder = local_req_builder.headers(headers); let local_req = local_req_builder.build()?; log::debug!("request content: {:?}", local_req.body()); @@ -1024,15 +1247,114 @@ impl StatusPagesAPI { log::debug!("response content: {}", local_content); if !local_status.is_client_error() && !local_status.is_server_error() { - Ok(datadog::ResponseContent { - status: local_status, - content: local_content, - entity: None, - }) - } else { - let local_entity: Option = - serde_json::from_str(&local_content).ok(); - let local_error = datadog::ResponseContent { + match serde_json::from_str::(&local_content) { + Ok(e) => { + return Ok(datadog::ResponseContent { + status: local_status, + content: local_content, + entity: Some(e), + }) + } + Err(e) => return Err(datadog::Error::Serde(e)), + }; + } else { + let local_entity: Option = + serde_json::from_str(&local_content).ok(); + let local_error = datadog::ResponseContent { + status: local_status, + content: local_content, + entity: local_entity, + }; + Err(datadog::Error::ResponseError(local_error)) + } + } + + /// Deletes a component by its ID. + pub async fn delete_component( + &self, + page_id: uuid::Uuid, + component_id: uuid::Uuid, + ) -> Result<(), datadog::Error> { + match self + .delete_component_with_http_info(page_id, component_id) + .await + { + Ok(_) => Ok(()), + Err(err) => Err(err), + } + } + + /// Deletes a component by its ID. + pub async fn delete_component_with_http_info( + &self, + page_id: uuid::Uuid, + component_id: uuid::Uuid, + ) -> Result, datadog::Error> { + let local_configuration = &self.config; + let operation_id = "v2.delete_component"; + + let local_client = &self.client; + + let local_uri_str = format!( + "{}/api/v2/statuspages/{page_id}/components/{component_id}", + local_configuration.get_operation_host(operation_id), + page_id = datadog::urlencode(page_id.to_string()), + component_id = datadog::urlencode(component_id.to_string()) + ); + let mut local_req_builder = + local_client.request(reqwest::Method::DELETE, local_uri_str.as_str()); + + // build headers + let mut headers = HeaderMap::new(); + headers.insert("Accept", HeaderValue::from_static("*/*")); + + // build user agent + match HeaderValue::from_str(local_configuration.user_agent.as_str()) { + Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent), + Err(e) => { + log::warn!("Failed to parse user agent header: {e}, falling back to default"); + headers.insert( + reqwest::header::USER_AGENT, + HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()), + ) + } + }; + + // build auth + if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") { + headers.insert( + "DD-API-KEY", + HeaderValue::from_str(local_key.key.as_str()) + .expect("failed to parse DD-API-KEY header"), + ); + }; + if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") { + headers.insert( + "DD-APPLICATION-KEY", + HeaderValue::from_str(local_key.key.as_str()) + .expect("failed to parse DD-APPLICATION-KEY header"), + ); + }; + + local_req_builder = local_req_builder.headers(headers); + let local_req = local_req_builder.build()?; + log::debug!("request content: {:?}", local_req.body()); + let local_resp = local_client.execute(local_req).await?; + + let local_status = local_resp.status(); + let local_content = local_resp.text().await?; + log::debug!("response content: {}", local_content); + + if !local_status.is_client_error() && !local_status.is_server_error() { + Ok(datadog::ResponseContent { + status: local_status, + content: local_content, + entity: None, + }) + } else { + let local_entity: Option = + serde_json::from_str(&local_content).ok(); + let local_error = datadog::ResponseContent { status: local_status, content: local_content, entity: local_entity, @@ -1465,6 +1787,126 @@ impl StatusPagesAPI { } } + /// Retrieves a specific maintenance by its ID. + pub async fn get_maintenance( + &self, + page_id: uuid::Uuid, + maintenance_id: uuid::Uuid, + params: GetMaintenanceOptionalParams, + ) -> Result> { + match self + .get_maintenance_with_http_info(page_id, maintenance_id, params) + .await + { + Ok(response_content) => { + if let Some(e) = response_content.entity { + Ok(e) + } else { + Err(datadog::Error::Serde(serde::de::Error::custom( + "response content was None", + ))) + } + } + Err(err) => Err(err), + } + } + + /// Retrieves a specific maintenance by its ID. + pub async fn get_maintenance_with_http_info( + &self, + page_id: uuid::Uuid, + maintenance_id: uuid::Uuid, + params: GetMaintenanceOptionalParams, + ) -> Result< + datadog::ResponseContent, + datadog::Error, + > { + let local_configuration = &self.config; + let operation_id = "v2.get_maintenance"; + + // unbox and build optional parameters + let include = params.include; + + let local_client = &self.client; + + let local_uri_str = format!( + "{}/api/v2/statuspages/{page_id}/maintenances/{maintenance_id}", + local_configuration.get_operation_host(operation_id), + page_id = datadog::urlencode(page_id.to_string()), + maintenance_id = datadog::urlencode(maintenance_id.to_string()) + ); + let mut local_req_builder = + local_client.request(reqwest::Method::GET, local_uri_str.as_str()); + + if let Some(ref local_query_param) = include { + local_req_builder = + local_req_builder.query(&[("include", &local_query_param.to_string())]); + }; + + // build headers + let mut headers = HeaderMap::new(); + headers.insert("Accept", HeaderValue::from_static("application/json")); + + // build user agent + match HeaderValue::from_str(local_configuration.user_agent.as_str()) { + Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent), + Err(e) => { + log::warn!("Failed to parse user agent header: {e}, falling back to default"); + headers.insert( + reqwest::header::USER_AGENT, + HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()), + ) + } + }; + + // build auth + if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") { + headers.insert( + "DD-API-KEY", + HeaderValue::from_str(local_key.key.as_str()) + .expect("failed to parse DD-API-KEY header"), + ); + }; + if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") { + headers.insert( + "DD-APPLICATION-KEY", + HeaderValue::from_str(local_key.key.as_str()) + .expect("failed to parse DD-APPLICATION-KEY header"), + ); + }; + + local_req_builder = local_req_builder.headers(headers); + let local_req = local_req_builder.build()?; + log::debug!("request content: {:?}", local_req.body()); + let local_resp = local_client.execute(local_req).await?; + + let local_status = local_resp.status(); + let local_content = local_resp.text().await?; + log::debug!("response content: {}", local_content); + + if !local_status.is_client_error() && !local_status.is_server_error() { + match serde_json::from_str::(&local_content) { + Ok(e) => { + return Ok(datadog::ResponseContent { + status: local_status, + content: local_content, + entity: Some(e), + }) + } + Err(e) => return Err(datadog::Error::Serde(e)), + }; + } else { + let local_entity: Option = + serde_json::from_str(&local_content).ok(); + let local_error = datadog::ResponseContent { + status: local_status, + content: local_content, + entity: local_entity, + }; + Err(datadog::Error::ResponseError(local_error)) + } + } + /// Retrieves a specific status page by its ID. pub async fn get_status_page( &self, @@ -1735,6 +2177,7 @@ impl StatusPagesAPI { let page_limit = params.page_limit; let include = params.include; let filter_status = params.filter_status; + let sort = params.sort; let local_client = &self.client; @@ -1765,6 +2208,10 @@ impl StatusPagesAPI { local_req_builder = local_req_builder.query(&[("filter[status]", &local_query_param.to_string())]); }; + if let Some(ref local_query_param) = sort { + local_req_builder = + local_req_builder.query(&[("sort", &local_query_param.to_string())]); + }; // build headers let mut headers = HeaderMap::new(); @@ -1831,6 +2278,144 @@ impl StatusPagesAPI { } } + /// Lists all maintenances for the organization. Optionally filter by status and page. + pub async fn list_maintenances( + &self, + params: ListMaintenancesOptionalParams, + ) -> Result> + { + match self.list_maintenances_with_http_info(params).await { + Ok(response_content) => { + if let Some(e) = response_content.entity { + Ok(e) + } else { + Err(datadog::Error::Serde(serde::de::Error::custom( + "response content was None", + ))) + } + } + Err(err) => Err(err), + } + } + + /// Lists all maintenances for the organization. Optionally filter by status and page. + pub async fn list_maintenances_with_http_info( + &self, + params: ListMaintenancesOptionalParams, + ) -> Result< + datadog::ResponseContent, + datadog::Error, + > { + let local_configuration = &self.config; + let operation_id = "v2.list_maintenances"; + + // unbox and build optional parameters + let filter_page_id = params.filter_page_id; + let page_offset = params.page_offset; + let page_limit = params.page_limit; + let include = params.include; + let filter_status = params.filter_status; + let sort = params.sort; + + let local_client = &self.client; + + let local_uri_str = format!( + "{}/api/v2/statuspages/maintenances", + local_configuration.get_operation_host(operation_id) + ); + let mut local_req_builder = + local_client.request(reqwest::Method::GET, local_uri_str.as_str()); + + if let Some(ref local_query_param) = filter_page_id { + local_req_builder = + local_req_builder.query(&[("filter[page_id]", &local_query_param.to_string())]); + }; + if let Some(ref local_query_param) = page_offset { + local_req_builder = + local_req_builder.query(&[("page[offset]", &local_query_param.to_string())]); + }; + if let Some(ref local_query_param) = page_limit { + local_req_builder = + local_req_builder.query(&[("page[limit]", &local_query_param.to_string())]); + }; + if let Some(ref local_query_param) = include { + local_req_builder = + local_req_builder.query(&[("include", &local_query_param.to_string())]); + }; + if let Some(ref local_query_param) = filter_status { + local_req_builder = + local_req_builder.query(&[("filter[status]", &local_query_param.to_string())]); + }; + if let Some(ref local_query_param) = sort { + local_req_builder = + local_req_builder.query(&[("sort", &local_query_param.to_string())]); + }; + + // build headers + let mut headers = HeaderMap::new(); + headers.insert("Accept", HeaderValue::from_static("application/json")); + + // build user agent + match HeaderValue::from_str(local_configuration.user_agent.as_str()) { + Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent), + Err(e) => { + log::warn!("Failed to parse user agent header: {e}, falling back to default"); + headers.insert( + reqwest::header::USER_AGENT, + HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()), + ) + } + }; + + // build auth + if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") { + headers.insert( + "DD-API-KEY", + HeaderValue::from_str(local_key.key.as_str()) + .expect("failed to parse DD-API-KEY header"), + ); + }; + if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") { + headers.insert( + "DD-APPLICATION-KEY", + HeaderValue::from_str(local_key.key.as_str()) + .expect("failed to parse DD-APPLICATION-KEY header"), + ); + }; + + local_req_builder = local_req_builder.headers(headers); + let local_req = local_req_builder.build()?; + log::debug!("request content: {:?}", local_req.body()); + let local_resp = local_client.execute(local_req).await?; + + let local_status = local_resp.status(); + let local_content = local_resp.text().await?; + log::debug!("response content: {}", local_content); + + if !local_status.is_client_error() && !local_status.is_server_error() { + match serde_json::from_str::(&local_content) + { + Ok(e) => { + return Ok(datadog::ResponseContent { + status: local_status, + content: local_content, + entity: Some(e), + }) + } + Err(e) => return Err(datadog::Error::Serde(e)), + }; + } else { + let local_entity: Option = + serde_json::from_str(&local_content).ok(); + let local_error = datadog::ResponseContent { + status: local_status, + content: local_content, + entity: local_entity, + }; + Err(datadog::Error::ResponseError(local_error)) + } + } + /// Lists all status pages for the organization. pub async fn list_status_pages( &self, @@ -2297,6 +2882,179 @@ impl StatusPagesAPI { } } + /// Updates an existing maintenance's attributes. + pub async fn update_maintenance( + &self, + page_id: uuid::Uuid, + maintenance_id: uuid::Uuid, + body: crate::datadogV2::model::PatchMaintenanceRequest, + params: UpdateMaintenanceOptionalParams, + ) -> Result> { + match self + .update_maintenance_with_http_info(page_id, maintenance_id, body, params) + .await + { + Ok(response_content) => { + if let Some(e) = response_content.entity { + Ok(e) + } else { + Err(datadog::Error::Serde(serde::de::Error::custom( + "response content was None", + ))) + } + } + Err(err) => Err(err), + } + } + + /// Updates an existing maintenance's attributes. + pub async fn update_maintenance_with_http_info( + &self, + page_id: uuid::Uuid, + maintenance_id: uuid::Uuid, + body: crate::datadogV2::model::PatchMaintenanceRequest, + params: UpdateMaintenanceOptionalParams, + ) -> Result< + datadog::ResponseContent, + datadog::Error, + > { + let local_configuration = &self.config; + let operation_id = "v2.update_maintenance"; + + // unbox and build optional parameters + let notify_subscribers = params.notify_subscribers; + let include = params.include; + + let local_client = &self.client; + + let local_uri_str = format!( + "{}/api/v2/statuspages/{page_id}/maintenances/{maintenance_id}", + local_configuration.get_operation_host(operation_id), + page_id = datadog::urlencode(page_id.to_string()), + maintenance_id = datadog::urlencode(maintenance_id.to_string()) + ); + let mut local_req_builder = + local_client.request(reqwest::Method::PATCH, local_uri_str.as_str()); + + if let Some(ref local_query_param) = notify_subscribers { + local_req_builder = + local_req_builder.query(&[("notify_subscribers", &local_query_param.to_string())]); + }; + if let Some(ref local_query_param) = include { + local_req_builder = + local_req_builder.query(&[("include", &local_query_param.to_string())]); + }; + + // build headers + let mut headers = HeaderMap::new(); + headers.insert("Content-Type", HeaderValue::from_static("application/json")); + headers.insert("Accept", HeaderValue::from_static("application/json")); + + // build user agent + match HeaderValue::from_str(local_configuration.user_agent.as_str()) { + Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent), + Err(e) => { + log::warn!("Failed to parse user agent header: {e}, falling back to default"); + headers.insert( + reqwest::header::USER_AGENT, + HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()), + ) + } + }; + + // build auth + if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") { + headers.insert( + "DD-API-KEY", + HeaderValue::from_str(local_key.key.as_str()) + .expect("failed to parse DD-API-KEY header"), + ); + }; + if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") { + headers.insert( + "DD-APPLICATION-KEY", + HeaderValue::from_str(local_key.key.as_str()) + .expect("failed to parse DD-APPLICATION-KEY header"), + ); + }; + + // build body parameters + let output = Vec::new(); + let mut ser = serde_json::Serializer::with_formatter(output, datadog::DDFormatter); + if body.serialize(&mut ser).is_ok() { + if let Some(content_encoding) = headers.get("Content-Encoding") { + match content_encoding.to_str().unwrap_or_default() { + "gzip" => { + let mut enc = GzEncoder::new(Vec::new(), Compression::default()); + let _ = enc.write_all(ser.into_inner().as_slice()); + match enc.finish() { + Ok(buf) => { + local_req_builder = local_req_builder.body(buf); + } + Err(e) => return Err(datadog::Error::Io(e)), + } + } + "deflate" => { + let mut enc = ZlibEncoder::new(Vec::new(), Compression::default()); + let _ = enc.write_all(ser.into_inner().as_slice()); + match enc.finish() { + Ok(buf) => { + local_req_builder = local_req_builder.body(buf); + } + Err(e) => return Err(datadog::Error::Io(e)), + } + } + "zstd1" => { + let mut enc = zstd::stream::Encoder::new(Vec::new(), 0).unwrap(); + let _ = enc.write_all(ser.into_inner().as_slice()); + match enc.finish() { + Ok(buf) => { + local_req_builder = local_req_builder.body(buf); + } + Err(e) => return Err(datadog::Error::Io(e)), + } + } + _ => { + local_req_builder = local_req_builder.body(ser.into_inner()); + } + } + } else { + local_req_builder = local_req_builder.body(ser.into_inner()); + } + } + + local_req_builder = local_req_builder.headers(headers); + let local_req = local_req_builder.build()?; + log::debug!("request content: {:?}", local_req.body()); + let local_resp = local_client.execute(local_req).await?; + + let local_status = local_resp.status(); + let local_content = local_resp.text().await?; + log::debug!("response content: {}", local_content); + + if !local_status.is_client_error() && !local_status.is_server_error() { + match serde_json::from_str::(&local_content) { + Ok(e) => { + return Ok(datadog::ResponseContent { + status: local_status, + content: local_content, + entity: Some(e), + }) + } + Err(e) => return Err(datadog::Error::Serde(e)), + }; + } else { + let local_entity: Option = + serde_json::from_str(&local_content).ok(); + let local_error = datadog::ResponseContent { + status: local_status, + content: local_content, + entity: local_entity, + }; + Err(datadog::Error::ResponseError(local_error)) + } + } + /// Updates an existing status page's attributes. pub async fn update_status_page( &self, diff --git a/src/datadogV2/model/mod.rs b/src/datadogV2/model/mod.rs index ea0e124a9..8609b6ab1 100644 --- a/src/datadogV2/model/mod.rs +++ b/src/datadogV2/model/mod.rs @@ -7890,12 +7890,12 @@ pub mod model_status_pages_user_attributes; pub use self::model_status_pages_user_attributes::StatusPagesUserAttributes; pub mod model_status_page_array_included; pub use self::model_status_page_array_included::StatusPageArrayIncluded; -pub mod model_status_pages_response_meta; -pub use self::model_status_pages_response_meta::StatusPagesResponseMeta; -pub mod model_status_pages_pagination; -pub use self::model_status_pages_pagination::StatusPagesPagination; -pub mod model_status_pages_pagination_type; -pub use self::model_status_pages_pagination_type::StatusPagesPaginationType; +pub mod model_pagination_meta; +pub use self::model_pagination_meta::PaginationMeta; +pub mod model_pagination_meta_page; +pub use self::model_pagination_meta_page::PaginationMetaPage; +pub mod model_pagination_meta_page_type; +pub use self::model_pagination_meta_page_type::PaginationMetaPageType; pub mod model_create_status_page_request; pub use self::model_create_status_page_request::CreateStatusPageRequest; pub mod model_create_status_page_request_data; @@ -7918,6 +7918,10 @@ pub mod model_degradation_data_attributes_components_affected_items; pub use self::model_degradation_data_attributes_components_affected_items::DegradationDataAttributesComponentsAffectedItems; pub mod model_status_pages_component_data_attributes_status; pub use self::model_status_pages_component_data_attributes_status::StatusPagesComponentDataAttributesStatus; +pub mod model_degradation_data_attributes_source; +pub use self::model_degradation_data_attributes_source::DegradationDataAttributesSource; +pub mod model_degradation_data_attributes_source_type; +pub use self::model_degradation_data_attributes_source_type::DegradationDataAttributesSourceType; pub mod model_create_degradation_request_data_attributes_status; pub use self::model_create_degradation_request_data_attributes_status::CreateDegradationRequestDataAttributesStatus; pub mod model_degradation_data_attributes_updates_items; @@ -7958,8 +7962,40 @@ pub mod model_status_page_as_included_relationships_last_modified_by_user; pub use self::model_status_page_as_included_relationships_last_modified_by_user::StatusPageAsIncludedRelationshipsLastModifiedByUser; pub mod model_status_page_as_included_relationships_last_modified_by_user_data; pub use self::model_status_page_as_included_relationships_last_modified_by_user_data::StatusPageAsIncludedRelationshipsLastModifiedByUserData; -pub mod model_degradation_array_included; -pub use self::model_degradation_array_included::DegradationArrayIncluded; +pub mod model_degradation_included; +pub use self::model_degradation_included::DegradationIncluded; +pub mod model_maintenance_array; +pub use self::model_maintenance_array::MaintenanceArray; +pub mod model_maintenance_data; +pub use self::model_maintenance_data::MaintenanceData; +pub mod model_maintenance_data_attributes; +pub use self::model_maintenance_data_attributes::MaintenanceDataAttributes; +pub mod model_maintenance_data_attributes_components_affected_items; +pub use self::model_maintenance_data_attributes_components_affected_items::MaintenanceDataAttributesComponentsAffectedItems; +pub mod model_patch_maintenance_request_data_attributes_components_affected_items_status; +pub use self::model_patch_maintenance_request_data_attributes_components_affected_items_status::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus; +pub mod model_maintenance_data_attributes_status; +pub use self::model_maintenance_data_attributes_status::MaintenanceDataAttributesStatus; +pub mod model_maintenance_data_attributes_updates_items; +pub use self::model_maintenance_data_attributes_updates_items::MaintenanceDataAttributesUpdatesItems; +pub mod model_maintenance_data_attributes_updates_items_components_affected_items; +pub use self::model_maintenance_data_attributes_updates_items_components_affected_items::MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems; +pub mod model_maintenance_data_relationships; +pub use self::model_maintenance_data_relationships::MaintenanceDataRelationships; +pub mod model_maintenance_data_relationships_created_by_user; +pub use self::model_maintenance_data_relationships_created_by_user::MaintenanceDataRelationshipsCreatedByUser; +pub mod model_maintenance_data_relationships_created_by_user_data; +pub use self::model_maintenance_data_relationships_created_by_user_data::MaintenanceDataRelationshipsCreatedByUserData; +pub mod model_maintenance_data_relationships_last_modified_by_user; +pub use self::model_maintenance_data_relationships_last_modified_by_user::MaintenanceDataRelationshipsLastModifiedByUser; +pub mod model_maintenance_data_relationships_last_modified_by_user_data; +pub use self::model_maintenance_data_relationships_last_modified_by_user_data::MaintenanceDataRelationshipsLastModifiedByUserData; +pub mod model_maintenance_data_relationships_status_page; +pub use self::model_maintenance_data_relationships_status_page::MaintenanceDataRelationshipsStatusPage; +pub mod model_maintenance_data_relationships_status_page_data; +pub use self::model_maintenance_data_relationships_status_page_data::MaintenanceDataRelationshipsStatusPageData; +pub mod model_patch_maintenance_request_data_type; +pub use self::model_patch_maintenance_request_data_type::PatchMaintenanceRequestDataType; pub mod model_patch_status_page_request; pub use self::model_patch_status_page_request::PatchStatusPageRequest; pub mod model_patch_status_page_request_data; @@ -8062,6 +8098,24 @@ pub mod model_patch_degradation_request_data_attributes_components_affected_item pub use self::model_patch_degradation_request_data_attributes_components_affected_items::PatchDegradationRequestDataAttributesComponentsAffectedItems; pub mod model_patch_degradation_request_data_attributes_status; pub use self::model_patch_degradation_request_data_attributes_status::PatchDegradationRequestDataAttributesStatus; +pub mod model_create_maintenance_request; +pub use self::model_create_maintenance_request::CreateMaintenanceRequest; +pub mod model_create_maintenance_request_data; +pub use self::model_create_maintenance_request_data::CreateMaintenanceRequestData; +pub mod model_create_maintenance_request_data_attributes; +pub use self::model_create_maintenance_request_data_attributes::CreateMaintenanceRequestDataAttributes; +pub mod model_create_maintenance_request_data_attributes_components_affected_items; +pub use self::model_create_maintenance_request_data_attributes_components_affected_items::CreateMaintenanceRequestDataAttributesComponentsAffectedItems; +pub mod model_maintenance; +pub use self::model_maintenance::Maintenance; +pub mod model_patch_maintenance_request; +pub use self::model_patch_maintenance_request::PatchMaintenanceRequest; +pub mod model_patch_maintenance_request_data; +pub use self::model_patch_maintenance_request_data::PatchMaintenanceRequestData; +pub mod model_patch_maintenance_request_data_attributes; +pub use self::model_patch_maintenance_request_data_attributes::PatchMaintenanceRequestDataAttributes; +pub mod model_patch_maintenance_request_data_attributes_components_affected_items; +pub use self::model_patch_maintenance_request_data_attributes_components_affected_items::PatchMaintenanceRequestDataAttributesComponentsAffectedItems; pub mod model_on_demand_concurrency_cap_response; pub use self::model_on_demand_concurrency_cap_response::OnDemandConcurrencyCapResponse; pub mod model_on_demand_concurrency_cap; diff --git a/src/datadogV2/model/model_create_maintenance_request.rs b/src/datadogV2/model/model_create_maintenance_request.rs new file mode 100644 index 000000000..ce9cbc75d --- /dev/null +++ b/src/datadogV2/model/model_create_maintenance_request.rs @@ -0,0 +1,103 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct CreateMaintenanceRequest { + #[serde(rename = "data")] + pub data: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl CreateMaintenanceRequest { + pub fn new() -> CreateMaintenanceRequest { + CreateMaintenanceRequest { + data: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn data(mut self, value: crate::datadogV2::model::CreateMaintenanceRequestData) -> Self { + self.data = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for CreateMaintenanceRequest { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for CreateMaintenanceRequest { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct CreateMaintenanceRequestVisitor; + impl<'a> Visitor<'a> for CreateMaintenanceRequestVisitor { + type Value = CreateMaintenanceRequest; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut data: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "data" => { + if v.is_null() { + continue; + } + data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = CreateMaintenanceRequest { + data, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(CreateMaintenanceRequestVisitor) + } +} diff --git a/src/datadogV2/model/model_create_maintenance_request_data.rs b/src/datadogV2/model/model_create_maintenance_request_data.rs new file mode 100644 index 000000000..dca1844c1 --- /dev/null +++ b/src/datadogV2/model/model_create_maintenance_request_data.rs @@ -0,0 +1,115 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct CreateMaintenanceRequestData { + /// The supported attributes for creating a maintenance. + #[serde(rename = "attributes")] + pub attributes: crate::datadogV2::model::CreateMaintenanceRequestDataAttributes, + /// Maintenances resource type. + #[serde(rename = "type")] + pub type_: crate::datadogV2::model::PatchMaintenanceRequestDataType, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl CreateMaintenanceRequestData { + pub fn new( + attributes: crate::datadogV2::model::CreateMaintenanceRequestDataAttributes, + type_: crate::datadogV2::model::PatchMaintenanceRequestDataType, + ) -> CreateMaintenanceRequestData { + CreateMaintenanceRequestData { + attributes, + type_, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for CreateMaintenanceRequestData { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct CreateMaintenanceRequestDataVisitor; + impl<'a> Visitor<'a> for CreateMaintenanceRequestDataVisitor { + type Value = CreateMaintenanceRequestData; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut attributes: Option< + crate::datadogV2::model::CreateMaintenanceRequestDataAttributes, + > = None; + let mut type_: Option = + None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "attributes" => { + attributes = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::PatchMaintenanceRequestDataType::UnparsedObject(_type_) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let attributes = attributes.ok_or_else(|| M::Error::missing_field("attributes"))?; + let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; + + let content = CreateMaintenanceRequestData { + attributes, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(CreateMaintenanceRequestDataVisitor) + } +} diff --git a/src/datadogV2/model/model_create_maintenance_request_data_attributes.rs b/src/datadogV2/model/model_create_maintenance_request_data_attributes.rs new file mode 100644 index 000000000..464375f4f --- /dev/null +++ b/src/datadogV2/model/model_create_maintenance_request_data_attributes.rs @@ -0,0 +1,199 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +/// The supported attributes for creating a maintenance. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct CreateMaintenanceRequestDataAttributes { + /// Timestamp of when the maintenance was completed. + #[serde(rename = "completed_date")] + pub completed_date: Option>, + /// The description shown when the maintenance is completed. + #[serde(rename = "completed_description")] + pub completed_description: Option, + /// The components affected by the maintenance. + #[serde(rename = "components_affected")] + pub components_affected: + Vec, + /// The description shown while the maintenance is in progress. + #[serde(rename = "in_progress_description")] + pub in_progress_description: Option, + /// The description shown when the maintenance is scheduled. + #[serde(rename = "scheduled_description")] + pub scheduled_description: Option, + /// Timestamp of when the maintenance is scheduled to start. + #[serde(rename = "start_date")] + pub start_date: Option>, + /// The title of the maintenance. + #[serde(rename = "title")] + pub title: String, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl CreateMaintenanceRequestDataAttributes { + pub fn new( + components_affected: Vec< + crate::datadogV2::model::CreateMaintenanceRequestDataAttributesComponentsAffectedItems, + >, + title: String, + ) -> CreateMaintenanceRequestDataAttributes { + CreateMaintenanceRequestDataAttributes { + completed_date: None, + completed_description: None, + components_affected, + in_progress_description: None, + scheduled_description: None, + start_date: None, + title, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn completed_date(mut self, value: chrono::DateTime) -> Self { + self.completed_date = Some(value); + self + } + + pub fn completed_description(mut self, value: String) -> Self { + self.completed_description = Some(value); + self + } + + pub fn in_progress_description(mut self, value: String) -> Self { + self.in_progress_description = Some(value); + self + } + + pub fn scheduled_description(mut self, value: String) -> Self { + self.scheduled_description = Some(value); + self + } + + pub fn start_date(mut self, value: chrono::DateTime) -> Self { + self.start_date = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for CreateMaintenanceRequestDataAttributes { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct CreateMaintenanceRequestDataAttributesVisitor; + impl<'a> Visitor<'a> for CreateMaintenanceRequestDataAttributesVisitor { + type Value = CreateMaintenanceRequestDataAttributes; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut completed_date: Option> = None; + let mut completed_description: Option = None; + let mut components_affected: Option> = None; + let mut in_progress_description: Option = None; + let mut scheduled_description: Option = None; + let mut start_date: Option> = None; + let mut title: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "completed_date" => { + if v.is_null() { + continue; + } + completed_date = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "completed_description" => { + if v.is_null() { + continue; + } + completed_description = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "components_affected" => { + components_affected = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "in_progress_description" => { + if v.is_null() { + continue; + } + in_progress_description = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "scheduled_description" => { + if v.is_null() { + continue; + } + scheduled_description = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "start_date" => { + if v.is_null() { + continue; + } + start_date = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "title" => { + title = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let components_affected = components_affected + .ok_or_else(|| M::Error::missing_field("components_affected"))?; + let title = title.ok_or_else(|| M::Error::missing_field("title"))?; + + let content = CreateMaintenanceRequestDataAttributes { + completed_date, + completed_description, + components_affected, + in_progress_description, + scheduled_description, + start_date, + title, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(CreateMaintenanceRequestDataAttributesVisitor) + } +} diff --git a/src/datadogV2/model/model_create_maintenance_request_data_attributes_components_affected_items.rs b/src/datadogV2/model/model_create_maintenance_request_data_attributes_components_affected_items.rs new file mode 100644 index 000000000..c2e361605 --- /dev/null +++ b/src/datadogV2/model/model_create_maintenance_request_data_attributes_components_affected_items.rs @@ -0,0 +1,131 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct CreateMaintenanceRequestDataAttributesComponentsAffectedItems { + /// The ID of the component. Must be a component of type `component`. + #[serde(rename = "id")] + pub id: uuid::Uuid, + /// The name of the component. + #[serde(rename = "name")] + pub name: Option, + /// The status of the component. + #[serde(rename = "status")] + pub status: + crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl CreateMaintenanceRequestDataAttributesComponentsAffectedItems { + pub fn new( + id: uuid::Uuid, + status: crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus, + ) -> CreateMaintenanceRequestDataAttributesComponentsAffectedItems { + CreateMaintenanceRequestDataAttributesComponentsAffectedItems { + id, + name: None, + status, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn name(mut self, value: String) -> Self { + self.name = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for CreateMaintenanceRequestDataAttributesComponentsAffectedItems { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct CreateMaintenanceRequestDataAttributesComponentsAffectedItemsVisitor; + impl<'a> Visitor<'a> for CreateMaintenanceRequestDataAttributesComponentsAffectedItemsVisitor { + type Value = CreateMaintenanceRequestDataAttributesComponentsAffectedItems; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut id: Option = None; + let mut name: Option = None; + let mut status: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "id" => { + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "name" => { + if v.is_null() { + continue; + } + name = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "status" => { + status = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _status) = status { + match _status { + crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus::UnparsedObject(_status) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let id = id.ok_or_else(|| M::Error::missing_field("id"))?; + let status = status.ok_or_else(|| M::Error::missing_field("status"))?; + + let content = CreateMaintenanceRequestDataAttributesComponentsAffectedItems { + id, + name, + status, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer + .deserialize_any(CreateMaintenanceRequestDataAttributesComponentsAffectedItemsVisitor) + } +} diff --git a/src/datadogV2/model/model_degradation.rs b/src/datadogV2/model/model_degradation.rs index da8f95552..576280226 100644 --- a/src/datadogV2/model/model_degradation.rs +++ b/src/datadogV2/model/model_degradation.rs @@ -14,7 +14,7 @@ pub struct Degradation { pub data: Option, /// The included related resources of a degradation. Client must explicitly request these resources by name in the `include` query parameter. #[serde(rename = "included")] - pub included: Option>, + pub included: Option>, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -37,10 +37,7 @@ impl Degradation { self } - pub fn included( - mut self, - value: Vec, - ) -> Self { + pub fn included(mut self, value: Vec) -> Self { self.included = Some(value); self } @@ -78,8 +75,7 @@ impl<'de> Deserialize<'de> for Degradation { M: MapAccess<'a>, { let mut data: Option = None; - let mut included: Option> = - None; + let mut included: Option> = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, diff --git a/src/datadogV2/model/model_degradation_array.rs b/src/datadogV2/model/model_degradation_array.rs index 6c67c2fba..ef35eeae1 100644 --- a/src/datadogV2/model/model_degradation_array.rs +++ b/src/datadogV2/model/model_degradation_array.rs @@ -14,10 +14,10 @@ pub struct DegradationArray { pub data: Vec, /// The included related resources of a degradation. Client must explicitly request these resources by name in the `include` query parameter. #[serde(rename = "included")] - pub included: Option>, + pub included: Option>, /// Response metadata. #[serde(rename = "meta")] - pub meta: Option, + pub meta: Option, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -36,15 +36,12 @@ impl DegradationArray { } } - pub fn included( - mut self, - value: Vec, - ) -> Self { + pub fn included(mut self, value: Vec) -> Self { self.included = Some(value); self } - pub fn meta(mut self, value: crate::datadogV2::model::StatusPagesResponseMeta) -> Self { + pub fn meta(mut self, value: crate::datadogV2::model::PaginationMeta) -> Self { self.meta = Some(value); self } @@ -76,9 +73,8 @@ impl<'de> Deserialize<'de> for DegradationArray { M: MapAccess<'a>, { let mut data: Option> = None; - let mut included: Option> = - None; - let mut meta: Option = None; + let mut included: Option> = None; + let mut meta: Option = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, diff --git a/src/datadogV2/model/model_degradation_data_attributes.rs b/src/datadogV2/model/model_degradation_data_attributes.rs index 814e759fc..44c4be6aa 100644 --- a/src/datadogV2/model/model_degradation_data_attributes.rs +++ b/src/datadogV2/model/model_degradation_data_attributes.rs @@ -24,6 +24,9 @@ pub struct DegradationDataAttributes { /// Timestamp of when the degradation was last modified. #[serde(rename = "modified_at")] pub modified_at: Option>, + /// The source of the degradation. + #[serde(rename = "source")] + pub source: Option, /// The status of the degradation. #[serde(rename = "status")] pub status: Option, @@ -47,6 +50,7 @@ impl DegradationDataAttributes { created_at: None, description: None, modified_at: None, + source: None, status: None, title: None, updates: None, @@ -78,6 +82,14 @@ impl DegradationDataAttributes { self } + pub fn source( + mut self, + value: crate::datadogV2::model::DegradationDataAttributesSource, + ) -> Self { + self.source = Some(value); + self + } + pub fn status( mut self, value: crate::datadogV2::model::CreateDegradationRequestDataAttributesStatus, @@ -137,6 +149,8 @@ impl<'de> Deserialize<'de> for DegradationDataAttributes { let mut created_at: Option> = None; let mut description: Option = None; let mut modified_at: Option> = None; + let mut source: Option = + None; let mut status: Option< crate::datadogV2::model::CreateDegradationRequestDataAttributesStatus, > = None; @@ -179,6 +193,12 @@ impl<'de> Deserialize<'de> for DegradationDataAttributes { modified_at = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "source" => { + if v.is_null() { + continue; + } + source = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "status" => { if v.is_null() { continue; @@ -218,6 +238,7 @@ impl<'de> Deserialize<'de> for DegradationDataAttributes { created_at, description, modified_at, + source, status, title, updates, diff --git a/src/datadogV2/model/model_degradation_data_attributes_source.rs b/src/datadogV2/model/model_degradation_data_attributes_source.rs new file mode 100644 index 000000000..3e395cf3a --- /dev/null +++ b/src/datadogV2/model/model_degradation_data_attributes_source.rs @@ -0,0 +1,126 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +/// The source of the degradation. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct DegradationDataAttributesSource { + /// Timestamp of when the source was created. + #[serde(rename = "created_at")] + pub created_at: chrono::DateTime, + /// The ID of the source. + #[serde(rename = "source_id")] + pub source_id: String, + /// The type of the source. + #[serde(rename = "type")] + pub type_: crate::datadogV2::model::DegradationDataAttributesSourceType, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl DegradationDataAttributesSource { + pub fn new( + created_at: chrono::DateTime, + source_id: String, + type_: crate::datadogV2::model::DegradationDataAttributesSourceType, + ) -> DegradationDataAttributesSource { + DegradationDataAttributesSource { + created_at, + source_id, + type_, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for DegradationDataAttributesSource { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct DegradationDataAttributesSourceVisitor; + impl<'a> Visitor<'a> for DegradationDataAttributesSourceVisitor { + type Value = DegradationDataAttributesSource; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut created_at: Option> = None; + let mut source_id: Option = None; + let mut type_: Option< + crate::datadogV2::model::DegradationDataAttributesSourceType, + > = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "created_at" => { + created_at = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "source_id" => { + source_id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::DegradationDataAttributesSourceType::UnparsedObject(_type_) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let created_at = created_at.ok_or_else(|| M::Error::missing_field("created_at"))?; + let source_id = source_id.ok_or_else(|| M::Error::missing_field("source_id"))?; + let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; + + let content = DegradationDataAttributesSource { + created_at, + source_id, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(DegradationDataAttributesSourceVisitor) + } +} diff --git a/src/datadogV2/model/model_degradation_data_attributes_source_type.rs b/src/datadogV2/model/model_degradation_data_attributes_source_type.rs new file mode 100644 index 000000000..da6e8612a --- /dev/null +++ b/src/datadogV2/model/model_degradation_data_attributes_source_type.rs @@ -0,0 +1,48 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. + +use serde::{Deserialize, Deserializer, Serialize, Serializer}; + +#[non_exhaustive] +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum DegradationDataAttributesSourceType { + INCIDENT, + UnparsedObject(crate::datadog::UnparsedObject), +} + +impl ToString for DegradationDataAttributesSourceType { + fn to_string(&self) -> String { + match self { + Self::INCIDENT => String::from("incident"), + Self::UnparsedObject(v) => v.value.to_string(), + } + } +} + +impl Serialize for DegradationDataAttributesSourceType { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + match self { + Self::UnparsedObject(v) => v.serialize(serializer), + _ => serializer.serialize_str(self.to_string().as_str()), + } + } +} + +impl<'de> Deserialize<'de> for DegradationDataAttributesSourceType { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s: String = String::deserialize(deserializer)?; + Ok(match s.as_str() { + "incident" => Self::INCIDENT, + _ => Self::UnparsedObject(crate::datadog::UnparsedObject { + value: serde_json::Value::String(s.into()), + }), + }) + } +} diff --git a/src/datadogV2/model/model_degradation_data_attributes_updates_items.rs b/src/datadogV2/model/model_degradation_data_attributes_updates_items.rs index 5f944d84d..286cb28a5 100644 --- a/src/datadogV2/model/model_degradation_data_attributes_updates_items.rs +++ b/src/datadogV2/model/model_degradation_data_attributes_updates_items.rs @@ -27,6 +27,9 @@ pub struct DegradationDataAttributesUpdatesItems { /// Timestamp of when the update was last modified. #[serde(rename = "modified_at")] pub modified_at: Option>, + /// Timestamp of when the update started. + #[serde(rename = "started_at")] + pub started_at: Option>, /// The status of the degradation. #[serde(rename = "status")] pub status: Option, @@ -45,6 +48,7 @@ impl DegradationDataAttributesUpdatesItems { description: None, id: None, modified_at: None, + started_at: None, status: None, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, @@ -81,6 +85,11 @@ impl DegradationDataAttributesUpdatesItems { self } + pub fn started_at(mut self, value: chrono::DateTime) -> Self { + self.started_at = Some(value); + self + } + pub fn status( mut self, value: crate::datadogV2::model::CreateDegradationRequestDataAttributesStatus, @@ -126,6 +135,7 @@ impl<'de> Deserialize<'de> for DegradationDataAttributesUpdatesItems { let mut description: Option = None; let mut id: Option = None; let mut modified_at: Option> = None; + let mut started_at: Option> = None; let mut status: Option< crate::datadogV2::model::CreateDegradationRequestDataAttributesStatus, > = None; @@ -170,6 +180,12 @@ impl<'de> Deserialize<'de> for DegradationDataAttributesUpdatesItems { modified_at = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "started_at" => { + if v.is_null() { + continue; + } + started_at = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } "status" => { if v.is_null() { continue; @@ -198,6 +214,7 @@ impl<'de> Deserialize<'de> for DegradationDataAttributesUpdatesItems { description, id, modified_at, + started_at, status, additional_properties, _unparsed, diff --git a/src/datadogV2/model/model_degradation_array_included.rs b/src/datadogV2/model/model_degradation_included.rs similarity index 79% rename from src/datadogV2/model/model_degradation_array_included.rs rename to src/datadogV2/model/model_degradation_included.rs index 346584d04..074dd31c4 100644 --- a/src/datadogV2/model/model_degradation_array_included.rs +++ b/src/datadogV2/model/model_degradation_included.rs @@ -6,13 +6,13 @@ use serde::{Deserialize, Deserializer, Serialize}; #[non_exhaustive] #[derive(Clone, Debug, PartialEq, Serialize)] #[serde(untagged)] -pub enum DegradationArrayIncluded { +pub enum DegradationIncluded { StatusPagesUser(Box), StatusPageAsIncluded(Box), UnparsedObject(crate::datadog::UnparsedObject), } -impl<'de> Deserialize<'de> for DegradationArrayIncluded { +impl<'de> Deserialize<'de> for DegradationIncluded { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, @@ -22,18 +22,18 @@ impl<'de> Deserialize<'de> for DegradationArrayIncluded { serde_json::from_value::>(value.clone()) { if !_v._unparsed { - return Ok(DegradationArrayIncluded::StatusPagesUser(_v)); + return Ok(DegradationIncluded::StatusPagesUser(_v)); } } if let Ok(_v) = serde_json::from_value::>( value.clone(), ) { if !_v._unparsed { - return Ok(DegradationArrayIncluded::StatusPageAsIncluded(_v)); + return Ok(DegradationIncluded::StatusPageAsIncluded(_v)); } } - return Ok(DegradationArrayIncluded::UnparsedObject( + return Ok(DegradationIncluded::UnparsedObject( crate::datadog::UnparsedObject { value }, )); } diff --git a/src/datadogV2/model/model_maintenance.rs b/src/datadogV2/model/model_maintenance.rs new file mode 100644 index 000000000..56e103139 --- /dev/null +++ b/src/datadogV2/model/model_maintenance.rs @@ -0,0 +1,120 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct Maintenance { + #[serde(rename = "data")] + pub data: Option, + /// The included related resources of a maintenance. Client must explicitly request these resources by name in the `include` query parameter. + #[serde(rename = "included")] + pub included: Option>, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl Maintenance { + pub fn new() -> Maintenance { + Maintenance { + data: None, + included: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn data(mut self, value: crate::datadogV2::model::MaintenanceData) -> Self { + self.data = Some(value); + self + } + + pub fn included(mut self, value: Vec) -> Self { + self.included = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for Maintenance { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for Maintenance { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceVisitor; + impl<'a> Visitor<'a> for MaintenanceVisitor { + type Value = Maintenance; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut data: Option = None; + let mut included: Option> = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "data" => { + if v.is_null() { + continue; + } + data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "included" => { + if v.is_null() { + continue; + } + included = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = Maintenance { + data, + included, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_array.rs b/src/datadogV2/model/model_maintenance_array.rs new file mode 100644 index 000000000..fe205d77d --- /dev/null +++ b/src/datadogV2/model/model_maintenance_array.rs @@ -0,0 +1,124 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceArray { + #[serde(rename = "data")] + pub data: Vec, + /// The included related resources of a maintenance. Client must explicitly request these resources by name in the `include` query parameter. + #[serde(rename = "included")] + pub included: Option>, + /// Response metadata. + #[serde(rename = "meta")] + pub meta: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceArray { + pub fn new(data: Vec) -> MaintenanceArray { + MaintenanceArray { + data, + included: None, + meta: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn included(mut self, value: Vec) -> Self { + self.included = Some(value); + self + } + + pub fn meta(mut self, value: crate::datadogV2::model::PaginationMeta) -> Self { + self.meta = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for MaintenanceArray { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceArrayVisitor; + impl<'a> Visitor<'a> for MaintenanceArrayVisitor { + type Value = MaintenanceArray; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut data: Option> = None; + let mut included: Option> = None; + let mut meta: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "data" => { + data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "included" => { + if v.is_null() { + continue; + } + included = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "meta" => { + if v.is_null() { + continue; + } + meta = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let data = data.ok_or_else(|| M::Error::missing_field("data"))?; + + let content = MaintenanceArray { + data, + included, + meta, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceArrayVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data.rs b/src/datadogV2/model/model_maintenance_data.rs new file mode 100644 index 000000000..dda37399e --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data.rs @@ -0,0 +1,158 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceData { + /// The attributes of a maintenance. + #[serde(rename = "attributes")] + pub attributes: Option, + /// The ID of the maintenance. + #[serde(rename = "id")] + pub id: Option, + /// The relationships of a maintenance. + #[serde(rename = "relationships")] + pub relationships: Option, + /// Maintenances resource type. + #[serde(rename = "type")] + pub type_: crate::datadogV2::model::PatchMaintenanceRequestDataType, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceData { + pub fn new(type_: crate::datadogV2::model::PatchMaintenanceRequestDataType) -> MaintenanceData { + MaintenanceData { + attributes: None, + id: None, + relationships: None, + type_, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn attributes(mut self, value: crate::datadogV2::model::MaintenanceDataAttributes) -> Self { + self.attributes = Some(value); + self + } + + pub fn id(mut self, value: uuid::Uuid) -> Self { + self.id = Some(value); + self + } + + pub fn relationships( + mut self, + value: crate::datadogV2::model::MaintenanceDataRelationships, + ) -> Self { + self.relationships = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for MaintenanceData { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataVisitor; + impl<'a> Visitor<'a> for MaintenanceDataVisitor { + type Value = MaintenanceData; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut attributes: Option = + None; + let mut id: Option = None; + let mut relationships: Option< + crate::datadogV2::model::MaintenanceDataRelationships, + > = None; + let mut type_: Option = + None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "attributes" => { + if v.is_null() { + continue; + } + attributes = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "id" => { + if v.is_null() { + continue; + } + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "relationships" => { + if v.is_null() { + continue; + } + relationships = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::PatchMaintenanceRequestDataType::UnparsedObject(_type_) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; + + let content = MaintenanceData { + attributes, + id, + relationships, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_attributes.rs b/src/datadogV2/model/model_maintenance_data_attributes.rs new file mode 100644 index 000000000..6581c8615 --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_attributes.rs @@ -0,0 +1,305 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +/// The attributes of a maintenance. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataAttributes { + /// Timestamp of when the maintenance was completed. + #[serde(rename = "completed_date")] + pub completed_date: Option>, + /// The description shown when the maintenance is completed. + #[serde(rename = "completed_description")] + pub completed_description: Option, + /// Components affected by the maintenance. + #[serde(rename = "components_affected")] + pub components_affected: + Option>, + /// The description shown while the maintenance is in progress. + #[serde(rename = "in_progress_description")] + pub in_progress_description: Option, + /// Timestamp of when the maintenance was last modified. + #[serde(rename = "modified_at")] + pub modified_at: Option>, + /// Timestamp of when the maintenance was published. + #[serde(rename = "published_date")] + pub published_date: Option>, + /// The description shown when the maintenance is scheduled. + #[serde(rename = "scheduled_description")] + pub scheduled_description: Option, + /// Timestamp of when the maintenance is scheduled to start. + #[serde(rename = "start_date")] + pub start_date: Option>, + /// The status of the maintenance. + #[serde(rename = "status")] + pub status: Option, + /// Title of the maintenance. + #[serde(rename = "title")] + pub title: Option, + /// Past updates made to the maintenance. + #[serde(rename = "updates")] + pub updates: Option>, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataAttributes { + pub fn new() -> MaintenanceDataAttributes { + MaintenanceDataAttributes { + completed_date: None, + completed_description: None, + components_affected: None, + in_progress_description: None, + modified_at: None, + published_date: None, + scheduled_description: None, + start_date: None, + status: None, + title: None, + updates: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn completed_date(mut self, value: chrono::DateTime) -> Self { + self.completed_date = Some(value); + self + } + + pub fn completed_description(mut self, value: String) -> Self { + self.completed_description = Some(value); + self + } + + pub fn components_affected( + mut self, + value: Vec, + ) -> Self { + self.components_affected = Some(value); + self + } + + pub fn in_progress_description(mut self, value: String) -> Self { + self.in_progress_description = Some(value); + self + } + + pub fn modified_at(mut self, value: chrono::DateTime) -> Self { + self.modified_at = Some(value); + self + } + + pub fn published_date(mut self, value: chrono::DateTime) -> Self { + self.published_date = Some(value); + self + } + + pub fn scheduled_description(mut self, value: String) -> Self { + self.scheduled_description = Some(value); + self + } + + pub fn start_date(mut self, value: chrono::DateTime) -> Self { + self.start_date = Some(value); + self + } + + pub fn status( + mut self, + value: crate::datadogV2::model::MaintenanceDataAttributesStatus, + ) -> Self { + self.status = Some(value); + self + } + + pub fn title(mut self, value: String) -> Self { + self.title = Some(value); + self + } + + pub fn updates( + mut self, + value: Vec, + ) -> Self { + self.updates = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for MaintenanceDataAttributes { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataAttributes { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataAttributesVisitor; + impl<'a> Visitor<'a> for MaintenanceDataAttributesVisitor { + type Value = MaintenanceDataAttributes; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut completed_date: Option> = None; + let mut completed_description: Option = None; + let mut components_affected: Option< + Vec, + > = None; + let mut in_progress_description: Option = None; + let mut modified_at: Option> = None; + let mut published_date: Option> = None; + let mut scheduled_description: Option = None; + let mut start_date: Option> = None; + let mut status: Option = + None; + let mut title: Option = None; + let mut updates: Option< + Vec, + > = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "completed_date" => { + if v.is_null() { + continue; + } + completed_date = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "completed_description" => { + if v.is_null() { + continue; + } + completed_description = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "components_affected" => { + if v.is_null() { + continue; + } + components_affected = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "in_progress_description" => { + if v.is_null() { + continue; + } + in_progress_description = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "modified_at" => { + if v.is_null() { + continue; + } + modified_at = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "published_date" => { + if v.is_null() { + continue; + } + published_date = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "scheduled_description" => { + if v.is_null() { + continue; + } + scheduled_description = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "start_date" => { + if v.is_null() { + continue; + } + start_date = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "status" => { + if v.is_null() { + continue; + } + status = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _status) = status { + match _status { + crate::datadogV2::model::MaintenanceDataAttributesStatus::UnparsedObject(_status) => { + _unparsed = true; + }, + _ => {} + } + } + } + "title" => { + if v.is_null() { + continue; + } + title = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "updates" => { + if v.is_null() { + continue; + } + updates = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = MaintenanceDataAttributes { + completed_date, + completed_description, + components_affected, + in_progress_description, + modified_at, + published_date, + scheduled_description, + start_date, + status, + title, + updates, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataAttributesVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_attributes_components_affected_items.rs b/src/datadogV2/model/model_maintenance_data_attributes_components_affected_items.rs new file mode 100644 index 000000000..06a84b001 --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_attributes_components_affected_items.rs @@ -0,0 +1,130 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataAttributesComponentsAffectedItems { + /// The ID of the component. Must be a component of type `component`. + #[serde(rename = "id")] + pub id: uuid::Uuid, + /// The name of the component. + #[serde(rename = "name")] + pub name: Option, + /// The status of the component. + #[serde(rename = "status")] + pub status: + crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataAttributesComponentsAffectedItems { + pub fn new( + id: uuid::Uuid, + status: crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus, + ) -> MaintenanceDataAttributesComponentsAffectedItems { + MaintenanceDataAttributesComponentsAffectedItems { + id, + name: None, + status, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn name(mut self, value: String) -> Self { + self.name = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataAttributesComponentsAffectedItems { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataAttributesComponentsAffectedItemsVisitor; + impl<'a> Visitor<'a> for MaintenanceDataAttributesComponentsAffectedItemsVisitor { + type Value = MaintenanceDataAttributesComponentsAffectedItems; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut id: Option = None; + let mut name: Option = None; + let mut status: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "id" => { + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "name" => { + if v.is_null() { + continue; + } + name = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "status" => { + status = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _status) = status { + match _status { + crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus::UnparsedObject(_status) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let id = id.ok_or_else(|| M::Error::missing_field("id"))?; + let status = status.ok_or_else(|| M::Error::missing_field("status"))?; + + let content = MaintenanceDataAttributesComponentsAffectedItems { + id, + name, + status, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataAttributesComponentsAffectedItemsVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_attributes_status.rs b/src/datadogV2/model/model_maintenance_data_attributes_status.rs new file mode 100644 index 000000000..2a8e97131 --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_attributes_status.rs @@ -0,0 +1,54 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. + +use serde::{Deserialize, Deserializer, Serialize, Serializer}; + +#[non_exhaustive] +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum MaintenanceDataAttributesStatus { + SCHEDULED, + IN_PROGRESS, + COMPLETED, + UnparsedObject(crate::datadog::UnparsedObject), +} + +impl ToString for MaintenanceDataAttributesStatus { + fn to_string(&self) -> String { + match self { + Self::SCHEDULED => String::from("scheduled"), + Self::IN_PROGRESS => String::from("in_progress"), + Self::COMPLETED => String::from("completed"), + Self::UnparsedObject(v) => v.value.to_string(), + } + } +} + +impl Serialize for MaintenanceDataAttributesStatus { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + match self { + Self::UnparsedObject(v) => v.serialize(serializer), + _ => serializer.serialize_str(self.to_string().as_str()), + } + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataAttributesStatus { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s: String = String::deserialize(deserializer)?; + Ok(match s.as_str() { + "scheduled" => Self::SCHEDULED, + "in_progress" => Self::IN_PROGRESS, + "completed" => Self::COMPLETED, + _ => Self::UnparsedObject(crate::datadog::UnparsedObject { + value: serde_json::Value::String(s.into()), + }), + }) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_attributes_updates_items.rs b/src/datadogV2/model/model_maintenance_data_attributes_updates_items.rs new file mode 100644 index 000000000..a452c0af0 --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_attributes_updates_items.rs @@ -0,0 +1,234 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataAttributesUpdatesItems { + /// The components affected at the time of the update. + #[serde(rename = "components_affected")] + pub components_affected: Option< + Vec, + >, + /// Timestamp of when the update was created. + #[serde(rename = "created_at")] + pub created_at: Option>, + /// Description of the update. + #[serde(rename = "description")] + pub description: Option, + /// Identifier of the update. + #[serde(rename = "id")] + pub id: Option, + /// Whether the update was applied manually by a user (true) or automatically by the system (false). + #[serde(rename = "manual_transition")] + pub manual_transition: Option, + /// Timestamp of when the update was last modified. + #[serde(rename = "modified_at")] + pub modified_at: Option>, + /// Timestamp of when the update started. + #[serde(rename = "started_at")] + pub started_at: Option>, + /// The status of the update. + #[serde(rename = "status")] + pub status: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataAttributesUpdatesItems { + pub fn new() -> MaintenanceDataAttributesUpdatesItems { + MaintenanceDataAttributesUpdatesItems { + components_affected: None, + created_at: None, + description: None, + id: None, + manual_transition: None, + modified_at: None, + started_at: None, + status: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn components_affected( + mut self, + value: Vec< + crate::datadogV2::model::MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems, + >, + ) -> Self { + self.components_affected = Some(value); + self + } + + pub fn created_at(mut self, value: chrono::DateTime) -> Self { + self.created_at = Some(value); + self + } + + pub fn description(mut self, value: String) -> Self { + self.description = Some(value); + self + } + + pub fn id(mut self, value: uuid::Uuid) -> Self { + self.id = Some(value); + self + } + + pub fn manual_transition(mut self, value: bool) -> Self { + self.manual_transition = Some(value); + self + } + + pub fn modified_at(mut self, value: chrono::DateTime) -> Self { + self.modified_at = Some(value); + self + } + + pub fn started_at(mut self, value: chrono::DateTime) -> Self { + self.started_at = Some(value); + self + } + + pub fn status(mut self, value: String) -> Self { + self.status = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for MaintenanceDataAttributesUpdatesItems { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataAttributesUpdatesItems { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataAttributesUpdatesItemsVisitor; + impl<'a> Visitor<'a> for MaintenanceDataAttributesUpdatesItemsVisitor { + type Value = MaintenanceDataAttributesUpdatesItems; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut components_affected: Option> = None; + let mut created_at: Option> = None; + let mut description: Option = None; + let mut id: Option = None; + let mut manual_transition: Option = None; + let mut modified_at: Option> = None; + let mut started_at: Option> = None; + let mut status: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "components_affected" => { + if v.is_null() { + continue; + } + components_affected = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "created_at" => { + if v.is_null() { + continue; + } + created_at = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "description" => { + if v.is_null() { + continue; + } + description = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "id" => { + if v.is_null() { + continue; + } + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "manual_transition" => { + if v.is_null() { + continue; + } + manual_transition = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "modified_at" => { + if v.is_null() { + continue; + } + modified_at = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "started_at" => { + if v.is_null() { + continue; + } + started_at = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "status" => { + if v.is_null() { + continue; + } + status = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = MaintenanceDataAttributesUpdatesItems { + components_affected, + created_at, + description, + id, + manual_transition, + modified_at, + started_at, + status, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataAttributesUpdatesItemsVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_attributes_updates_items_components_affected_items.rs b/src/datadogV2/model/model_maintenance_data_attributes_updates_items_components_affected_items.rs new file mode 100644 index 000000000..9b6a0b0d9 --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_attributes_updates_items_components_affected_items.rs @@ -0,0 +1,131 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems { + /// Identifier of the component affected at the time of the update. + #[serde(rename = "id")] + pub id: uuid::Uuid, + /// The name of the component affected at the time of the update. + #[serde(rename = "name")] + pub name: Option, + /// The status of the component. + #[serde(rename = "status")] + pub status: + crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems { + pub fn new( + id: uuid::Uuid, + status: crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus, + ) -> MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems { + MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems { + id, + name: None, + status, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn name(mut self, value: String) -> Self { + self.name = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataAttributesUpdatesItemsComponentsAffectedItemsVisitor; + impl<'a> Visitor<'a> for MaintenanceDataAttributesUpdatesItemsComponentsAffectedItemsVisitor { + type Value = MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut id: Option = None; + let mut name: Option = None; + let mut status: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "id" => { + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "name" => { + if v.is_null() { + continue; + } + name = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "status" => { + status = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _status) = status { + match _status { + crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus::UnparsedObject(_status) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let id = id.ok_or_else(|| M::Error::missing_field("id"))?; + let status = status.ok_or_else(|| M::Error::missing_field("status"))?; + + let content = MaintenanceDataAttributesUpdatesItemsComponentsAffectedItems { + id, + name, + status, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer + .deserialize_any(MaintenanceDataAttributesUpdatesItemsComponentsAffectedItemsVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_relationships.rs b/src/datadogV2/model/model_maintenance_data_relationships.rs new file mode 100644 index 000000000..1f7dadccb --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_relationships.rs @@ -0,0 +1,155 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +/// The relationships of a maintenance. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataRelationships { + #[serde(rename = "created_by_user")] + pub created_by_user: Option, + #[serde(rename = "last_modified_by_user")] + pub last_modified_by_user: + Option, + #[serde(rename = "status_page")] + pub status_page: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataRelationships { + pub fn new() -> MaintenanceDataRelationships { + MaintenanceDataRelationships { + created_by_user: None, + last_modified_by_user: None, + status_page: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn created_by_user( + mut self, + value: crate::datadogV2::model::MaintenanceDataRelationshipsCreatedByUser, + ) -> Self { + self.created_by_user = Some(value); + self + } + + pub fn last_modified_by_user( + mut self, + value: crate::datadogV2::model::MaintenanceDataRelationshipsLastModifiedByUser, + ) -> Self { + self.last_modified_by_user = Some(value); + self + } + + pub fn status_page( + mut self, + value: crate::datadogV2::model::MaintenanceDataRelationshipsStatusPage, + ) -> Self { + self.status_page = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for MaintenanceDataRelationships { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataRelationships { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataRelationshipsVisitor; + impl<'a> Visitor<'a> for MaintenanceDataRelationshipsVisitor { + type Value = MaintenanceDataRelationships; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut created_by_user: Option< + crate::datadogV2::model::MaintenanceDataRelationshipsCreatedByUser, + > = None; + let mut last_modified_by_user: Option< + crate::datadogV2::model::MaintenanceDataRelationshipsLastModifiedByUser, + > = None; + let mut status_page: Option< + crate::datadogV2::model::MaintenanceDataRelationshipsStatusPage, + > = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "created_by_user" => { + if v.is_null() { + continue; + } + created_by_user = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "last_modified_by_user" => { + if v.is_null() { + continue; + } + last_modified_by_user = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "status_page" => { + if v.is_null() { + continue; + } + status_page = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = MaintenanceDataRelationships { + created_by_user, + last_modified_by_user, + status_page, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataRelationshipsVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_relationships_created_by_user.rs b/src/datadogV2/model/model_maintenance_data_relationships_created_by_user.rs new file mode 100644 index 000000000..112d3e891 --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_relationships_created_by_user.rs @@ -0,0 +1,94 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataRelationshipsCreatedByUser { + #[serde(rename = "data")] + pub data: crate::datadogV2::model::MaintenanceDataRelationshipsCreatedByUserData, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataRelationshipsCreatedByUser { + pub fn new( + data: crate::datadogV2::model::MaintenanceDataRelationshipsCreatedByUserData, + ) -> MaintenanceDataRelationshipsCreatedByUser { + MaintenanceDataRelationshipsCreatedByUser { + data, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataRelationshipsCreatedByUser { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataRelationshipsCreatedByUserVisitor; + impl<'a> Visitor<'a> for MaintenanceDataRelationshipsCreatedByUserVisitor { + type Value = MaintenanceDataRelationshipsCreatedByUser; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut data: Option< + crate::datadogV2::model::MaintenanceDataRelationshipsCreatedByUserData, + > = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "data" => { + data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let data = data.ok_or_else(|| M::Error::missing_field("data"))?; + + let content = MaintenanceDataRelationshipsCreatedByUser { + data, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataRelationshipsCreatedByUserVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_relationships_created_by_user_data.rs b/src/datadogV2/model/model_maintenance_data_relationships_created_by_user_data.rs new file mode 100644 index 000000000..6bd4257b3 --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_relationships_created_by_user_data.rs @@ -0,0 +1,112 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataRelationshipsCreatedByUserData { + /// The ID of the Datadog user who created the maintenance. + #[serde(rename = "id")] + pub id: uuid::Uuid, + /// Users resource type. + #[serde(rename = "type")] + pub type_: crate::datadogV2::model::StatusPagesUserType, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataRelationshipsCreatedByUserData { + pub fn new( + id: uuid::Uuid, + type_: crate::datadogV2::model::StatusPagesUserType, + ) -> MaintenanceDataRelationshipsCreatedByUserData { + MaintenanceDataRelationshipsCreatedByUserData { + id, + type_, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataRelationshipsCreatedByUserData { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataRelationshipsCreatedByUserDataVisitor; + impl<'a> Visitor<'a> for MaintenanceDataRelationshipsCreatedByUserDataVisitor { + type Value = MaintenanceDataRelationshipsCreatedByUserData; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut id: Option = None; + let mut type_: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "id" => { + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::StatusPagesUserType::UnparsedObject(_type_) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let id = id.ok_or_else(|| M::Error::missing_field("id"))?; + let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; + + let content = MaintenanceDataRelationshipsCreatedByUserData { + id, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataRelationshipsCreatedByUserDataVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_relationships_last_modified_by_user.rs b/src/datadogV2/model/model_maintenance_data_relationships_last_modified_by_user.rs new file mode 100644 index 000000000..d10a6ac25 --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_relationships_last_modified_by_user.rs @@ -0,0 +1,94 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataRelationshipsLastModifiedByUser { + #[serde(rename = "data")] + pub data: crate::datadogV2::model::MaintenanceDataRelationshipsLastModifiedByUserData, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataRelationshipsLastModifiedByUser { + pub fn new( + data: crate::datadogV2::model::MaintenanceDataRelationshipsLastModifiedByUserData, + ) -> MaintenanceDataRelationshipsLastModifiedByUser { + MaintenanceDataRelationshipsLastModifiedByUser { + data, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataRelationshipsLastModifiedByUser { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataRelationshipsLastModifiedByUserVisitor; + impl<'a> Visitor<'a> for MaintenanceDataRelationshipsLastModifiedByUserVisitor { + type Value = MaintenanceDataRelationshipsLastModifiedByUser; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut data: Option< + crate::datadogV2::model::MaintenanceDataRelationshipsLastModifiedByUserData, + > = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "data" => { + data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let data = data.ok_or_else(|| M::Error::missing_field("data"))?; + + let content = MaintenanceDataRelationshipsLastModifiedByUser { + data, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataRelationshipsLastModifiedByUserVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_relationships_last_modified_by_user_data.rs b/src/datadogV2/model/model_maintenance_data_relationships_last_modified_by_user_data.rs new file mode 100644 index 000000000..2bbeeb8c0 --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_relationships_last_modified_by_user_data.rs @@ -0,0 +1,112 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataRelationshipsLastModifiedByUserData { + /// The ID of the Datadog user who last modified the maintenance. + #[serde(rename = "id")] + pub id: uuid::Uuid, + /// Users resource type. + #[serde(rename = "type")] + pub type_: crate::datadogV2::model::StatusPagesUserType, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataRelationshipsLastModifiedByUserData { + pub fn new( + id: uuid::Uuid, + type_: crate::datadogV2::model::StatusPagesUserType, + ) -> MaintenanceDataRelationshipsLastModifiedByUserData { + MaintenanceDataRelationshipsLastModifiedByUserData { + id, + type_, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataRelationshipsLastModifiedByUserData { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataRelationshipsLastModifiedByUserDataVisitor; + impl<'a> Visitor<'a> for MaintenanceDataRelationshipsLastModifiedByUserDataVisitor { + type Value = MaintenanceDataRelationshipsLastModifiedByUserData; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut id: Option = None; + let mut type_: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "id" => { + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::StatusPagesUserType::UnparsedObject(_type_) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let id = id.ok_or_else(|| M::Error::missing_field("id"))?; + let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; + + let content = MaintenanceDataRelationshipsLastModifiedByUserData { + id, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataRelationshipsLastModifiedByUserDataVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_relationships_status_page.rs b/src/datadogV2/model/model_maintenance_data_relationships_status_page.rs new file mode 100644 index 000000000..4274b052a --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_relationships_status_page.rs @@ -0,0 +1,94 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataRelationshipsStatusPage { + #[serde(rename = "data")] + pub data: crate::datadogV2::model::MaintenanceDataRelationshipsStatusPageData, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataRelationshipsStatusPage { + pub fn new( + data: crate::datadogV2::model::MaintenanceDataRelationshipsStatusPageData, + ) -> MaintenanceDataRelationshipsStatusPage { + MaintenanceDataRelationshipsStatusPage { + data, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataRelationshipsStatusPage { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataRelationshipsStatusPageVisitor; + impl<'a> Visitor<'a> for MaintenanceDataRelationshipsStatusPageVisitor { + type Value = MaintenanceDataRelationshipsStatusPage; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut data: Option< + crate::datadogV2::model::MaintenanceDataRelationshipsStatusPageData, + > = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "data" => { + data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let data = data.ok_or_else(|| M::Error::missing_field("data"))?; + + let content = MaintenanceDataRelationshipsStatusPage { + data, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataRelationshipsStatusPageVisitor) + } +} diff --git a/src/datadogV2/model/model_maintenance_data_relationships_status_page_data.rs b/src/datadogV2/model/model_maintenance_data_relationships_status_page_data.rs new file mode 100644 index 000000000..b2a198ad8 --- /dev/null +++ b/src/datadogV2/model/model_maintenance_data_relationships_status_page_data.rs @@ -0,0 +1,114 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct MaintenanceDataRelationshipsStatusPageData { + /// The ID of the status page. + #[serde(rename = "id")] + pub id: uuid::Uuid, + /// Status pages resource type. + #[serde(rename = "type")] + pub type_: crate::datadogV2::model::StatusPageDataType, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl MaintenanceDataRelationshipsStatusPageData { + pub fn new( + id: uuid::Uuid, + type_: crate::datadogV2::model::StatusPageDataType, + ) -> MaintenanceDataRelationshipsStatusPageData { + MaintenanceDataRelationshipsStatusPageData { + id, + type_, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for MaintenanceDataRelationshipsStatusPageData { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct MaintenanceDataRelationshipsStatusPageDataVisitor; + impl<'a> Visitor<'a> for MaintenanceDataRelationshipsStatusPageDataVisitor { + type Value = MaintenanceDataRelationshipsStatusPageData; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut id: Option = None; + let mut type_: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "id" => { + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::StatusPageDataType::UnparsedObject( + _type_, + ) => { + _unparsed = true; + } + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let id = id.ok_or_else(|| M::Error::missing_field("id"))?; + let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; + + let content = MaintenanceDataRelationshipsStatusPageData { + id, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(MaintenanceDataRelationshipsStatusPageDataVisitor) + } +} diff --git a/src/datadogV2/model/model_status_pages_response_meta.rs b/src/datadogV2/model/model_pagination_meta.rs similarity index 77% rename from src/datadogV2/model/model_status_pages_response_meta.rs rename to src/datadogV2/model/model_pagination_meta.rs index 76026be77..cda0edb7e 100644 --- a/src/datadogV2/model/model_status_pages_response_meta.rs +++ b/src/datadogV2/model/model_pagination_meta.rs @@ -10,10 +10,10 @@ use std::fmt::{self, Formatter}; #[non_exhaustive] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] -pub struct StatusPagesResponseMeta { +pub struct PaginationMeta { /// Offset-based pagination schema. #[serde(rename = "page")] - pub page: Option, + pub page: Option, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -21,16 +21,16 @@ pub struct StatusPagesResponseMeta { pub(crate) _unparsed: bool, } -impl StatusPagesResponseMeta { - pub fn new() -> StatusPagesResponseMeta { - StatusPagesResponseMeta { +impl PaginationMeta { + pub fn new() -> PaginationMeta { + PaginationMeta { page: None, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, } } - pub fn page(mut self, value: crate::datadogV2::model::StatusPagesPagination) -> Self { + pub fn page(mut self, value: crate::datadogV2::model::PaginationMetaPage) -> Self { self.page = Some(value); self } @@ -44,20 +44,20 @@ impl StatusPagesResponseMeta { } } -impl Default for StatusPagesResponseMeta { +impl Default for PaginationMeta { fn default() -> Self { Self::new() } } -impl<'de> Deserialize<'de> for StatusPagesResponseMeta { +impl<'de> Deserialize<'de> for PaginationMeta { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { - struct StatusPagesResponseMetaVisitor; - impl<'a> Visitor<'a> for StatusPagesResponseMetaVisitor { - type Value = StatusPagesResponseMeta; + struct PaginationMetaVisitor; + impl<'a> Visitor<'a> for PaginationMetaVisitor { + type Value = PaginationMeta; fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { f.write_str("a mapping") @@ -67,7 +67,7 @@ impl<'de> Deserialize<'de> for StatusPagesResponseMeta { where M: MapAccess<'a>, { - let mut page: Option = None; + let mut page: Option = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, @@ -90,7 +90,7 @@ impl<'de> Deserialize<'de> for StatusPagesResponseMeta { } } - let content = StatusPagesResponseMeta { + let content = PaginationMeta { page, additional_properties, _unparsed, @@ -100,6 +100,6 @@ impl<'de> Deserialize<'de> for StatusPagesResponseMeta { } } - deserializer.deserialize_any(StatusPagesResponseMetaVisitor) + deserializer.deserialize_any(PaginationMetaVisitor) } } diff --git a/src/datadogV2/model/model_status_pages_pagination.rs b/src/datadogV2/model/model_pagination_meta_page.rs similarity index 88% rename from src/datadogV2/model/model_status_pages_pagination.rs rename to src/datadogV2/model/model_pagination_meta_page.rs index 5b21a3ef6..97d11b924 100644 --- a/src/datadogV2/model/model_status_pages_pagination.rs +++ b/src/datadogV2/model/model_pagination_meta_page.rs @@ -10,7 +10,7 @@ use std::fmt::{self, Formatter}; #[non_exhaustive] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] -pub struct StatusPagesPagination { +pub struct PaginationMetaPage { /// Integer representing the offset to fetch the first page of results. #[serde(rename = "first_offset")] pub first_offset: Option, @@ -21,7 +21,7 @@ pub struct StatusPagesPagination { with = "::serde_with::rust::double_option" )] pub last_offset: Option>, - /// Integer representing the number of elements to returned in the results. + /// Integer representing the number of elements to be returned in the results. #[serde(rename = "limit")] pub limit: Option, /// Integer representing the index of the first element in the next page of results. Equal to page size added to the current offset. @@ -45,7 +45,7 @@ pub struct StatusPagesPagination { #[serde(rename = "total", default, with = "::serde_with::rust::double_option")] pub total: Option>, #[serde(rename = "type")] - pub type_: Option, + pub type_: Option, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -53,9 +53,9 @@ pub struct StatusPagesPagination { pub(crate) _unparsed: bool, } -impl StatusPagesPagination { - pub fn new() -> StatusPagesPagination { - StatusPagesPagination { +impl PaginationMetaPage { + pub fn new() -> PaginationMetaPage { + PaginationMetaPage { first_offset: None, last_offset: None, limit: None, @@ -104,7 +104,7 @@ impl StatusPagesPagination { self } - pub fn type_(mut self, value: crate::datadogV2::model::StatusPagesPaginationType) -> Self { + pub fn type_(mut self, value: crate::datadogV2::model::PaginationMetaPageType) -> Self { self.type_ = Some(value); self } @@ -118,20 +118,20 @@ impl StatusPagesPagination { } } -impl Default for StatusPagesPagination { +impl Default for PaginationMetaPage { fn default() -> Self { Self::new() } } -impl<'de> Deserialize<'de> for StatusPagesPagination { +impl<'de> Deserialize<'de> for PaginationMetaPage { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { - struct StatusPagesPaginationVisitor; - impl<'a> Visitor<'a> for StatusPagesPaginationVisitor { - type Value = StatusPagesPagination; + struct PaginationMetaPageVisitor; + impl<'a> Visitor<'a> for PaginationMetaPageVisitor { + type Value = PaginationMetaPage; fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { f.write_str("a mapping") @@ -148,7 +148,7 @@ impl<'de> Deserialize<'de> for StatusPagesPagination { let mut offset: Option = None; let mut prev_offset: Option> = None; let mut total: Option> = None; - let mut type_: Option = None; + let mut type_: Option = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, @@ -198,7 +198,7 @@ impl<'de> Deserialize<'de> for StatusPagesPagination { type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); if let Some(ref _type_) = type_ { match _type_ { - crate::datadogV2::model::StatusPagesPaginationType::UnparsedObject(_type_) => { + crate::datadogV2::model::PaginationMetaPageType::UnparsedObject(_type_) => { _unparsed = true; }, _ => {} @@ -213,7 +213,7 @@ impl<'de> Deserialize<'de> for StatusPagesPagination { } } - let content = StatusPagesPagination { + let content = PaginationMetaPage { first_offset, last_offset, limit, @@ -230,6 +230,6 @@ impl<'de> Deserialize<'de> for StatusPagesPagination { } } - deserializer.deserialize_any(StatusPagesPaginationVisitor) + deserializer.deserialize_any(PaginationMetaPageVisitor) } } diff --git a/src/datadogV2/model/model_status_pages_pagination_type.rs b/src/datadogV2/model/model_pagination_meta_page_type.rs similarity index 87% rename from src/datadogV2/model/model_status_pages_pagination_type.rs rename to src/datadogV2/model/model_pagination_meta_page_type.rs index d48e9c16c..996ceaa64 100644 --- a/src/datadogV2/model/model_status_pages_pagination_type.rs +++ b/src/datadogV2/model/model_pagination_meta_page_type.rs @@ -6,12 +6,12 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer}; #[non_exhaustive] #[derive(Clone, Debug, Eq, PartialEq)] -pub enum StatusPagesPaginationType { +pub enum PaginationMetaPageType { OFFSET_LIMIT, UnparsedObject(crate::datadog::UnparsedObject), } -impl ToString for StatusPagesPaginationType { +impl ToString for PaginationMetaPageType { fn to_string(&self) -> String { match self { Self::OFFSET_LIMIT => String::from("offset_limit"), @@ -20,7 +20,7 @@ impl ToString for StatusPagesPaginationType { } } -impl Serialize for StatusPagesPaginationType { +impl Serialize for PaginationMetaPageType { fn serialize(&self, serializer: S) -> Result where S: Serializer, @@ -32,7 +32,7 @@ impl Serialize for StatusPagesPaginationType { } } -impl<'de> Deserialize<'de> for StatusPagesPaginationType { +impl<'de> Deserialize<'de> for PaginationMetaPageType { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, diff --git a/src/datadogV2/model/model_patch_maintenance_request.rs b/src/datadogV2/model/model_patch_maintenance_request.rs new file mode 100644 index 000000000..1c06700af --- /dev/null +++ b/src/datadogV2/model/model_patch_maintenance_request.rs @@ -0,0 +1,103 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct PatchMaintenanceRequest { + #[serde(rename = "data")] + pub data: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl PatchMaintenanceRequest { + pub fn new() -> PatchMaintenanceRequest { + PatchMaintenanceRequest { + data: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn data(mut self, value: crate::datadogV2::model::PatchMaintenanceRequestData) -> Self { + self.data = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for PatchMaintenanceRequest { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for PatchMaintenanceRequest { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct PatchMaintenanceRequestVisitor; + impl<'a> Visitor<'a> for PatchMaintenanceRequestVisitor { + type Value = PatchMaintenanceRequest; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut data: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "data" => { + if v.is_null() { + continue; + } + data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = PatchMaintenanceRequest { + data, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(PatchMaintenanceRequestVisitor) + } +} diff --git a/src/datadogV2/model/model_patch_maintenance_request_data.rs b/src/datadogV2/model/model_patch_maintenance_request_data.rs new file mode 100644 index 000000000..85b5876df --- /dev/null +++ b/src/datadogV2/model/model_patch_maintenance_request_data.rs @@ -0,0 +1,126 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct PatchMaintenanceRequestData { + /// The supported attributes for updating a maintenance. + #[serde(rename = "attributes")] + pub attributes: crate::datadogV2::model::PatchMaintenanceRequestDataAttributes, + /// The ID of the maintenance. + #[serde(rename = "id")] + pub id: uuid::Uuid, + /// Maintenances resource type. + #[serde(rename = "type")] + pub type_: crate::datadogV2::model::PatchMaintenanceRequestDataType, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl PatchMaintenanceRequestData { + pub fn new( + attributes: crate::datadogV2::model::PatchMaintenanceRequestDataAttributes, + id: uuid::Uuid, + type_: crate::datadogV2::model::PatchMaintenanceRequestDataType, + ) -> PatchMaintenanceRequestData { + PatchMaintenanceRequestData { + attributes, + id, + type_, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for PatchMaintenanceRequestData { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct PatchMaintenanceRequestDataVisitor; + impl<'a> Visitor<'a> for PatchMaintenanceRequestDataVisitor { + type Value = PatchMaintenanceRequestData; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut attributes: Option< + crate::datadogV2::model::PatchMaintenanceRequestDataAttributes, + > = None; + let mut id: Option = None; + let mut type_: Option = + None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "attributes" => { + attributes = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "id" => { + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::PatchMaintenanceRequestDataType::UnparsedObject(_type_) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let attributes = attributes.ok_or_else(|| M::Error::missing_field("attributes"))?; + let id = id.ok_or_else(|| M::Error::missing_field("id"))?; + let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; + + let content = PatchMaintenanceRequestData { + attributes, + id, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(PatchMaintenanceRequestDataVisitor) + } +} diff --git a/src/datadogV2/model/model_patch_maintenance_request_data_attributes.rs b/src/datadogV2/model/model_patch_maintenance_request_data_attributes.rs new file mode 100644 index 000000000..5689a0923 --- /dev/null +++ b/src/datadogV2/model/model_patch_maintenance_request_data_attributes.rs @@ -0,0 +1,248 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +/// The supported attributes for updating a maintenance. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct PatchMaintenanceRequestDataAttributes { + /// Timestamp of when the maintenance was completed. + #[serde(rename = "completed_date")] + pub completed_date: Option>, + /// The description shown when the maintenance is completed. + #[serde(rename = "completed_description")] + pub completed_description: Option, + /// The components affected by the maintenance. + #[serde(rename = "components_affected")] + pub components_affected: Option< + Vec, + >, + /// The description shown while the maintenance is in progress. + #[serde(rename = "in_progress_description")] + pub in_progress_description: Option, + /// The description shown when the maintenance is scheduled. + #[serde(rename = "scheduled_description")] + pub scheduled_description: Option, + /// Timestamp of when the maintenance is scheduled to start. + #[serde(rename = "start_date")] + pub start_date: Option>, + /// The status of the maintenance. + #[serde(rename = "status")] + pub status: Option, + /// The title of the maintenance. + #[serde(rename = "title")] + pub title: Option, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl PatchMaintenanceRequestDataAttributes { + pub fn new() -> PatchMaintenanceRequestDataAttributes { + PatchMaintenanceRequestDataAttributes { + completed_date: None, + completed_description: None, + components_affected: None, + in_progress_description: None, + scheduled_description: None, + start_date: None, + status: None, + title: None, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn completed_date(mut self, value: chrono::DateTime) -> Self { + self.completed_date = Some(value); + self + } + + pub fn completed_description(mut self, value: String) -> Self { + self.completed_description = Some(value); + self + } + + pub fn components_affected( + mut self, + value: Vec< + crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItems, + >, + ) -> Self { + self.components_affected = Some(value); + self + } + + pub fn in_progress_description(mut self, value: String) -> Self { + self.in_progress_description = Some(value); + self + } + + pub fn scheduled_description(mut self, value: String) -> Self { + self.scheduled_description = Some(value); + self + } + + pub fn start_date(mut self, value: chrono::DateTime) -> Self { + self.start_date = Some(value); + self + } + + pub fn status( + mut self, + value: crate::datadogV2::model::MaintenanceDataAttributesStatus, + ) -> Self { + self.status = Some(value); + self + } + + pub fn title(mut self, value: String) -> Self { + self.title = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl Default for PatchMaintenanceRequestDataAttributes { + fn default() -> Self { + Self::new() + } +} + +impl<'de> Deserialize<'de> for PatchMaintenanceRequestDataAttributes { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct PatchMaintenanceRequestDataAttributesVisitor; + impl<'a> Visitor<'a> for PatchMaintenanceRequestDataAttributesVisitor { + type Value = PatchMaintenanceRequestDataAttributes; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut completed_date: Option> = None; + let mut completed_description: Option = None; + let mut components_affected: Option> = None; + let mut in_progress_description: Option = None; + let mut scheduled_description: Option = None; + let mut start_date: Option> = None; + let mut status: Option = + None; + let mut title: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "completed_date" => { + if v.is_null() { + continue; + } + completed_date = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "completed_description" => { + if v.is_null() { + continue; + } + completed_description = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "components_affected" => { + if v.is_null() { + continue; + } + components_affected = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "in_progress_description" => { + if v.is_null() { + continue; + } + in_progress_description = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "scheduled_description" => { + if v.is_null() { + continue; + } + scheduled_description = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "start_date" => { + if v.is_null() { + continue; + } + start_date = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "status" => { + if v.is_null() { + continue; + } + status = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _status) = status { + match _status { + crate::datadogV2::model::MaintenanceDataAttributesStatus::UnparsedObject(_status) => { + _unparsed = true; + }, + _ => {} + } + } + } + "title" => { + if v.is_null() { + continue; + } + title = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + + let content = PatchMaintenanceRequestDataAttributes { + completed_date, + completed_description, + components_affected, + in_progress_description, + scheduled_description, + start_date, + status, + title, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(PatchMaintenanceRequestDataAttributesVisitor) + } +} diff --git a/src/datadogV2/model/model_patch_maintenance_request_data_attributes_components_affected_items.rs b/src/datadogV2/model/model_patch_maintenance_request_data_attributes_components_affected_items.rs new file mode 100644 index 000000000..7e595dbf1 --- /dev/null +++ b/src/datadogV2/model/model_patch_maintenance_request_data_attributes_components_affected_items.rs @@ -0,0 +1,131 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct PatchMaintenanceRequestDataAttributesComponentsAffectedItems { + /// The ID of the component. Must be a component of type `component`. + #[serde(rename = "id")] + pub id: uuid::Uuid, + /// The name of the component. + #[serde(rename = "name")] + pub name: Option, + /// The status of the component. + #[serde(rename = "status")] + pub status: + crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl PatchMaintenanceRequestDataAttributesComponentsAffectedItems { + pub fn new( + id: uuid::Uuid, + status: crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus, + ) -> PatchMaintenanceRequestDataAttributesComponentsAffectedItems { + PatchMaintenanceRequestDataAttributesComponentsAffectedItems { + id, + name: None, + status, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn name(mut self, value: String) -> Self { + self.name = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for PatchMaintenanceRequestDataAttributesComponentsAffectedItems { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct PatchMaintenanceRequestDataAttributesComponentsAffectedItemsVisitor; + impl<'a> Visitor<'a> for PatchMaintenanceRequestDataAttributesComponentsAffectedItemsVisitor { + type Value = PatchMaintenanceRequestDataAttributesComponentsAffectedItems; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut id: Option = None; + let mut name: Option = None; + let mut status: Option = None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "id" => { + id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "name" => { + if v.is_null() { + continue; + } + name = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "status" => { + status = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _status) = status { + match _status { + crate::datadogV2::model::PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus::UnparsedObject(_status) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let id = id.ok_or_else(|| M::Error::missing_field("id"))?; + let status = status.ok_or_else(|| M::Error::missing_field("status"))?; + + let content = PatchMaintenanceRequestDataAttributesComponentsAffectedItems { + id, + name, + status, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer + .deserialize_any(PatchMaintenanceRequestDataAttributesComponentsAffectedItemsVisitor) + } +} diff --git a/src/datadogV2/model/model_patch_maintenance_request_data_attributes_components_affected_items_status.rs b/src/datadogV2/model/model_patch_maintenance_request_data_attributes_components_affected_items_status.rs new file mode 100644 index 000000000..91caacec3 --- /dev/null +++ b/src/datadogV2/model/model_patch_maintenance_request_data_attributes_components_affected_items_status.rs @@ -0,0 +1,51 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. + +use serde::{Deserialize, Deserializer, Serialize, Serializer}; + +#[non_exhaustive] +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus { + OPERATIONAL, + MAINTENANCE, + UnparsedObject(crate::datadog::UnparsedObject), +} + +impl ToString for PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus { + fn to_string(&self) -> String { + match self { + Self::OPERATIONAL => String::from("operational"), + Self::MAINTENANCE => String::from("maintenance"), + Self::UnparsedObject(v) => v.value.to_string(), + } + } +} + +impl Serialize for PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + match self { + Self::UnparsedObject(v) => v.serialize(serializer), + _ => serializer.serialize_str(self.to_string().as_str()), + } + } +} + +impl<'de> Deserialize<'de> for PatchMaintenanceRequestDataAttributesComponentsAffectedItemsStatus { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s: String = String::deserialize(deserializer)?; + Ok(match s.as_str() { + "operational" => Self::OPERATIONAL, + "maintenance" => Self::MAINTENANCE, + _ => Self::UnparsedObject(crate::datadog::UnparsedObject { + value: serde_json::Value::String(s.into()), + }), + }) + } +} diff --git a/src/datadogV2/model/model_patch_maintenance_request_data_type.rs b/src/datadogV2/model/model_patch_maintenance_request_data_type.rs new file mode 100644 index 000000000..0270ad7b4 --- /dev/null +++ b/src/datadogV2/model/model_patch_maintenance_request_data_type.rs @@ -0,0 +1,48 @@ +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2019-Present Datadog, Inc. + +use serde::{Deserialize, Deserializer, Serialize, Serializer}; + +#[non_exhaustive] +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum PatchMaintenanceRequestDataType { + MAINTENANCES, + UnparsedObject(crate::datadog::UnparsedObject), +} + +impl ToString for PatchMaintenanceRequestDataType { + fn to_string(&self) -> String { + match self { + Self::MAINTENANCES => String::from("maintenances"), + Self::UnparsedObject(v) => v.value.to_string(), + } + } +} + +impl Serialize for PatchMaintenanceRequestDataType { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + match self { + Self::UnparsedObject(v) => v.serialize(serializer), + _ => serializer.serialize_str(self.to_string().as_str()), + } + } +} + +impl<'de> Deserialize<'de> for PatchMaintenanceRequestDataType { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s: String = String::deserialize(deserializer)?; + Ok(match s.as_str() { + "maintenances" => Self::MAINTENANCES, + _ => Self::UnparsedObject(crate::datadog::UnparsedObject { + value: serde_json::Value::String(s.into()), + }), + }) + } +} diff --git a/src/datadogV2/model/model_status_page_array.rs b/src/datadogV2/model/model_status_page_array.rs index 6ea1751d3..dc288f302 100644 --- a/src/datadogV2/model/model_status_page_array.rs +++ b/src/datadogV2/model/model_status_page_array.rs @@ -17,7 +17,7 @@ pub struct StatusPageArray { pub included: Option>, /// Response metadata. #[serde(rename = "meta")] - pub meta: Option, + pub meta: Option, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -44,7 +44,7 @@ impl StatusPageArray { self } - pub fn meta(mut self, value: crate::datadogV2::model::StatusPagesResponseMeta) -> Self { + pub fn meta(mut self, value: crate::datadogV2::model::PaginationMeta) -> Self { self.meta = Some(value); self } @@ -78,7 +78,7 @@ impl<'de> Deserialize<'de> for StatusPageArray { let mut data: Option> = None; let mut included: Option> = None; - let mut meta: Option = None; + let mut meta: Option = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, diff --git a/src/datadogV2/model/model_status_pages_component_data_attributes_status.rs b/src/datadogV2/model/model_status_pages_component_data_attributes_status.rs index 867bec91e..fc2dbf171 100644 --- a/src/datadogV2/model/model_status_pages_component_data_attributes_status.rs +++ b/src/datadogV2/model/model_status_pages_component_data_attributes_status.rs @@ -11,6 +11,7 @@ pub enum StatusPagesComponentDataAttributesStatus { DEGRADED, PARTIAL_OUTAGE, MAJOR_OUTAGE, + MAINTENANCE, UnparsedObject(crate::datadog::UnparsedObject), } @@ -21,6 +22,7 @@ impl ToString for StatusPagesComponentDataAttributesStatus { Self::DEGRADED => String::from("degraded"), Self::PARTIAL_OUTAGE => String::from("partial_outage"), Self::MAJOR_OUTAGE => String::from("major_outage"), + Self::MAINTENANCE => String::from("maintenance"), Self::UnparsedObject(v) => v.value.to_string(), } } @@ -49,6 +51,7 @@ impl<'de> Deserialize<'de> for StatusPagesComponentDataAttributesStatus { "degraded" => Self::DEGRADED, "partial_outage" => Self::PARTIAL_OUTAGE, "major_outage" => Self::MAJOR_OUTAGE, + "maintenance" => Self::MAINTENANCE, _ => Self::UnparsedObject(crate::datadog::UnparsedObject { value: serde_json::Value::String(s.into()), }), diff --git a/src/datadogV2/model/model_status_pages_component_group_attributes_components_items_status.rs b/src/datadogV2/model/model_status_pages_component_group_attributes_components_items_status.rs index 57109fa29..d1620f47f 100644 --- a/src/datadogV2/model/model_status_pages_component_group_attributes_components_items_status.rs +++ b/src/datadogV2/model/model_status_pages_component_group_attributes_components_items_status.rs @@ -11,6 +11,7 @@ pub enum StatusPagesComponentGroupAttributesComponentsItemsStatus { DEGRADED, PARTIAL_OUTAGE, MAJOR_OUTAGE, + MAINTENANCE, UnparsedObject(crate::datadog::UnparsedObject), } @@ -21,6 +22,7 @@ impl ToString for StatusPagesComponentGroupAttributesComponentsItemsStatus { Self::DEGRADED => String::from("degraded"), Self::PARTIAL_OUTAGE => String::from("partial_outage"), Self::MAJOR_OUTAGE => String::from("major_outage"), + Self::MAINTENANCE => String::from("maintenance"), Self::UnparsedObject(v) => v.value.to_string(), } } @@ -49,6 +51,7 @@ impl<'de> Deserialize<'de> for StatusPagesComponentGroupAttributesComponentsItem "degraded" => Self::DEGRADED, "partial_outage" => Self::PARTIAL_OUTAGE, "major_outage" => Self::MAJOR_OUTAGE, + "maintenance" => Self::MAINTENANCE, _ => Self::UnparsedObject(crate::datadog::UnparsedObject { value: serde_json::Value::String(s.into()), }), diff --git a/tests/scenarios/cassettes/v2/status_pages/Create-component-returns-Created-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Create-component-returns-Created-response.frozen index 7323200d4..8f678f2db 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Create-component-returns-Created-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Create-component-returns-Created-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:35.707Z \ No newline at end of file +2026-02-24T17:00:35.997Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Create-component-returns-Created-response.json b/tests/scenarios/cassettes/v2/status_pages/Create-component-returns-Created-response.json index 874e225fa..44026a3f0 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Create-component-returns-Created-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Create-component-returns-Created-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"8b6cd6e80c23846d\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"df531f11f71a2e23\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"b53231b9-4737-47eb-8bb8-90d2b51e0803\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"1cdd6cef-6732-4202-934c-69eb21701b5a\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"85c38440-50b4-4db7-b9fc-4372c4b36555\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"bfd82882-3607-4d7d-8242-072ec5b94492\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:35.875217Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"8b6cd6e80c23846d\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:35.875217Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/b53231b9-4737-47eb-8bb8-90d2b51e0803/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"3483924e-54de-4b7f-9177-56f224f8c6e6\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"d03bffa2-720c-4f82-871e-3f1599d38089\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"6fe382cb-5309-49bf-b56b-c9921a7d8153\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"b8a9ac5d-2470-4c43-b90d-817ba996822c\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:36.165599Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"df531f11f71a2e23\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:36.165599Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/3483924e-54de-4b7f-9177-56f224f8c6e6/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:35 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:35 GMT" }, { "request": { @@ -49,11 +49,11 @@ ] }, "method": "post", - "uri": "https://api.datadoghq.com/api/v2/statuspages/b53231b9-4737-47eb-8bb8-90d2b51e0803/components" + "uri": "https://api.datadoghq.com/api/v2/statuspages/3483924e-54de-4b7f-9177-56f224f8c6e6/components" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"42f96d69-9136-4888-b822-ca0dc2013978\",\"type\":\"components\",\"attributes\":{\"created_at\":\"2026-01-21T21:23:36.340483Z\",\"modified_at\":\"2026-01-21T21:23:36.340483Z\",\"name\":\"Logs\",\"position\":0,\"status\":\"operational\",\"type\":\"component\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"group\":{\"data\":null},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"b53231b9-4737-47eb-8bb8-90d2b51e0803\",\"type\":\"status_pages\"}}}}}", + "string": "{\"data\":{\"id\":\"060dba63-7f63-4d0f-9278-aecabc6f9c30\",\"type\":\"components\",\"attributes\":{\"created_at\":\"2026-02-24T17:00:36.79986Z\",\"modified_at\":\"2026-02-24T17:00:36.79986Z\",\"name\":\"Logs\",\"position\":0,\"status\":\"operational\",\"type\":\"component\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"group\":{\"data\":null},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"3483924e-54de-4b7f-9177-56f224f8c6e6\",\"type\":\"status_pages\"}}}}}", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:35 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:35 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/b53231b9-4737-47eb-8bb8-90d2b51e0803/components/42f96d69-9136-4888-b822-ca0dc2013978" + "uri": "https://api.datadoghq.com/api/v2/statuspages/3483924e-54de-4b7f-9177-56f224f8c6e6/components/060dba63-7f63-4d0f-9278-aecabc6f9c30" }, "response": { "body": { @@ -90,7 +90,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:35 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:35 GMT" }, { "request": { @@ -101,7 +101,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/b53231b9-4737-47eb-8bb8-90d2b51e0803" + "uri": "https://api.datadoghq.com/api/v2/statuspages/3483924e-54de-4b7f-9177-56f224f8c6e6" }, "response": { "body": { @@ -114,7 +114,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:35 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:35 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Create-degradation-returns-Created-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Create-degradation-returns-Created-response.frozen index 2c73d0780..c66cc9f8a 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Create-degradation-returns-Created-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Create-degradation-returns-Created-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:36.959Z \ No newline at end of file +2026-02-24T17:00:37.682Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Create-degradation-returns-Created-response.json b/tests/scenarios/cassettes/v2/status_pages/Create-degradation-returns-Created-response.json index 3dad49857..80ad907da 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Create-degradation-returns-Created-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Create-degradation-returns-Created-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"f594e675bf08d5d7\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"b1d19e0dbe588b0a\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"bb4afad2-f893-464a-82a4-d2ab29d5105c\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"8b6c8c24-95a9-449b-b508-9d3320e5cba2\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"43c959d9-3dda-4dc9-ae42-74b71ea39f08\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"5dcfa87c-9147-4c77-9ef9-658ae70db253\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:37.073734Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"f594e675bf08d5d7\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:37.073734Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/bb4afad2-f893-464a-82a4-d2ab29d5105c/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"a86d9d70-4879-411d-9690-c9887c7b7d55\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"f3f5c039-10f7-4a11-a3bc-c6c84fed4e15\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"e2599d98-53df-4bff-addb-61ef4f07d5ca\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"1c5904fb-16f8-4be8-ae85-b426908e324a\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:37.855421Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"b1d19e0dbe588b0a\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:37.855421Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/a86d9d70-4879-411d-9690-c9887c7b7d55/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:36 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:37 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components_affected\":[{\"id\":\"43c959d9-3dda-4dc9-ae42-74b71ea39f08\",\"status\":\"major_outage\"}],\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\"},\"type\":\"degradations\"}}", + "string": "{\"data\":{\"attributes\":{\"components_affected\":[{\"id\":\"e2599d98-53df-4bff-addb-61ef4f07d5ca\",\"status\":\"major_outage\"}],\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\"},\"type\":\"degradations\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "post", - "uri": "https://api.datadoghq.com/api/v2/statuspages/bb4afad2-f893-464a-82a4-d2ab29d5105c/degradations" + "uri": "https://api.datadoghq.com/api/v2/statuspages/a86d9d70-4879-411d-9690-c9887c7b7d55/degradations" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"e4e76067-6b16-48d1-b943-734d0d81f715\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"43c959d9-3dda-4dc9-ae42-74b71ea39f08\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-01-21T21:23:37.592566Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-01-21T21:23:37.592566Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"af2de416-ec54-4e72-a973-7be879f26886\",\"created_at\":\"2026-01-21T21:23:37.592566Z\",\"modified_at\":\"2026-01-21T21:23:37.592566Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"43c959d9-3dda-4dc9-ae42-74b71ea39f08\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"bb4afad2-f893-464a-82a4-d2ab29d5105c\",\"type\":\"status_pages\"}}}}}", + "string": "{\"data\":{\"id\":\"124bcf90-cf17-4c2a-81b8-089b419fc384\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"e2599d98-53df-4bff-addb-61ef4f07d5ca\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-02-24T17:00:39.142715Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-02-24T17:00:39.142715Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"7d3f2ccb-619c-428a-ba44-fb91aa290211\",\"created_at\":\"2026-02-24T17:00:39.142715Z\",\"modified_at\":\"2026-02-24T17:00:39.142715Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"e2599d98-53df-4bff-addb-61ef4f07d5ca\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"a86d9d70-4879-411d-9690-c9887c7b7d55\",\"type\":\"status_pages\"}}}}}", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:36 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:37 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/bb4afad2-f893-464a-82a4-d2ab29d5105c/degradations/e4e76067-6b16-48d1-b943-734d0d81f715" + "uri": "https://api.datadoghq.com/api/v2/statuspages/a86d9d70-4879-411d-9690-c9887c7b7d55/degradations/124bcf90-cf17-4c2a-81b8-089b419fc384" }, "response": { "body": { @@ -90,7 +90,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:36 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:37 GMT" }, { "request": { @@ -101,7 +101,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/bb4afad2-f893-464a-82a4-d2ab29d5105c" + "uri": "https://api.datadoghq.com/api/v2/statuspages/a86d9d70-4879-411d-9690-c9887c7b7d55" }, "response": { "body": { @@ -114,7 +114,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:36 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:37 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Create-maintenance-returns-Created-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Create-maintenance-returns-Created-response.frozen new file mode 100644 index 000000000..8574777f1 --- /dev/null +++ b/tests/scenarios/cassettes/v2/status_pages/Create-maintenance-returns-Created-response.frozen @@ -0,0 +1 @@ +2026-02-24T17:00:40.396Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Create-maintenance-returns-Created-response.json b/tests/scenarios/cassettes/v2/status_pages/Create-maintenance-returns-Created-response.json new file mode 100644 index 000000000..5960fb6bf --- /dev/null +++ b/tests/scenarios/cassettes/v2/status_pages/Create-maintenance-returns-Created-response.json @@ -0,0 +1,97 @@ +{ + "http_interactions": [ + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"8e5ffe347d1751cc\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/statuspages" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"bb1ed843-423e-4577-bf20-b904ddc3b28b\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"32226fbd-8de2-4786-91f6-86dddc2e59f6\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"b0c6ef86-fc2e-4b1c-ad79-c71abdf9764c\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"6c7b103c-d834-42f8-9646-63c842bf3005\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:40.572564Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"8e5ffe347d1751cc\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:40.572564Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/bb1ed843-423e-4577-bf20-b904ddc3b28b/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 201, + "message": "Created" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:40 GMT" + }, + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"completed_date\":\"2026-02-24T19:00:40.396Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"b0c6ef86-fc2e-4b1c-ad79-c71abdf9764c\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-24T18:00:40.396Z\",\"title\":\"API Maintenance\"},\"type\":\"maintenances\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/statuspages/bb1ed843-423e-4577-bf20-b904ddc3b28b/maintenances" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"245cefbb-b4dc-49a0-aeac-1a0be682399f\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-24T19:00:40.396Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"b0c6ef86-fc2e-4b1c-ad79-c71abdf9764c\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-24T17:00:41.347226Z\",\"published_date\":\"2026-02-24T17:00:41.347226Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-24T18:00:40.396Z\",\"status\":\"scheduled\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"a166b22f-dc12-4e94-82ae-46c8b969484f\",\"created_at\":\"2026-02-24T17:00:41.347226Z\",\"modified_at\":\"2026-02-24T17:00:41.347226Z\",\"started_at\":\"2026-02-24T17:00:41.347226Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"b0c6ef86-fc2e-4b1c-ad79-c71abdf9764c\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"bb1ed843-423e-4577-bf20-b904ddc3b28b\",\"type\":\"status_pages\"}}}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 201, + "message": "Created" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:40 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "*/*" + ] + }, + "method": "delete", + "uri": "https://api.datadoghq.com/api/v2/statuspages/bb1ed843-423e-4577-bf20-b904ddc3b28b" + }, + "response": { + "body": { + "string": "", + "encoding": null + }, + "headers": {}, + "status": { + "code": 204, + "message": "No Content" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:40 GMT" + } + ], + "recorded_with": "VCR 6.0.0" +} \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Create-status-page-returns-Created-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Create-status-page-returns-Created-response.frozen index f09a7049e..96ef50a18 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Create-status-page-returns-Created-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Create-status-page-returns-Created-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:38.324Z \ No newline at end of file +2026-02-24T17:00:42.403Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Create-status-page-returns-Created-response.json b/tests/scenarios/cassettes/v2/status_pages/Create-status-page-returns-Created-response.json index 2bd2f11ae..0c6ce9ad1 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Create-status-page-returns-Created-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Create-status-page-returns-Created-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"domain_prefix\":\"bd769f64d06a9cdb\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"domain_prefix\":\"d579fbd5fd5aa108\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"f59e184f-4019-40d6-be90-b59f2381976d\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"c66f749f-12f7-4813-92a3-0e70df06cbd8\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"2478dc16-435c-493d-93ad-dcea6421a281\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}],\"created_at\":\"2026-01-21T21:23:38.486999Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"bd769f64d06a9cdb\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:38.486999Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/f59e184f-4019-40d6-be90-b59f2381976d/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"9de0c787-c9ad-4f5d-b9d1-ec67791d7b22\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"fe44d53f-3411-4bd0-b5d3-df10d1fa4f52\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"ba4c1000-398f-4fd9-8594-82ad0b3be9e3\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}],\"created_at\":\"2026-02-24T17:00:42.565108Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"d579fbd5fd5aa108\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:42.565108Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/9de0c787-c9ad-4f5d-b9d1-ec67791d7b22/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:38 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:42 GMT" }, { "request": { @@ -43,7 +43,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/f59e184f-4019-40d6-be90-b59f2381976d" + "uri": "https://api.datadoghq.com/api/v2/statuspages/9de0c787-c9ad-4f5d-b9d1-ec67791d7b22" }, "response": { "body": { @@ -56,7 +56,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:38 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:42 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Delete-component-returns-No-Content-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Delete-component-returns-No-Content-response.frozen index dccc0cd79..c37e85d76 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Delete-component-returns-No-Content-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Delete-component-returns-No-Content-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:39.373Z \ No newline at end of file +2026-02-24T17:00:43.840Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Delete-component-returns-No-Content-response.json b/tests/scenarios/cassettes/v2/status_pages/Delete-component-returns-No-Content-response.json index 56de6dd3d..56c1540c1 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Delete-component-returns-No-Content-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Delete-component-returns-No-Content-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"52506f44627e27d9\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"a48fef969e3afb8e\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"e4365564-6c49-4a14-b9c2-736c038a62a9\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"be6cbe05-c28b-4cd1-be92-0323c2399a6c\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"da518ded-9db2-4cba-919e-0ad04d208561\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"06e4ed67-1231-409e-a0b1-da84785d64a0\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:39.487738Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"52506f44627e27d9\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:39.487738Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/e4365564-6c49-4a14-b9c2-736c038a62a9/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"4cf573f8-ff26-4341-ac7a-420666af5d24\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"a8afd2dd-96bc-4f57-b445-9b92eb1b0a11\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"035ec25d-e999-4ab2-a7ce-cc49847dfd17\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"8c607c78-9856-421b-9f78-5a241f59e8b3\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:44.021412Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"a48fef969e3afb8e\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:44.021412Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/4cf573f8-ff26-4341-ac7a-420666af5d24/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:39 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:43 GMT" }, { "request": { @@ -43,7 +43,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/e4365564-6c49-4a14-b9c2-736c038a62a9/components/be6cbe05-c28b-4cd1-be92-0323c2399a6c" + "uri": "https://api.datadoghq.com/api/v2/statuspages/4cf573f8-ff26-4341-ac7a-420666af5d24/components/a8afd2dd-96bc-4f57-b445-9b92eb1b0a11" }, "response": { "body": { @@ -56,7 +56,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:39 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:43 GMT" }, { "request": { @@ -67,7 +67,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/e4365564-6c49-4a14-b9c2-736c038a62a9" + "uri": "https://api.datadoghq.com/api/v2/statuspages/4cf573f8-ff26-4341-ac7a-420666af5d24" }, "response": { "body": { @@ -80,7 +80,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:39 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:43 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Delete-degradation-returns-No-Content-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Delete-degradation-returns-No-Content-response.frozen index f9dac8fe0..1b367f752 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Delete-degradation-returns-No-Content-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Delete-degradation-returns-No-Content-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:40.553Z \ No newline at end of file +2026-02-24T17:00:45.450Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Delete-degradation-returns-No-Content-response.json b/tests/scenarios/cassettes/v2/status_pages/Delete-degradation-returns-No-Content-response.json index 06dacebeb..1729ad9c6 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Delete-degradation-returns-No-Content-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Delete-degradation-returns-No-Content-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"854d0635d9daaa12\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"24a63c7404e92b00\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"6be99142-8929-473e-9799-041e6372f114\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"82cd6444-b15f-467d-bba2-b0c946de1965\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"45221c15-9e84-469a-bc08-be9e3988f3ea\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"694d84bb-afb7-4a0a-854f-d9eee42fff7f\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:40.659745Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"854d0635d9daaa12\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:40.659745Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/6be99142-8929-473e-9799-041e6372f114/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"529f8f23-0634-4cdf-8a81-cb7b82e19afc\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"27026121-0156-435f-8958-3fc3ebe1c01e\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"3b64fcd0-eec2-44dd-a84d-c186ccbd2b33\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"feab19f6-1213-4352-96e9-04558f2f3f38\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:45.630576Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"24a63c7404e92b00\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:45.630576Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/529f8f23-0634-4cdf-8a81-cb7b82e19afc/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:40 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:45 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components_affected\":[{\"id\":\"45221c15-9e84-469a-bc08-be9e3988f3ea\",\"status\":\"major_outage\"}],\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\"},\"type\":\"degradations\"}}", + "string": "{\"data\":{\"attributes\":{\"components_affected\":[{\"id\":\"3b64fcd0-eec2-44dd-a84d-c186ccbd2b33\",\"status\":\"major_outage\"}],\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\"},\"type\":\"degradations\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "post", - "uri": "https://api.datadoghq.com/api/v2/statuspages/6be99142-8929-473e-9799-041e6372f114/degradations" + "uri": "https://api.datadoghq.com/api/v2/statuspages/529f8f23-0634-4cdf-8a81-cb7b82e19afc/degradations" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"bd0e77e0-83e5-4556-809b-f582969f1441\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"45221c15-9e84-469a-bc08-be9e3988f3ea\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-01-21T21:23:41.199085Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-01-21T21:23:41.199085Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"a899c951-a528-4edb-86e7-8eca80ff1a92\",\"created_at\":\"2026-01-21T21:23:41.199085Z\",\"modified_at\":\"2026-01-21T21:23:41.199085Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"45221c15-9e84-469a-bc08-be9e3988f3ea\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"6be99142-8929-473e-9799-041e6372f114\",\"type\":\"status_pages\"}}}}}", + "string": "{\"data\":{\"id\":\"fd0a3e7a-d068-46cd-b870-40ec57c47a6b\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"3b64fcd0-eec2-44dd-a84d-c186ccbd2b33\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-02-24T17:00:46.292177Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-02-24T17:00:46.292177Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"70f8b89d-ed88-46c0-91e2-2fd80aa1af38\",\"created_at\":\"2026-02-24T17:00:46.292177Z\",\"modified_at\":\"2026-02-24T17:00:46.292177Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"3b64fcd0-eec2-44dd-a84d-c186ccbd2b33\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"529f8f23-0634-4cdf-8a81-cb7b82e19afc\",\"type\":\"status_pages\"}}}}}", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:40 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:45 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/6be99142-8929-473e-9799-041e6372f114/degradations/bd0e77e0-83e5-4556-809b-f582969f1441" + "uri": "https://api.datadoghq.com/api/v2/statuspages/529f8f23-0634-4cdf-8a81-cb7b82e19afc/degradations/fd0a3e7a-d068-46cd-b870-40ec57c47a6b" }, "response": { "body": { @@ -90,7 +90,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:40 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:45 GMT" }, { "request": { @@ -101,7 +101,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/6be99142-8929-473e-9799-041e6372f114/degradations/bd0e77e0-83e5-4556-809b-f582969f1441" + "uri": "https://api.datadoghq.com/api/v2/statuspages/529f8f23-0634-4cdf-8a81-cb7b82e19afc/degradations/fd0a3e7a-d068-46cd-b870-40ec57c47a6b" }, "response": { "body": { @@ -118,7 +118,7 @@ "message": "Not Found" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:40 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:45 GMT" }, { "request": { @@ -129,7 +129,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/6be99142-8929-473e-9799-041e6372f114" + "uri": "https://api.datadoghq.com/api/v2/statuspages/529f8f23-0634-4cdf-8a81-cb7b82e19afc" }, "response": { "body": { @@ -142,7 +142,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:40 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:45 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Delete-status-page-returns-No-Content-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Delete-status-page-returns-No-Content-response.frozen index dbcea3ddf..306938fc4 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Delete-status-page-returns-No-Content-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Delete-status-page-returns-No-Content-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:41.981Z \ No newline at end of file +2026-02-24T17:00:47.555Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Delete-status-page-returns-No-Content-response.json b/tests/scenarios/cassettes/v2/status_pages/Delete-status-page-returns-No-Content-response.json index 16375e396..8f31dd22e 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Delete-status-page-returns-No-Content-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Delete-status-page-returns-No-Content-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"cb21c38e7fab0cfc\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"9289de40ecee7851\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"bc81fd89-62a4-4c28-b5e1-167c63ce3249\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"e6286170-1f58-4d8d-9432-7112ebc32be7\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"c7753c9e-7f28-4111-b7ab-f801c75b4945\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"a6e70d8d-7457-4d09-88a7-ef5cd4674698\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:42.084545Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"cb21c38e7fab0cfc\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:42.084545Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/bc81fd89-62a4-4c28-b5e1-167c63ce3249/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"5fee28e5-913c-4c8e-b043-d580d3f99848\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"787b5f03-cbdf-40ce-b1da-75943e70dc1d\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"a646452b-3e0d-4a0f-be71-234237dd6b4f\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"1501d5e7-2576-4d6e-ab2c-9197f75e3210\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:47.709256Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"9289de40ecee7851\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:47.709256Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/5fee28e5-913c-4c8e-b043-d580d3f99848/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:41 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:47 GMT" }, { "request": { @@ -43,7 +43,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/bc81fd89-62a4-4c28-b5e1-167c63ce3249" + "uri": "https://api.datadoghq.com/api/v2/statuspages/5fee28e5-913c-4c8e-b043-d580d3f99848" }, "response": { "body": { @@ -56,7 +56,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:41 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:47 GMT" }, { "request": { @@ -67,7 +67,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/bc81fd89-62a4-4c28-b5e1-167c63ce3249" + "uri": "https://api.datadoghq.com/api/v2/statuspages/5fee28e5-913c-4c8e-b043-d580d3f99848" }, "response": { "body": { @@ -84,7 +84,7 @@ "message": "Not Found" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:41 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:47 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Get-component-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Get-component-returns-OK-response.frozen index 06ecf5ee7..1014028ad 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Get-component-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Get-component-returns-OK-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:43.141Z \ No newline at end of file +2026-02-24T17:00:48.945Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Get-component-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/Get-component-returns-OK-response.json index 2f611c8c7..d9a548150 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Get-component-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Get-component-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"06de602b320cfdb0\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"16dcaf5cdc284a4a\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"70f5256d-c03f-45e1-8057-bc036d4793eb\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"7a270e4e-a064-44d0-bf07-326cf1f51cad\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"3a6c227c-52ea-4ed1-849c-4b4c1179881a\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"dff9c5c3-0b49-4f04-b801-83cdec88432a\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:43.257592Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"06de602b320cfdb0\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:43.257592Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/70f5256d-c03f-45e1-8057-bc036d4793eb/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"b6c8b2cd-36bb-41aa-8f27-1fd891a0f961\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"1cea8878-7fc8-4397-babc-8c41d90aeaa7\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"04bd30db-9a97-4088-8f16-694b87389cbb\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"4c111b7d-1cef-4233-8041-a519567a86b8\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:49.120106Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"16dcaf5cdc284a4a\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:49.120106Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/b6c8b2cd-36bb-41aa-8f27-1fd891a0f961/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:43 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:48 GMT" }, { "request": { @@ -43,11 +43,11 @@ ] }, "method": "get", - "uri": "https://api.datadoghq.com/api/v2/statuspages/70f5256d-c03f-45e1-8057-bc036d4793eb/components/7a270e4e-a064-44d0-bf07-326cf1f51cad" + "uri": "https://api.datadoghq.com/api/v2/statuspages/b6c8b2cd-36bb-41aa-8f27-1fd891a0f961/components/1cea8878-7fc8-4397-babc-8c41d90aeaa7" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"7a270e4e-a064-44d0-bf07-326cf1f51cad\",\"type\":\"components\",\"attributes\":{\"components\":[{\"id\":\"3a6c227c-52ea-4ed1-849c-4b4c1179881a\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"dff9c5c3-0b49-4f04-b801-83cdec88432a\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}],\"created_at\":\"2026-01-21T21:23:43.257592Z\",\"modified_at\":\"2026-01-21T21:23:43.257592Z\",\"name\":\"Application\",\"position\":0,\"type\":\"group\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"group\":{\"data\":null},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"70f5256d-c03f-45e1-8057-bc036d4793eb\",\"type\":\"status_pages\"}}}}}", + "string": "{\"data\":{\"id\":\"1cea8878-7fc8-4397-babc-8c41d90aeaa7\",\"type\":\"components\",\"attributes\":{\"components\":[{\"id\":\"04bd30db-9a97-4088-8f16-694b87389cbb\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"4c111b7d-1cef-4233-8041-a519567a86b8\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}],\"created_at\":\"2026-02-24T17:00:49.120106Z\",\"modified_at\":\"2026-02-24T17:00:49.120106Z\",\"name\":\"Application\",\"position\":0,\"type\":\"group\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"group\":{\"data\":null},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"b6c8b2cd-36bb-41aa-8f27-1fd891a0f961\",\"type\":\"status_pages\"}}}}}", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:43 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:48 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/70f5256d-c03f-45e1-8057-bc036d4793eb" + "uri": "https://api.datadoghq.com/api/v2/statuspages/b6c8b2cd-36bb-41aa-8f27-1fd891a0f961" }, "response": { "body": { @@ -84,7 +84,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:43 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:48 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Get-degradation-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Get-degradation-returns-OK-response.frozen index 5bf876ce9..0d6725b77 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Get-degradation-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Get-degradation-returns-OK-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:44.279Z \ No newline at end of file +2026-02-24T17:00:50.355Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Get-degradation-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/Get-degradation-returns-OK-response.json index 82be91a71..9e0a58508 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Get-degradation-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Get-degradation-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"5eb6437773268884\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"12fd9e2fcfbad77b\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"a0e1ebd1-38d3-4b7b-bb90-9a7427ce7c45\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"3397266a-8b0e-49c9-bc1c-0866a14eca08\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"bd226a05-e4f4-41bd-bb65-6c575acb55df\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"5db10808-905b-43a6-9226-97057e049486\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:44.415385Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"5eb6437773268884\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:44.415385Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/a0e1ebd1-38d3-4b7b-bb90-9a7427ce7c45/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"317cba21-cebc-4436-94df-09bbdf3d4cb6\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"c5589831-a633-4f87-87c7-6abb7404ba5d\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"c8bfec42-82a6-43cd-bf99-23de9c2f72a8\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"5a6c8210-7239-42ae-b7ae-396b26cf21b5\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:50.525032Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"12fd9e2fcfbad77b\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:50.525032Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/317cba21-cebc-4436-94df-09bbdf3d4cb6/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:44 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:50 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components_affected\":[{\"id\":\"bd226a05-e4f4-41bd-bb65-6c575acb55df\",\"status\":\"major_outage\"}],\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\"},\"type\":\"degradations\"}}", + "string": "{\"data\":{\"attributes\":{\"components_affected\":[{\"id\":\"c8bfec42-82a6-43cd-bf99-23de9c2f72a8\",\"status\":\"major_outage\"}],\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\"},\"type\":\"degradations\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "post", - "uri": "https://api.datadoghq.com/api/v2/statuspages/a0e1ebd1-38d3-4b7b-bb90-9a7427ce7c45/degradations" + "uri": "https://api.datadoghq.com/api/v2/statuspages/317cba21-cebc-4436-94df-09bbdf3d4cb6/degradations" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"ce318082-f158-4f69-a325-dfcc3a4e0cd4\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"bd226a05-e4f4-41bd-bb65-6c575acb55df\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-01-21T21:23:44.970381Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-01-21T21:23:44.970381Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"07162b04-aa24-4bb9-8f4e-549ceda01252\",\"created_at\":\"2026-01-21T21:23:44.970381Z\",\"modified_at\":\"2026-01-21T21:23:44.970381Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"bd226a05-e4f4-41bd-bb65-6c575acb55df\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"a0e1ebd1-38d3-4b7b-bb90-9a7427ce7c45\",\"type\":\"status_pages\"}}}}}", + "string": "{\"data\":{\"id\":\"3199b71f-e5a6-4651-8498-bb27cf7389f8\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"c8bfec42-82a6-43cd-bf99-23de9c2f72a8\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-02-24T17:00:51.138156Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-02-24T17:00:51.138156Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"6755caad-fc13-4d65-8ed8-0468c38dac6d\",\"created_at\":\"2026-02-24T17:00:51.138156Z\",\"modified_at\":\"2026-02-24T17:00:51.138156Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"c8bfec42-82a6-43cd-bf99-23de9c2f72a8\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"317cba21-cebc-4436-94df-09bbdf3d4cb6\",\"type\":\"status_pages\"}}}}}", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:44 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:50 GMT" }, { "request": { @@ -77,11 +77,11 @@ ] }, "method": "get", - "uri": "https://api.datadoghq.com/api/v2/statuspages/a0e1ebd1-38d3-4b7b-bb90-9a7427ce7c45/degradations/ce318082-f158-4f69-a325-dfcc3a4e0cd4" + "uri": "https://api.datadoghq.com/api/v2/statuspages/317cba21-cebc-4436-94df-09bbdf3d4cb6/degradations/3199b71f-e5a6-4651-8498-bb27cf7389f8" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"ce318082-f158-4f69-a325-dfcc3a4e0cd4\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"bd226a05-e4f4-41bd-bb65-6c575acb55df\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-01-21T21:23:44.970381Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-01-21T21:23:44.970381Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"07162b04-aa24-4bb9-8f4e-549ceda01252\",\"created_at\":\"2026-01-21T21:23:44.970381Z\",\"modified_at\":\"2026-01-21T21:23:44.970381Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"bd226a05-e4f4-41bd-bb65-6c575acb55df\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"a0e1ebd1-38d3-4b7b-bb90-9a7427ce7c45\",\"type\":\"status_pages\"}}}}}", + "string": "{\"data\":{\"id\":\"3199b71f-e5a6-4651-8498-bb27cf7389f8\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"c8bfec42-82a6-43cd-bf99-23de9c2f72a8\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-02-24T17:00:51.138156Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-02-24T17:00:51.138156Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"6755caad-fc13-4d65-8ed8-0468c38dac6d\",\"created_at\":\"2026-02-24T17:00:51.138156Z\",\"modified_at\":\"2026-02-24T17:00:51.138156Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"c8bfec42-82a6-43cd-bf99-23de9c2f72a8\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"317cba21-cebc-4436-94df-09bbdf3d4cb6\",\"type\":\"status_pages\"}}}}}", "encoding": null }, "headers": { @@ -94,7 +94,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:44 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:50 GMT" }, { "request": { @@ -105,7 +105,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/a0e1ebd1-38d3-4b7b-bb90-9a7427ce7c45/degradations/ce318082-f158-4f69-a325-dfcc3a4e0cd4" + "uri": "https://api.datadoghq.com/api/v2/statuspages/317cba21-cebc-4436-94df-09bbdf3d4cb6/degradations/3199b71f-e5a6-4651-8498-bb27cf7389f8" }, "response": { "body": { @@ -118,7 +118,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:44 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:50 GMT" }, { "request": { @@ -129,7 +129,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/a0e1ebd1-38d3-4b7b-bb90-9a7427ce7c45" + "uri": "https://api.datadoghq.com/api/v2/statuspages/317cba21-cebc-4436-94df-09bbdf3d4cb6" }, "response": { "body": { @@ -142,7 +142,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:44 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:50 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Get-maintenance-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Get-maintenance-returns-OK-response.frozen new file mode 100644 index 000000000..a1a317774 --- /dev/null +++ b/tests/scenarios/cassettes/v2/status_pages/Get-maintenance-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-02-24T17:00:52.135Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Get-maintenance-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/Get-maintenance-returns-OK-response.json new file mode 100644 index 000000000..4d6ade544 --- /dev/null +++ b/tests/scenarios/cassettes/v2/status_pages/Get-maintenance-returns-OK-response.json @@ -0,0 +1,125 @@ +{ + "http_interactions": [ + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"9aed0f41362f59e0\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/statuspages" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"8d1daf4d-e7de-4722-9130-9034915b2bbb\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"8558c72b-733f-42ab-8fb5-bd58c4e7f7e5\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"0c8fbd54-bdca-4093-970d-7ead0275b092\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"57c87ddd-e27a-4617-a7b3-2114c3a88c51\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:52.289454Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"9aed0f41362f59e0\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:52.289454Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/8d1daf4d-e7de-4722-9130-9034915b2bbb/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 201, + "message": "Created" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:52 GMT" + }, + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"completed_date\":\"2026-02-24T19:00:52.135Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"0c8fbd54-bdca-4093-970d-7ead0275b092\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-24T18:00:52.135Z\",\"title\":\"API Maintenance\"},\"type\":\"maintenances\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/statuspages/8d1daf4d-e7de-4722-9130-9034915b2bbb/maintenances" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"bfd8dc52-55d6-4868-b64a-d13a6bd401fd\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-24T19:00:52.135Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"0c8fbd54-bdca-4093-970d-7ead0275b092\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-24T17:00:53.019047Z\",\"published_date\":\"2026-02-24T17:00:53.019047Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-24T18:00:52.135Z\",\"status\":\"scheduled\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"2edf855a-3c89-4425-8295-13b7b882e942\",\"created_at\":\"2026-02-24T17:00:53.019047Z\",\"modified_at\":\"2026-02-24T17:00:53.019047Z\",\"started_at\":\"2026-02-24T17:00:53.019047Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"0c8fbd54-bdca-4093-970d-7ead0275b092\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"8d1daf4d-e7de-4722-9130-9034915b2bbb\",\"type\":\"status_pages\"}}}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 201, + "message": "Created" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:52 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "application/json" + ] + }, + "method": "get", + "uri": "https://api.datadoghq.com/api/v2/statuspages/8d1daf4d-e7de-4722-9130-9034915b2bbb/maintenances/bfd8dc52-55d6-4868-b64a-d13a6bd401fd" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"bfd8dc52-55d6-4868-b64a-d13a6bd401fd\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-24T19:00:52.135Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"0c8fbd54-bdca-4093-970d-7ead0275b092\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-24T17:00:53.019047Z\",\"published_date\":\"2026-02-24T17:00:53.019047Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-24T18:00:52.135Z\",\"status\":\"scheduled\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"2edf855a-3c89-4425-8295-13b7b882e942\",\"created_at\":\"2026-02-24T17:00:53.019047Z\",\"modified_at\":\"2026-02-24T17:00:53.019047Z\",\"started_at\":\"2026-02-24T17:00:53.019047Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"0c8fbd54-bdca-4093-970d-7ead0275b092\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"8d1daf4d-e7de-4722-9130-9034915b2bbb\",\"type\":\"status_pages\"}}}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:52 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "*/*" + ] + }, + "method": "delete", + "uri": "https://api.datadoghq.com/api/v2/statuspages/8d1daf4d-e7de-4722-9130-9034915b2bbb" + }, + "response": { + "body": { + "string": "", + "encoding": null + }, + "headers": {}, + "status": { + "code": 204, + "message": "No Content" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:52 GMT" + } + ], + "recorded_with": "VCR 6.0.0" +} \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Get-status-page-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Get-status-page-returns-OK-response.frozen index 712b01c47..4ba83511b 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Get-status-page-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Get-status-page-returns-OK-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:45.761Z \ No newline at end of file +2026-02-24T17:00:53.797Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Get-status-page-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/Get-status-page-returns-OK-response.json index 635437694..1827809d6 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Get-status-page-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Get-status-page-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"385491266043d794\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"8c26840eabe71dc3\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"24205612-f1dc-444f-aec6-7010c3097cb5\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"70916c47-93e6-4e73-b97c-0e13b5450faf\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"dcb07405-f8ea-4518-9c37-9ccb6c3c247b\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"2287c0bf-d342-4a65-998d-22bb80c63c27\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:45.863862Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"385491266043d794\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:45.863862Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/24205612-f1dc-444f-aec6-7010c3097cb5/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"ad595545-a10f-4156-86c4-4b7e628a373f\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"bef1338e-b586-4b82-bf51-cd924583b1a4\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"892f0166-6f66-4113-a4ca-f38ad360853b\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"bc546936-c609-4dff-ac47-cfc73262b9ad\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:53.951086Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"8c26840eabe71dc3\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:53.951086Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/ad595545-a10f-4156-86c4-4b7e628a373f/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:45 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:53 GMT" }, { "request": { @@ -43,11 +43,11 @@ ] }, "method": "get", - "uri": "https://api.datadoghq.com/api/v2/statuspages/24205612-f1dc-444f-aec6-7010c3097cb5" + "uri": "https://api.datadoghq.com/api/v2/statuspages/ad595545-a10f-4156-86c4-4b7e628a373f" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"24205612-f1dc-444f-aec6-7010c3097cb5\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"70916c47-93e6-4e73-b97c-0e13b5450faf\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"dcb07405-f8ea-4518-9c37-9ccb6c3c247b\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"2287c0bf-d342-4a65-998d-22bb80c63c27\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:45.863862Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"385491266043d794\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:45.863862Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/24205612-f1dc-444f-aec6-7010c3097cb5/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"ad595545-a10f-4156-86c4-4b7e628a373f\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"bef1338e-b586-4b82-bf51-cd924583b1a4\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"892f0166-6f66-4113-a4ca-f38ad360853b\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"bc546936-c609-4dff-ac47-cfc73262b9ad\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:53.951086Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"8c26840eabe71dc3\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:53.951086Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/ad595545-a10f-4156-86c4-4b7e628a373f/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:45 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:53 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/24205612-f1dc-444f-aec6-7010c3097cb5" + "uri": "https://api.datadoghq.com/api/v2/statuspages/ad595545-a10f-4156-86c4-4b7e628a373f" }, "response": { "body": { @@ -84,7 +84,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:45 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:53 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/List-components-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/List-components-returns-OK-response.frozen index d9b768691..6ba76149b 100644 --- a/tests/scenarios/cassettes/v2/status_pages/List-components-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/List-components-returns-OK-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:46.975Z \ No newline at end of file +2026-02-24T17:00:55.477Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/List-components-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/List-components-returns-OK-response.json index 1c37104a8..e6273e2f4 100644 --- a/tests/scenarios/cassettes/v2/status_pages/List-components-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/List-components-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"f577abf9d8b6cac4\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"c498abdeba4af7af\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"02b22755-8a22-449f-817b-c4f649f37ebd\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"bac73feb-3b3a-4f9b-81ad-b5532acfc96b\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"d993969d-ca6c-4b74-aed6-7a0f93016e7f\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"457c3e35-56a5-472f-a284-4e2222c77631\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:47.079687Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"f577abf9d8b6cac4\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:47.079687Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/02b22755-8a22-449f-817b-c4f649f37ebd/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"b7030ed3-627b-4172-a1db-ed4844518d9a\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"15c02806-5062-4a31-b92e-1156869483e4\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"b8dcb280-a392-4a53-873e-3303732ffa56\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"96014dbf-2729-404f-99f8-6988e13fd8c6\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:55.643889Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"c498abdeba4af7af\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:55.643889Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/b7030ed3-627b-4172-a1db-ed4844518d9a/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:46 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:55 GMT" }, { "request": { @@ -43,11 +43,11 @@ ] }, "method": "get", - "uri": "https://api.datadoghq.com/api/v2/statuspages/02b22755-8a22-449f-817b-c4f649f37ebd/components" + "uri": "https://api.datadoghq.com/api/v2/statuspages/b7030ed3-627b-4172-a1db-ed4844518d9a/components" }, "response": { "body": { - "string": "{\"data\":[{\"id\":\"bac73feb-3b3a-4f9b-81ad-b5532acfc96b\",\"type\":\"components\",\"attributes\":{\"components\":[{\"id\":\"d993969d-ca6c-4b74-aed6-7a0f93016e7f\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"457c3e35-56a5-472f-a284-4e2222c77631\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}],\"created_at\":\"2026-01-21T21:23:47.079687Z\",\"modified_at\":\"2026-01-21T21:23:47.079687Z\",\"name\":\"Application\",\"position\":0,\"type\":\"group\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"group\":{\"data\":null},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"02b22755-8a22-449f-817b-c4f649f37ebd\",\"type\":\"status_pages\"}}}}]}", + "string": "{\"data\":[{\"id\":\"15c02806-5062-4a31-b92e-1156869483e4\",\"type\":\"components\",\"attributes\":{\"components\":[{\"id\":\"b8dcb280-a392-4a53-873e-3303732ffa56\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"96014dbf-2729-404f-99f8-6988e13fd8c6\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}],\"created_at\":\"2026-02-24T17:00:55.643889Z\",\"modified_at\":\"2026-02-24T17:00:55.643889Z\",\"name\":\"Application\",\"position\":0,\"type\":\"group\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"group\":{\"data\":null},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"b7030ed3-627b-4172-a1db-ed4844518d9a\",\"type\":\"status_pages\"}}}}]}", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:46 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:55 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/02b22755-8a22-449f-817b-c4f649f37ebd" + "uri": "https://api.datadoghq.com/api/v2/statuspages/b7030ed3-627b-4172-a1db-ed4844518d9a" }, "response": { "body": { @@ -84,7 +84,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:46 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:55 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/List-degradations-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/List-degradations-returns-OK-response.frozen index 5ef43ee5a..da44433f2 100644 --- a/tests/scenarios/cassettes/v2/status_pages/List-degradations-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/List-degradations-returns-OK-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:48.128Z \ No newline at end of file +2026-02-24T17:00:56.828Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/List-degradations-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/List-degradations-returns-OK-response.json index 9868dfe5c..db40a8eb6 100644 --- a/tests/scenarios/cassettes/v2/status_pages/List-degradations-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/List-degradations-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"9e7f8b0822635170\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"4cbed4a1e7e245cd\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"fcf5cb92-aa21-43c1-b2c3-54ff692fef7b\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"0b52346d-8cd1-407b-a085-44f7f3c47ba4\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"b257b99d-355b-4b2c-82c0-335694c1e940\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"27415b2b-1759-49a9-a298-34fec18177c1\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:48.239521Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"9e7f8b0822635170\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:48.239521Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/fcf5cb92-aa21-43c1-b2c3-54ff692fef7b/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"db7b590d-cced-4b48-a7fa-a8cad2ffe6d2\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"33943b97-35dc-45b5-821e-cd61b65a6a8b\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"05dbb51c-56b3-4a3a-a051-cf44128af296\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"b39e6a73-07f2-4174-a023-328400524a64\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:57.01904Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"4cbed4a1e7e245cd\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:57.01904Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/db7b590d-cced-4b48-a7fa-a8cad2ffe6d2/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:48 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:56 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components_affected\":[{\"id\":\"b257b99d-355b-4b2c-82c0-335694c1e940\",\"status\":\"major_outage\"}],\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\"},\"type\":\"degradations\"}}", + "string": "{\"data\":{\"attributes\":{\"components_affected\":[{\"id\":\"05dbb51c-56b3-4a3a-a051-cf44128af296\",\"status\":\"major_outage\"}],\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\"},\"type\":\"degradations\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "post", - "uri": "https://api.datadoghq.com/api/v2/statuspages/fcf5cb92-aa21-43c1-b2c3-54ff692fef7b/degradations" + "uri": "https://api.datadoghq.com/api/v2/statuspages/db7b590d-cced-4b48-a7fa-a8cad2ffe6d2/degradations" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"2339dce7-c32c-42f4-88c6-ce3ff16f0cbd\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"b257b99d-355b-4b2c-82c0-335694c1e940\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-01-21T21:23:48.836304Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-01-21T21:23:48.836304Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"7959ea84-30c5-4c55-a12a-8272fab2b1cd\",\"created_at\":\"2026-01-21T21:23:48.836304Z\",\"modified_at\":\"2026-01-21T21:23:48.836304Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"b257b99d-355b-4b2c-82c0-335694c1e940\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"fcf5cb92-aa21-43c1-b2c3-54ff692fef7b\",\"type\":\"status_pages\"}}}}}", + "string": "{\"data\":{\"id\":\"6d7edbfb-18e5-4c65-90c8-905841616f10\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"05dbb51c-56b3-4a3a-a051-cf44128af296\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-02-24T17:00:57.665863Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-02-24T17:00:57.665863Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"8fa25e63-3621-4d63-bc04-7b89a5469968\",\"created_at\":\"2026-02-24T17:00:57.665863Z\",\"modified_at\":\"2026-02-24T17:00:57.665863Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"05dbb51c-56b3-4a3a-a051-cf44128af296\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"db7b590d-cced-4b48-a7fa-a8cad2ffe6d2\",\"type\":\"status_pages\"}}}}}", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:48 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:56 GMT" }, { "request": { @@ -81,7 +81,7 @@ }, "response": { "body": { - "string": "{\"data\":[{\"id\":\"2339dce7-c32c-42f4-88c6-ce3ff16f0cbd\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"b257b99d-355b-4b2c-82c0-335694c1e940\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-01-21T21:23:48.836304Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-01-21T21:23:48.836304Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"7959ea84-30c5-4c55-a12a-8272fab2b1cd\",\"created_at\":\"2026-01-21T21:23:48.836304Z\",\"modified_at\":\"2026-01-21T21:23:48.836304Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"b257b99d-355b-4b2c-82c0-335694c1e940\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"fcf5cb92-aa21-43c1-b2c3-54ff692fef7b\",\"type\":\"status_pages\"}}}}],\"meta\":{\"page\":{\"type\":\"offset_limit\",\"offset\":0,\"limit\":50,\"total\":1,\"first_offset\":0,\"prev_offset\":null,\"next_offset\":null,\"last_offset\":0}}}", + "string": "{\"data\":[{\"id\":\"6d7edbfb-18e5-4c65-90c8-905841616f10\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"05dbb51c-56b3-4a3a-a051-cf44128af296\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-02-24T17:00:57.665863Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-02-24T17:00:57.665863Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"8fa25e63-3621-4d63-bc04-7b89a5469968\",\"created_at\":\"2026-02-24T17:00:57.665863Z\",\"modified_at\":\"2026-02-24T17:00:57.665863Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"05dbb51c-56b3-4a3a-a051-cf44128af296\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"db7b590d-cced-4b48-a7fa-a8cad2ffe6d2\",\"type\":\"status_pages\"}}}}],\"meta\":{\"page\":{\"type\":\"offset_limit\",\"offset\":0,\"limit\":50,\"total\":1,\"first_offset\":0,\"prev_offset\":null,\"next_offset\":null,\"last_offset\":0}}}", "encoding": null }, "headers": { @@ -94,7 +94,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:48 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:56 GMT" }, { "request": { @@ -105,7 +105,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/fcf5cb92-aa21-43c1-b2c3-54ff692fef7b/degradations/2339dce7-c32c-42f4-88c6-ce3ff16f0cbd" + "uri": "https://api.datadoghq.com/api/v2/statuspages/db7b590d-cced-4b48-a7fa-a8cad2ffe6d2/degradations/6d7edbfb-18e5-4c65-90c8-905841616f10" }, "response": { "body": { @@ -118,7 +118,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:48 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:56 GMT" }, { "request": { @@ -129,7 +129,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/fcf5cb92-aa21-43c1-b2c3-54ff692fef7b" + "uri": "https://api.datadoghq.com/api/v2/statuspages/db7b590d-cced-4b48-a7fa-a8cad2ffe6d2" }, "response": { "body": { @@ -142,7 +142,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:48 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:00:56 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/List-maintenances-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/List-maintenances-returns-OK-response.frozen new file mode 100644 index 000000000..e9663eb85 --- /dev/null +++ b/tests/scenarios/cassettes/v2/status_pages/List-maintenances-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-02-24T17:00:58.632Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/List-maintenances-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/List-maintenances-returns-OK-response.json new file mode 100644 index 000000000..759fdc8fd --- /dev/null +++ b/tests/scenarios/cassettes/v2/status_pages/List-maintenances-returns-OK-response.json @@ -0,0 +1,125 @@ +{ + "http_interactions": [ + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"7461571be4b904a2\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/statuspages" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"4386413c-88e0-46d1-9492-4907633ed575\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"58972a8d-82b7-4de0-9889-8c6c3f4dfc95\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"89f770b5-8612-41ef-a35d-e325503b4aff\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"b05bdb74-2754-4255-a51d-a67ae3c853f5\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:00:58.794069Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"7461571be4b904a2\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:00:58.794069Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/4386413c-88e0-46d1-9492-4907633ed575/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 201, + "message": "Created" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:58 GMT" + }, + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"completed_date\":\"2026-02-24T19:00:58.632Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"89f770b5-8612-41ef-a35d-e325503b4aff\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-24T18:00:58.632Z\",\"title\":\"API Maintenance\"},\"type\":\"maintenances\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/statuspages/4386413c-88e0-46d1-9492-4907633ed575/maintenances" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"137fffe3-bfe1-471f-ad23-565105cd30f8\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-24T19:00:58.632Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"89f770b5-8612-41ef-a35d-e325503b4aff\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-24T17:00:59.394878Z\",\"published_date\":\"2026-02-24T17:00:59.394878Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-24T18:00:58.632Z\",\"status\":\"scheduled\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"79051405-03b3-4e9e-9e74-56e2d6593a06\",\"created_at\":\"2026-02-24T17:00:59.394878Z\",\"modified_at\":\"2026-02-24T17:00:59.394878Z\",\"started_at\":\"2026-02-24T17:00:59.394878Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"89f770b5-8612-41ef-a35d-e325503b4aff\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"4386413c-88e0-46d1-9492-4907633ed575\",\"type\":\"status_pages\"}}}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 201, + "message": "Created" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:58 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "application/json" + ] + }, + "method": "get", + "uri": "https://api.datadoghq.com/api/v2/statuspages/maintenances" + }, + "response": { + "body": { + "string": "{\"data\":[{\"id\":\"f286de7d-136f-4fdc-8e86-4d0777e3e21f\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T17:13:22.043Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"77170b9e-5e63-4ddb-9a0b-93e271e530ba\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T17:13:41.502717Z\",\"published_date\":\"2026-02-19T15:13:22.885588Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T16:13:22.043Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"e53d8a4a-264d-4f85-a2f2-79db7de6a846\",\"created_at\":\"2026-02-19T17:13:41.502717Z\",\"modified_at\":\"2026-02-19T17:13:41.502717Z\",\"started_at\":\"2026-02-19T17:13:41.502717Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"77170b9e-5e63-4ddb-9a0b-93e271e530ba\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"1ae93adf-0bc9-48fb-8530-66ed6233f0e7\",\"created_at\":\"2026-02-19T16:13:29.432699Z\",\"modified_at\":\"2026-02-19T16:13:29.432699Z\",\"started_at\":\"2026-02-19T16:13:29.432699Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"77170b9e-5e63-4ddb-9a0b-93e271e530ba\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"7f1460f1-38cf-47a5-ab00-d3bf7492cfb4\",\"created_at\":\"2026-02-19T15:13:22.885588Z\",\"modified_at\":\"2026-02-19T15:13:22.885588Z\",\"started_at\":\"2026-02-19T15:13:22.885588Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"77170b9e-5e63-4ddb-9a0b-93e271e530ba\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"6054e25a-60fa-4c88-a02a-760bae1a7917\",\"type\":\"status_pages\"}}}},{\"id\":\"17874db7-0144-476b-8313-1a126fe7640b\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T17:13:23.668Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"8e3cd5cc-1ce3-435c-863d-2f139a10fd18\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T17:13:40.505678Z\",\"published_date\":\"2026-02-19T15:13:24.508112Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T16:13:23.668Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"b6e8df0c-5cc3-4b55-b0f9-fa000ce0ed59\",\"created_at\":\"2026-02-19T17:13:40.505678Z\",\"modified_at\":\"2026-02-19T17:13:40.505678Z\",\"started_at\":\"2026-02-19T17:13:40.505678Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"8e3cd5cc-1ce3-435c-863d-2f139a10fd18\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"4cd584cf-4c51-4f0d-9c0c-3b99e089e5ca\",\"created_at\":\"2026-02-19T16:13:31.834568Z\",\"modified_at\":\"2026-02-19T16:13:31.834568Z\",\"started_at\":\"2026-02-19T16:13:31.834568Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"8e3cd5cc-1ce3-435c-863d-2f139a10fd18\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"2f6081e9-61fd-4320-8bc7-c183f480abd0\",\"created_at\":\"2026-02-19T15:13:24.508112Z\",\"modified_at\":\"2026-02-19T15:13:24.508112Z\",\"started_at\":\"2026-02-19T15:13:24.508112Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"8e3cd5cc-1ce3-435c-863d-2f139a10fd18\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"6f3e2bef-846a-4c05-9d6d-35d9d136c31a\",\"type\":\"status_pages\"}}}},{\"id\":\"8e70e109-ca9d-4d82-b2e5-4ca9c363daa5\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T17:13:24.776Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"7d4bd295-b987-49b0-8086-9dddbcfade33\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"modified_at\":\"2026-02-19T17:13:41.406073Z\",\"published_date\":\"2026-02-19T15:13:25.641763Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\",\"start_date\":\"2026-02-19T16:13:24.776Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"78579cc3-4935-43d7-9d4f-7889655bb414\",\"created_at\":\"2026-02-19T17:13:41.406073Z\",\"modified_at\":\"2026-02-19T17:13:41.406073Z\",\"started_at\":\"2026-02-19T17:13:41.406073Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"7d4bd295-b987-49b0-8086-9dddbcfade33\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"04f5122c-2c8e-4605-878c-bdd401d1a6a4\",\"created_at\":\"2026-02-19T16:13:29.281104Z\",\"modified_at\":\"2026-02-19T16:13:29.281104Z\",\"started_at\":\"2026-02-19T16:13:29.281104Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"components_affected\":[{\"id\":\"7d4bd295-b987-49b0-8086-9dddbcfade33\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"5943a568-c880-4b32-ab7b-1701adf218cf\",\"created_at\":\"2026-02-19T15:13:25.641763Z\",\"modified_at\":\"2026-02-19T15:13:25.641763Z\",\"started_at\":\"2026-02-19T15:13:25.641763Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"7d4bd295-b987-49b0-8086-9dddbcfade33\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"fbcbdef4-4e3a-436a-bb0a-be8205a98b36\",\"type\":\"status_pages\"}}}},{\"id\":\"6f08d7a7-d37d-4c75-807b-234e71d6d40b\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T17:48:44.696Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2bf35e8e-28c9-49c3-948a-854097030f2c\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T17:48:51.504226Z\",\"published_date\":\"2026-02-19T15:48:45.758873Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T16:48:44.696Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"13300fac-e192-4604-b987-2759f980238a\",\"created_at\":\"2026-02-19T17:48:51.504226Z\",\"modified_at\":\"2026-02-19T17:48:51.504226Z\",\"started_at\":\"2026-02-19T17:48:51.504226Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2bf35e8e-28c9-49c3-948a-854097030f2c\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"82980649-7416-405a-a882-bafd1fdd5d4c\",\"created_at\":\"2026-02-19T16:48:52.562843Z\",\"modified_at\":\"2026-02-19T16:48:52.562843Z\",\"started_at\":\"2026-02-19T16:48:52.562843Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2bf35e8e-28c9-49c3-948a-854097030f2c\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"a9fca162-a79b-4a3e-b67a-571fdca4b0d6\",\"created_at\":\"2026-02-19T15:48:45.758873Z\",\"modified_at\":\"2026-02-19T15:48:45.758873Z\",\"started_at\":\"2026-02-19T15:48:45.758873Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2bf35e8e-28c9-49c3-948a-854097030f2c\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"b57576ee-457d-43da-9b17-f7e9087ab4a4\",\"type\":\"status_pages\"}}}},{\"id\":\"c6150974-eab5-4ca9-93a5-78b615b22801\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T17:48:46.187Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"6407bf01-0c11-4509-8ae6-24c77cf205da\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T17:48:50.958358Z\",\"published_date\":\"2026-02-19T15:48:47.266145Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T16:48:46.187Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"fd8aaab4-2f77-4e5d-9f0f-5255e40b33a0\",\"created_at\":\"2026-02-19T17:48:50.958358Z\",\"modified_at\":\"2026-02-19T17:48:50.958358Z\",\"started_at\":\"2026-02-19T17:48:50.958358Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"6407bf01-0c11-4509-8ae6-24c77cf205da\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"66ea1633-4c51-4e7a-9eb2-d85d810e4ae9\",\"created_at\":\"2026-02-19T16:48:52.244498Z\",\"modified_at\":\"2026-02-19T16:48:52.244498Z\",\"started_at\":\"2026-02-19T16:48:52.244498Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"6407bf01-0c11-4509-8ae6-24c77cf205da\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"19f9e7b6-ba0f-4567-8984-ac145414f81d\",\"created_at\":\"2026-02-19T15:48:47.266145Z\",\"modified_at\":\"2026-02-19T15:48:47.266145Z\",\"started_at\":\"2026-02-19T15:48:47.266145Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"6407bf01-0c11-4509-8ae6-24c77cf205da\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"a8e6fdb1-05c8-416c-a150-9af49c513206\",\"type\":\"status_pages\"}}}},{\"id\":\"a0ba86bb-b5da-4fb7-9f14-d69d0dcba6d6\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T17:48:47.701Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"5cc44628-14ac-4563-a052-5b1f9a3fa3e4\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"modified_at\":\"2026-02-19T17:48:52.64131Z\",\"published_date\":\"2026-02-19T15:48:48.889128Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\",\"start_date\":\"2026-02-19T16:48:47.701Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"aa6a3313-db4e-4236-8d20-621907bd69fd\",\"created_at\":\"2026-02-19T17:48:52.64131Z\",\"modified_at\":\"2026-02-19T17:48:52.64131Z\",\"started_at\":\"2026-02-19T17:48:52.64131Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"5cc44628-14ac-4563-a052-5b1f9a3fa3e4\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"c4e8af34-28d8-4471-a7af-93f625314e61\",\"created_at\":\"2026-02-19T16:48:52.612772Z\",\"modified_at\":\"2026-02-19T16:48:52.612772Z\",\"started_at\":\"2026-02-19T16:48:52.612772Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"components_affected\":[{\"id\":\"5cc44628-14ac-4563-a052-5b1f9a3fa3e4\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"77718021-f74f-4170-b26b-22e2e54f37c5\",\"created_at\":\"2026-02-19T15:48:48.889128Z\",\"modified_at\":\"2026-02-19T15:48:48.889128Z\",\"started_at\":\"2026-02-19T15:48:48.889128Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"5cc44628-14ac-4563-a052-5b1f9a3fa3e4\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"cfbf3ff5-f7e6-4d6c-8175-cbff110ebfc9\",\"type\":\"status_pages\"}}}},{\"id\":\"9b6a31cf-ef44-4185-8cd4-9355ba5a44c9\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:05:01.67Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"0da9e91e-519e-4d1b-a530-95dbf9b1d6a3\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T18:05:06.005306Z\",\"published_date\":\"2026-02-19T16:05:02.831343Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T17:05:01.67Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"afad908a-1dac-409c-a8fd-ffa57399361a\",\"created_at\":\"2026-02-19T18:05:06.005306Z\",\"modified_at\":\"2026-02-19T18:05:06.005306Z\",\"started_at\":\"2026-02-19T18:05:06.005306Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"0da9e91e-519e-4d1b-a530-95dbf9b1d6a3\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"31265ba4-b0b7-4e34-8364-068ad60af91d\",\"created_at\":\"2026-02-19T17:05:11.035132Z\",\"modified_at\":\"2026-02-19T17:05:11.035132Z\",\"started_at\":\"2026-02-19T17:05:11.035132Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"0da9e91e-519e-4d1b-a530-95dbf9b1d6a3\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"9a5a0962-7ca7-4d2c-9717-8c7df395d512\",\"created_at\":\"2026-02-19T16:05:02.831343Z\",\"modified_at\":\"2026-02-19T16:05:02.831343Z\",\"started_at\":\"2026-02-19T16:05:02.831343Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"0da9e91e-519e-4d1b-a530-95dbf9b1d6a3\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"c3af2a4f-dd6e-4777-8899-7be70c0e629c\",\"type\":\"status_pages\"}}}},{\"id\":\"d94642f5-fe45-46b8-a61d-f48dee50fc8b\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:05:03.183Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2ec5ce94-7c6b-4883-b963-774cde63af0e\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T18:05:09.356968Z\",\"published_date\":\"2026-02-19T16:05:04.238719Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T17:05:03.183Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"52b79331-678b-47e7-ba86-26d0c3b22b70\",\"created_at\":\"2026-02-19T18:05:09.356968Z\",\"modified_at\":\"2026-02-19T18:05:09.356968Z\",\"started_at\":\"2026-02-19T18:05:09.356968Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2ec5ce94-7c6b-4883-b963-774cde63af0e\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"2a7e245f-1f32-4708-8f36-ccfd5c545719\",\"created_at\":\"2026-02-19T17:05:11.018617Z\",\"modified_at\":\"2026-02-19T17:05:11.018617Z\",\"started_at\":\"2026-02-19T17:05:11.018617Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2ec5ce94-7c6b-4883-b963-774cde63af0e\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"d55f8f1d-09d8-4f08-9d04-24f7d719841e\",\"created_at\":\"2026-02-19T16:05:04.238719Z\",\"modified_at\":\"2026-02-19T16:05:04.238719Z\",\"started_at\":\"2026-02-19T16:05:04.238719Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2ec5ce94-7c6b-4883-b963-774cde63af0e\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"e4a07280-5e60-41e8-8868-d6b391ac9ba4\",\"type\":\"status_pages\"}}}},{\"id\":\"e47a4a10-abac-4196-a38f-95a05e4d3a73\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:05:04.644Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"c354419b-c97e-49c6-b556-a2bd73c2945b\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"modified_at\":\"2026-02-19T18:05:16.800514Z\",\"published_date\":\"2026-02-19T16:05:05.525216Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\",\"start_date\":\"2026-02-19T17:05:04.644Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"31f2ab95-151a-45ca-833c-82d9a9b1335b\",\"created_at\":\"2026-02-19T18:05:16.800514Z\",\"modified_at\":\"2026-02-19T18:05:16.800514Z\",\"started_at\":\"2026-02-19T18:05:16.800514Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"c354419b-c97e-49c6-b556-a2bd73c2945b\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"2b337ccf-3b7d-4360-9d64-a96471191650\",\"created_at\":\"2026-02-19T17:05:11.670406Z\",\"modified_at\":\"2026-02-19T17:05:11.670406Z\",\"started_at\":\"2026-02-19T17:05:11.670406Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"components_affected\":[{\"id\":\"c354419b-c97e-49c6-b556-a2bd73c2945b\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"7c4544d5-5c50-4833-89cf-8dda15768115\",\"created_at\":\"2026-02-19T16:05:05.525216Z\",\"modified_at\":\"2026-02-19T16:05:05.525216Z\",\"started_at\":\"2026-02-19T16:05:05.525216Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"c354419b-c97e-49c6-b556-a2bd73c2945b\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"9554c1f6-837d-4ce9-8682-90cc44689d6e\",\"type\":\"status_pages\"}}}},{\"id\":\"798fb3e3-453e-44e2-bc6f-fd29f5d4b5da\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:26:36.738Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2a064c38-b34c-4afd-8958-567b4fb94891\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T18:26:39.660886Z\",\"published_date\":\"2026-02-19T16:26:37.551277Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T17:26:36.738Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"a7a4a4e7-3a7a-4324-8d8d-869bc9c87085\",\"created_at\":\"2026-02-19T18:26:39.660886Z\",\"modified_at\":\"2026-02-19T18:26:39.660886Z\",\"started_at\":\"2026-02-19T18:26:39.660886Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2a064c38-b34c-4afd-8958-567b4fb94891\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"fc42e821-999c-4bcd-a7fe-c41a8f53a4f3\",\"created_at\":\"2026-02-19T17:26:41.211615Z\",\"modified_at\":\"2026-02-19T17:26:41.211615Z\",\"started_at\":\"2026-02-19T17:26:41.211615Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2a064c38-b34c-4afd-8958-567b4fb94891\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"5c982a14-c686-4abf-9cd0-1560f489efe4\",\"created_at\":\"2026-02-19T16:26:37.551277Z\",\"modified_at\":\"2026-02-19T16:26:37.551277Z\",\"started_at\":\"2026-02-19T16:26:37.551277Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"2a064c38-b34c-4afd-8958-567b4fb94891\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"ef7f6596-79dd-4f10-9e02-96047289e678\",\"type\":\"status_pages\"}}}},{\"id\":\"b0bc5c8b-4b21-49d6-8a63-fc58846cd85f\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:26:41.901Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"eb5ff7d4-3faa-4216-9141-b616ecfa29a7\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T18:26:50.363316Z\",\"published_date\":\"2026-02-19T16:26:42.616591Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T17:26:41.901Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"d0a52474-99f4-45f4-ac23-fd97755e1825\",\"created_at\":\"2026-02-19T18:26:50.363316Z\",\"modified_at\":\"2026-02-19T18:26:50.363316Z\",\"started_at\":\"2026-02-19T18:26:50.363316Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"eb5ff7d4-3faa-4216-9141-b616ecfa29a7\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"a722ee55-83b1-4366-bbe7-d6228c67d6db\",\"created_at\":\"2026-02-19T17:26:50.619047Z\",\"modified_at\":\"2026-02-19T17:26:50.619047Z\",\"started_at\":\"2026-02-19T17:26:50.619047Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"eb5ff7d4-3faa-4216-9141-b616ecfa29a7\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"b2a2964f-28ec-40db-9cdc-507c4343232d\",\"created_at\":\"2026-02-19T16:26:42.616591Z\",\"modified_at\":\"2026-02-19T16:26:42.616591Z\",\"started_at\":\"2026-02-19T16:26:42.616591Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"eb5ff7d4-3faa-4216-9141-b616ecfa29a7\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"d3167fc5-957d-4ec6-a55d-d75a5eb1926a\",\"type\":\"status_pages\"}}}},{\"id\":\"080453e2-155d-4807-aec4-b50cb4edccc7\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:26:47.556Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"222ce53c-1646-45bc-a5d4-27e0a4eb0313\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"modified_at\":\"2026-02-19T18:26:50.306926Z\",\"published_date\":\"2026-02-19T16:26:48.303105Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\",\"start_date\":\"2026-02-19T17:26:47.556Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"e1f2c1a8-2797-4eb8-9e90-ad0aae8315f7\",\"created_at\":\"2026-02-19T18:26:50.306926Z\",\"modified_at\":\"2026-02-19T18:26:50.306926Z\",\"started_at\":\"2026-02-19T18:26:50.306926Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"222ce53c-1646-45bc-a5d4-27e0a4eb0313\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"3a591848-156c-4043-9c23-7c23d7882b20\",\"created_at\":\"2026-02-19T17:26:54.951261Z\",\"modified_at\":\"2026-02-19T17:26:54.951261Z\",\"started_at\":\"2026-02-19T17:26:54.951261Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"components_affected\":[{\"id\":\"222ce53c-1646-45bc-a5d4-27e0a4eb0313\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"39aec418-b668-489d-92ab-519149092c7d\",\"created_at\":\"2026-02-19T16:26:48.303105Z\",\"modified_at\":\"2026-02-19T16:26:48.303105Z\",\"started_at\":\"2026-02-19T16:26:48.303105Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"222ce53c-1646-45bc-a5d4-27e0a4eb0313\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"7e1c914a-7b5d-4928-9603-2c231f4e27b5\",\"type\":\"status_pages\"}}}},{\"id\":\"6c7a18e8-ec4a-44a0-b769-a300bfd4647f\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:41:05.953Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"e19596ba-245c-49dc-9274-5aa1b7e865f5\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T18:41:10.642682Z\",\"published_date\":\"2026-02-19T16:41:06.978106Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T17:41:05.953Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"9dea7ab6-3b6d-40f5-bf02-b2509e5d7ef6\",\"created_at\":\"2026-02-19T18:41:10.642682Z\",\"modified_at\":\"2026-02-19T18:41:10.642682Z\",\"started_at\":\"2026-02-19T18:41:10.642682Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"e19596ba-245c-49dc-9274-5aa1b7e865f5\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"3cedcd9f-f4d2-41f3-acaf-74eaedb0c840\",\"created_at\":\"2026-02-19T17:41:18.858442Z\",\"modified_at\":\"2026-02-19T17:41:18.858442Z\",\"started_at\":\"2026-02-19T17:41:18.858442Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"e19596ba-245c-49dc-9274-5aa1b7e865f5\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"5bcb7196-17d4-440d-92cb-b6fc3e89ca92\",\"created_at\":\"2026-02-19T16:41:06.978106Z\",\"modified_at\":\"2026-02-19T16:41:06.978106Z\",\"started_at\":\"2026-02-19T16:41:06.978106Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"e19596ba-245c-49dc-9274-5aa1b7e865f5\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"a8e3fb88-56ee-4f01-8909-734f9a066177\",\"type\":\"status_pages\"}}}},{\"id\":\"563de34b-6e0e-4304-a00a-d080c7a3add6\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:41:11.445Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"862e2d94-1286-423c-86ec-541f5f5aa5e6\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T18:41:21.384964Z\",\"published_date\":\"2026-02-19T16:41:12.248062Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T17:41:11.445Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"49b97e00-3bb0-4796-a6a9-15838fe59797\",\"created_at\":\"2026-02-19T18:41:21.384964Z\",\"modified_at\":\"2026-02-19T18:41:21.384964Z\",\"started_at\":\"2026-02-19T18:41:21.384964Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"862e2d94-1286-423c-86ec-541f5f5aa5e6\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"336fe68b-506d-41b9-8a6e-ce0c5e9c50f6\",\"created_at\":\"2026-02-19T17:41:20.982233Z\",\"modified_at\":\"2026-02-19T17:41:20.982233Z\",\"started_at\":\"2026-02-19T17:41:20.982233Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"862e2d94-1286-423c-86ec-541f5f5aa5e6\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"f1eae39b-e846-45c9-a9cd-b0ee05b7abe1\",\"created_at\":\"2026-02-19T16:41:12.248062Z\",\"modified_at\":\"2026-02-19T16:41:12.248062Z\",\"started_at\":\"2026-02-19T16:41:12.248062Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"862e2d94-1286-423c-86ec-541f5f5aa5e6\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"7c3eff68-42fb-4ddb-8761-3e7695d79570\",\"type\":\"status_pages\"}}}},{\"id\":\"3f7e4061-f99e-48e1-ac4d-02f175e556a5\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:41:17.115Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"03b85dec-3f1c-4bc1-b6a6-c3070e94aaa7\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"modified_at\":\"2026-02-19T18:41:21.354571Z\",\"published_date\":\"2026-02-19T16:41:17.821981Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\",\"start_date\":\"2026-02-19T17:41:17.115Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"e887c9c6-9d32-41ad-915b-f59457d46200\",\"created_at\":\"2026-02-19T18:41:21.354571Z\",\"modified_at\":\"2026-02-19T18:41:21.354571Z\",\"started_at\":\"2026-02-19T18:41:21.354571Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"03b85dec-3f1c-4bc1-b6a6-c3070e94aaa7\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"b7b92c17-d92a-4d1f-8c80-33808033ac42\",\"created_at\":\"2026-02-19T17:41:23.212672Z\",\"modified_at\":\"2026-02-19T17:41:23.212672Z\",\"started_at\":\"2026-02-19T17:41:23.212672Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"components_affected\":[{\"id\":\"03b85dec-3f1c-4bc1-b6a6-c3070e94aaa7\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"ad754c3b-05d8-4618-9d56-c03ec63c3c16\",\"created_at\":\"2026-02-19T16:41:17.821981Z\",\"modified_at\":\"2026-02-19T16:41:17.821981Z\",\"started_at\":\"2026-02-19T16:41:17.821981Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"03b85dec-3f1c-4bc1-b6a6-c3070e94aaa7\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"4561e0f5-5a64-4bc9-b16c-654d3d81325a\",\"type\":\"status_pages\"}}}},{\"id\":\"7b2e52dd-cbca-4ba4-a73b-30b8e5df6094\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2027-02-19T17:13:22.043Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"c4d3a1be-8d3d-4b09-9521-b03d5c1e6fdd\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T16:43:58.312902Z\",\"published_date\":\"2026-02-19T16:43:58.312902Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2027-02-19T16:13:22.043Z\",\"status\":\"scheduled\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"d727f2e1-86de-4780-9a83-32e9615f24ab\",\"created_at\":\"2026-02-19T16:43:58.312902Z\",\"modified_at\":\"2026-02-19T16:43:58.312902Z\",\"started_at\":\"2026-02-19T16:43:58.312902Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"c4d3a1be-8d3d-4b09-9521-b03d5c1e6fdd\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"0e37a7c0-9b0c-4c4e-b315-6b5e145390af\",\"type\":\"status_pages\"}}}},{\"id\":\"0cc3280d-2127-4429-9777-18ff1d0025f7\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:44:06.253Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"579f0d5c-cce7-4666-98f3-40a696be8cc7\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T18:44:14.043097Z\",\"published_date\":\"2026-02-19T16:44:06.928335Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T17:44:06.253Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"f8fd0b5a-851d-4909-9f0a-552687659550\",\"created_at\":\"2026-02-19T18:44:14.043097Z\",\"modified_at\":\"2026-02-19T18:44:14.043097Z\",\"started_at\":\"2026-02-19T18:44:14.043097Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"579f0d5c-cce7-4666-98f3-40a696be8cc7\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"05abf843-058a-44b2-8c4a-178893cfb59c\",\"created_at\":\"2026-02-19T17:44:16.964205Z\",\"modified_at\":\"2026-02-19T17:44:16.964205Z\",\"started_at\":\"2026-02-19T17:44:16.964205Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"579f0d5c-cce7-4666-98f3-40a696be8cc7\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"558325df-2d6d-4343-9a97-f6c9e165b4f1\",\"created_at\":\"2026-02-19T16:44:06.928335Z\",\"modified_at\":\"2026-02-19T16:44:06.928335Z\",\"started_at\":\"2026-02-19T16:44:06.928335Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"579f0d5c-cce7-4666-98f3-40a696be8cc7\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"016f2768-6987-4a8f-898b-ab94e17b3dd3\",\"type\":\"status_pages\"}}}},{\"id\":\"ab486ec9-5e60-4d2b-88f3-86cce89baeb9\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:44:11.197Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"d1d9b93d-301d-4dad-8f3b-4475a3fad1b1\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T18:44:24.658174Z\",\"published_date\":\"2026-02-19T16:44:11.945804Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T17:44:11.197Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"b50bbda8-d21b-4653-8602-b9be48316cf5\",\"created_at\":\"2026-02-19T18:44:24.658174Z\",\"modified_at\":\"2026-02-19T18:44:24.658174Z\",\"started_at\":\"2026-02-19T18:44:24.658174Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"d1d9b93d-301d-4dad-8f3b-4475a3fad1b1\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"49c62cd2-f176-4829-8dd5-138778c2902c\",\"created_at\":\"2026-02-19T17:44:15.757371Z\",\"modified_at\":\"2026-02-19T17:44:15.757371Z\",\"started_at\":\"2026-02-19T17:44:15.757371Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"d1d9b93d-301d-4dad-8f3b-4475a3fad1b1\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"9e272ba1-8d7e-41c5-8454-5d7f15864b90\",\"created_at\":\"2026-02-19T16:44:11.945804Z\",\"modified_at\":\"2026-02-19T16:44:11.945804Z\",\"started_at\":\"2026-02-19T16:44:11.945804Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"d1d9b93d-301d-4dad-8f3b-4475a3fad1b1\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"bd3f1d69-4ee1-428d-8ac8-f03f387a7677\",\"type\":\"status_pages\"}}}},{\"id\":\"dd68d4f9-5eff-4ab9-bbb4-bd80ef184b07\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T18:44:16.748Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"44da03e1-1b23-4100-b26f-68ab4f8ca457\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"modified_at\":\"2026-02-19T18:44:24.483553Z\",\"published_date\":\"2026-02-19T16:44:17.427344Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\",\"start_date\":\"2026-02-19T17:44:16.748Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"19b8a7d2-7164-4383-bdf2-463de3d1242c\",\"created_at\":\"2026-02-19T18:44:24.483553Z\",\"modified_at\":\"2026-02-19T18:44:24.483553Z\",\"started_at\":\"2026-02-19T18:44:24.483553Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"44da03e1-1b23-4100-b26f-68ab4f8ca457\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"bc432e95-9e82-4b4c-a152-11a10acc0217\",\"created_at\":\"2026-02-19T17:44:26.587427Z\",\"modified_at\":\"2026-02-19T17:44:26.587427Z\",\"started_at\":\"2026-02-19T17:44:26.587427Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"components_affected\":[{\"id\":\"44da03e1-1b23-4100-b26f-68ab4f8ca457\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"9cf9afba-2352-4e3c-9bca-a52a60ce2950\",\"created_at\":\"2026-02-19T16:44:17.427344Z\",\"modified_at\":\"2026-02-19T16:44:17.427344Z\",\"started_at\":\"2026-02-19T16:44:17.427344Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"44da03e1-1b23-4100-b26f-68ab4f8ca457\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"33c6f810-15d8-4ce2-835b-1ac3a6ca1dbc\",\"type\":\"status_pages\"}}}},{\"id\":\"42680154-cc22-432b-8132-dff3184823fa\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T23:06:20.302Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"63331812-b5a5-422a-889a-f7ca633b2d80\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T23:06:27.555615Z\",\"published_date\":\"2026-02-19T21:06:21.347203Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T22:06:20.302Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"a474fbb2-6d26-4a46-8c1b-51e5e1a2d3db\",\"created_at\":\"2026-02-19T23:06:27.555615Z\",\"modified_at\":\"2026-02-19T23:06:27.555615Z\",\"started_at\":\"2026-02-19T23:06:27.555615Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"63331812-b5a5-422a-889a-f7ca633b2d80\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"f32fa6c4-f239-404d-a3a1-914b3efb5430\",\"created_at\":\"2026-02-19T22:06:29.588858Z\",\"modified_at\":\"2026-02-19T22:06:29.588858Z\",\"started_at\":\"2026-02-19T22:06:29.588858Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"63331812-b5a5-422a-889a-f7ca633b2d80\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"6e23db69-3e05-49d2-890c-c5c619e95bd6\",\"created_at\":\"2026-02-19T21:06:21.347203Z\",\"modified_at\":\"2026-02-19T21:06:21.347203Z\",\"started_at\":\"2026-02-19T21:06:21.347203Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"63331812-b5a5-422a-889a-f7ca633b2d80\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"0751ca80-99db-4247-ae44-655162fa07a9\",\"type\":\"status_pages\"}}}},{\"id\":\"7c30b38a-5670-4187-8ee3-dbf13cfc969f\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T23:06:26.166Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"9fabc1b3-bfc4-45f5-8fe7-6b284be04d28\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T23:06:37.235313Z\",\"published_date\":\"2026-02-19T21:06:27.326948Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T22:06:26.166Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"80a778de-732e-46a7-b71a-11f6f57e250c\",\"created_at\":\"2026-02-19T23:06:37.235313Z\",\"modified_at\":\"2026-02-19T23:06:37.235313Z\",\"started_at\":\"2026-02-19T23:06:37.235313Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"9fabc1b3-bfc4-45f5-8fe7-6b284be04d28\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"a7bc678e-38c0-4a04-94b3-e3c8cd290180\",\"created_at\":\"2026-02-19T22:06:29.055847Z\",\"modified_at\":\"2026-02-19T22:06:29.055847Z\",\"started_at\":\"2026-02-19T22:06:29.055847Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"9fabc1b3-bfc4-45f5-8fe7-6b284be04d28\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"2ce54aea-a951-4f0f-899e-5b177b28343c\",\"created_at\":\"2026-02-19T21:06:27.326948Z\",\"modified_at\":\"2026-02-19T21:06:27.326948Z\",\"started_at\":\"2026-02-19T21:06:27.326948Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"9fabc1b3-bfc4-45f5-8fe7-6b284be04d28\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"6cb07301-fa51-4113-babd-229a0e86942e\",\"type\":\"status_pages\"}}}},{\"id\":\"3f112086-958b-472f-84b0-04513a6ac860\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T23:06:32.872Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"de9b6f98-2556-44c9-bb88-9d839e1fda62\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"modified_at\":\"2026-02-19T23:06:36.563708Z\",\"published_date\":\"2026-02-19T21:06:33.926332Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\",\"start_date\":\"2026-02-19T22:06:32.872Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"fc8ae217-7e51-40a1-b24b-6945bf101662\",\"created_at\":\"2026-02-19T23:06:36.563708Z\",\"modified_at\":\"2026-02-19T23:06:36.563708Z\",\"started_at\":\"2026-02-19T23:06:36.563708Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"de9b6f98-2556-44c9-bb88-9d839e1fda62\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"ef519943-1c85-4e7a-8b06-94fd196b7a1c\",\"created_at\":\"2026-02-19T22:06:43.335346Z\",\"modified_at\":\"2026-02-19T22:06:43.335346Z\",\"started_at\":\"2026-02-19T22:06:43.335346Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"components_affected\":[{\"id\":\"de9b6f98-2556-44c9-bb88-9d839e1fda62\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"ed7b7ce3-9911-4da3-8b45-0fba052f3139\",\"created_at\":\"2026-02-19T21:06:33.926332Z\",\"modified_at\":\"2026-02-19T21:06:33.926332Z\",\"started_at\":\"2026-02-19T21:06:33.926332Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"de9b6f98-2556-44c9-bb88-9d839e1fda62\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"4d753d2f-1348-486d-afc7-22f3e1759af3\",\"type\":\"status_pages\"}}}},{\"id\":\"93176296-d3a5-4727-992a-ca43645b0d42\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T23:52:07.519Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"ff177f6a-17ed-4f5a-85c3-04b43621b282\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T23:52:19.215417Z\",\"published_date\":\"2026-02-19T21:52:09.105685Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T22:52:07.519Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"f1354169-871b-4e37-8f2e-9f469a7c3cae\",\"created_at\":\"2026-02-19T23:52:19.215417Z\",\"modified_at\":\"2026-02-19T23:52:19.215417Z\",\"started_at\":\"2026-02-19T23:52:19.215417Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"ff177f6a-17ed-4f5a-85c3-04b43621b282\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"922c3d4c-d2c2-4c0c-a3d2-998b41e89ade\",\"created_at\":\"2026-02-19T22:52:18.414197Z\",\"modified_at\":\"2026-02-19T22:52:18.414197Z\",\"started_at\":\"2026-02-19T22:52:18.414197Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"ff177f6a-17ed-4f5a-85c3-04b43621b282\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"cf3f4522-c823-463d-8e2b-d324ab9c961e\",\"created_at\":\"2026-02-19T21:52:09.105685Z\",\"modified_at\":\"2026-02-19T21:52:09.105685Z\",\"started_at\":\"2026-02-19T21:52:09.105685Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"ff177f6a-17ed-4f5a-85c3-04b43621b282\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"8d197716-0610-42ec-8bdf-8b571a68bfbe\",\"type\":\"status_pages\"}}}},{\"id\":\"99ce86c5-a232-4598-a405-4d7788294e9b\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T23:52:09.18Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"deb7b997-4f57-48b3-9dbf-4eaee77a8418\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T23:52:16.627844Z\",\"published_date\":\"2026-02-19T21:52:09.974133Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T22:52:09.18Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"72276413-5dfc-4422-bc7e-00c5e06db10e\",\"created_at\":\"2026-02-19T23:52:16.627844Z\",\"modified_at\":\"2026-02-19T23:52:16.627844Z\",\"started_at\":\"2026-02-19T23:52:16.627844Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"deb7b997-4f57-48b3-9dbf-4eaee77a8418\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"526d8c55-b5c1-42bf-afed-742812b6bc0f\",\"created_at\":\"2026-02-19T22:52:17.898547Z\",\"modified_at\":\"2026-02-19T22:52:17.898547Z\",\"started_at\":\"2026-02-19T22:52:17.898547Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"deb7b997-4f57-48b3-9dbf-4eaee77a8418\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"e9386e02-9cc9-4945-a840-fa20b00c4a66\",\"created_at\":\"2026-02-19T21:52:09.974133Z\",\"modified_at\":\"2026-02-19T21:52:09.974133Z\",\"started_at\":\"2026-02-19T21:52:09.974133Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"deb7b997-4f57-48b3-9dbf-4eaee77a8418\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"5d9fb154-2016-4209-a1aa-ffbb26b834cd\",\"type\":\"status_pages\"}}}},{\"id\":\"3bc4965e-8bca-45b7-b886-8fca2e92ddcc\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T23:52:10.173Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"12171b79-aaa4-4508-b3c5-e58d0315735d\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-19T23:52:17.541234Z\",\"published_date\":\"2026-02-19T21:52:11.35385Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T22:52:10.173Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"42fb9eb5-4ad3-4142-a731-2a444e47d31f\",\"created_at\":\"2026-02-19T23:52:17.541234Z\",\"modified_at\":\"2026-02-19T23:52:17.541234Z\",\"started_at\":\"2026-02-19T23:52:17.541234Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"12171b79-aaa4-4508-b3c5-e58d0315735d\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"c8e389a5-8a0b-4d7c-8922-181b61b3256f\",\"created_at\":\"2026-02-19T22:52:18.033924Z\",\"modified_at\":\"2026-02-19T22:52:18.033924Z\",\"started_at\":\"2026-02-19T22:52:18.033924Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"12171b79-aaa4-4508-b3c5-e58d0315735d\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"7b4c5d5b-9324-4283-8142-ac1b3b1c3d8b\",\"created_at\":\"2026-02-19T21:52:11.35385Z\",\"modified_at\":\"2026-02-19T21:52:11.35385Z\",\"started_at\":\"2026-02-19T21:52:11.35385Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"12171b79-aaa4-4508-b3c5-e58d0315735d\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"e9af0690-5634-4b5a-9a39-0024f5a94c5a\",\"type\":\"status_pages\"}}}},{\"id\":\"4ac0806e-a33a-441e-93b9-f7012f7e992a\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-19T23:52:11.693Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"6005b8d9-223c-49bb-b179-57c183557b28\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"modified_at\":\"2026-02-19T23:52:24.250139Z\",\"published_date\":\"2026-02-19T21:52:12.42919Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\",\"start_date\":\"2026-02-19T22:52:11.693Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"803c5c15-ff2b-4720-bd20-2ab3e9aca4bf\",\"created_at\":\"2026-02-19T23:52:24.250139Z\",\"modified_at\":\"2026-02-19T23:52:24.250139Z\",\"started_at\":\"2026-02-19T23:52:24.250139Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"6005b8d9-223c-49bb-b179-57c183557b28\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"7dc2ffcb-9105-4d49-8dfa-17204e3b82bf\",\"created_at\":\"2026-02-19T22:52:19.367788Z\",\"modified_at\":\"2026-02-19T22:52:19.367788Z\",\"started_at\":\"2026-02-19T22:52:19.367788Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"components_affected\":[{\"id\":\"6005b8d9-223c-49bb-b179-57c183557b28\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"58eea7a5-81d7-4e03-a1c3-334638addf91\",\"created_at\":\"2026-02-19T21:52:12.42919Z\",\"modified_at\":\"2026-02-19T21:52:12.42919Z\",\"started_at\":\"2026-02-19T21:52:12.42919Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"6005b8d9-223c-49bb-b179-57c183557b28\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"4fd54afd-fa2c-427d-8b40-897968e2dc3d\",\"type\":\"status_pages\"}}}},{\"id\":\"e5c44d06-1f97-4b25-9736-6ebf48115883\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-20T00:08:11.382Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"a56c992a-ea84-4df0-86da-65a9ebe3b1c3\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-20T00:08:17.566083Z\",\"published_date\":\"2026-02-19T22:08:13.002283Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T23:08:11.382Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"0273f0ee-b73f-4b37-b939-e5152bc04d95\",\"created_at\":\"2026-02-20T00:08:17.566083Z\",\"modified_at\":\"2026-02-20T00:08:17.566083Z\",\"started_at\":\"2026-02-20T00:08:17.566083Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"a56c992a-ea84-4df0-86da-65a9ebe3b1c3\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"a20bc5ab-efed-4d72-8eae-c1b6a0f607a6\",\"created_at\":\"2026-02-19T23:08:22.812962Z\",\"modified_at\":\"2026-02-19T23:08:22.812962Z\",\"started_at\":\"2026-02-19T23:08:22.812962Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"a56c992a-ea84-4df0-86da-65a9ebe3b1c3\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"f7e0615d-822e-478f-8ede-98f97d1201f3\",\"created_at\":\"2026-02-19T22:08:13.002283Z\",\"modified_at\":\"2026-02-19T22:08:13.002283Z\",\"started_at\":\"2026-02-19T22:08:13.002283Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"a56c992a-ea84-4df0-86da-65a9ebe3b1c3\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"9d623a97-ec26-4e2b-a156-64169eff130e\",\"type\":\"status_pages\"}}}},{\"id\":\"0f52de2a-b23a-49b7-b942-c51e3c2c47e9\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-20T00:08:13.062Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"4239bd23-e472-4a5e-b489-40bda1fe99e6\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-20T00:08:17.549539Z\",\"published_date\":\"2026-02-19T22:08:13.812185Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T23:08:13.062Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"3ebf4659-1c13-4a99-9cd5-a78aa5fb8d7d\",\"created_at\":\"2026-02-20T00:08:17.549539Z\",\"modified_at\":\"2026-02-20T00:08:17.549539Z\",\"started_at\":\"2026-02-20T00:08:17.549539Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"4239bd23-e472-4a5e-b489-40bda1fe99e6\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"b35c15c4-8e2d-4e18-9b47-b19f49b71642\",\"created_at\":\"2026-02-19T23:08:27.245166Z\",\"modified_at\":\"2026-02-19T23:08:27.245166Z\",\"started_at\":\"2026-02-19T23:08:27.245166Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"4239bd23-e472-4a5e-b489-40bda1fe99e6\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"e271d82f-a17e-4744-b7df-01a8109d6454\",\"created_at\":\"2026-02-19T22:08:13.812185Z\",\"modified_at\":\"2026-02-19T22:08:13.812185Z\",\"started_at\":\"2026-02-19T22:08:13.812185Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"4239bd23-e472-4a5e-b489-40bda1fe99e6\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"1d52408e-1180-4704-be65-ca3dc0e17dbc\",\"type\":\"status_pages\"}}}},{\"id\":\"c21d0303-18dd-4175-85c7-96a597319a4e\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-20T00:08:14.03Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"37805b01-c997-40cb-8680-5322c12049de\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-20T00:08:27.376456Z\",\"published_date\":\"2026-02-19T22:08:14.677394Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-19T23:08:14.03Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"6910751e-1835-4dfe-a7d9-e35763bce390\",\"created_at\":\"2026-02-20T00:08:27.376456Z\",\"modified_at\":\"2026-02-20T00:08:27.376456Z\",\"started_at\":\"2026-02-20T00:08:27.376456Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"37805b01-c997-40cb-8680-5322c12049de\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"615c9252-f5d2-4f9f-866b-0d02bbd480d3\",\"created_at\":\"2026-02-19T23:08:26.18059Z\",\"modified_at\":\"2026-02-19T23:08:26.18059Z\",\"started_at\":\"2026-02-19T23:08:26.18059Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"37805b01-c997-40cb-8680-5322c12049de\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"964f3408-f732-4874-a6d0-3622c524ee5b\",\"created_at\":\"2026-02-19T22:08:14.677394Z\",\"modified_at\":\"2026-02-19T22:08:14.677394Z\",\"started_at\":\"2026-02-19T22:08:14.677394Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"37805b01-c997-40cb-8680-5322c12049de\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"c4269d26-2a7a-48d8-b35c-0d065f5bdbdb\",\"type\":\"status_pages\"}}}},{\"id\":\"514f921f-2c5b-43a7-9d96-f1dfcc98ecc1\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-20T00:08:15.511Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"ca2479b6-c0fb-4926-8c05-38814139de99\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"modified_at\":\"2026-02-20T00:08:27.957772Z\",\"published_date\":\"2026-02-19T22:08:16.214384Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\",\"start_date\":\"2026-02-19T23:08:15.511Z\",\"status\":\"completed\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"5be70f2a-615a-4137-b3ad-096c66e2ac39\",\"created_at\":\"2026-02-20T00:08:27.957772Z\",\"modified_at\":\"2026-02-20T00:08:27.957772Z\",\"started_at\":\"2026-02-20T00:08:27.957772Z\",\"manual_transition\":false,\"status\":\"completed\",\"description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"ca2479b6-c0fb-4926-8c05-38814139de99\",\"name\":\"Login\",\"status\":\"operational\"}]},{\"id\":\"edfa4c0e-fd91-47a4-8a3c-fe1085f4964f\",\"created_at\":\"2026-02-19T23:08:26.917491Z\",\"modified_at\":\"2026-02-19T23:08:26.917491Z\",\"started_at\":\"2026-02-19T23:08:26.917491Z\",\"manual_transition\":false,\"status\":\"in_progress\",\"description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"components_affected\":[{\"id\":\"ca2479b6-c0fb-4926-8c05-38814139de99\",\"name\":\"Login\",\"status\":\"maintenance\"}]},{\"id\":\"aea79e6d-bfcd-455d-8be5-19513813b166\",\"created_at\":\"2026-02-19T22:08:16.214384Z\",\"modified_at\":\"2026-02-19T22:08:16.214384Z\",\"started_at\":\"2026-02-19T22:08:16.214384Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"ca2479b6-c0fb-4926-8c05-38814139de99\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"b03f7910-c533-4093-b978-e0f6db6a9af4\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"0061b471-af16-4c9c-a704-f5fb53ec871e\",\"type\":\"status_pages\"}}}},{\"id\":\"137fffe3-bfe1-471f-ad23-565105cd30f8\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-24T19:00:58.632Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"89f770b5-8612-41ef-a35d-e325503b4aff\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-24T17:00:59.394878Z\",\"published_date\":\"2026-02-24T17:00:59.394878Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-24T18:00:58.632Z\",\"status\":\"scheduled\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"79051405-03b3-4e9e-9e74-56e2d6593a06\",\"created_at\":\"2026-02-24T17:00:59.394878Z\",\"modified_at\":\"2026-02-24T17:00:59.394878Z\",\"started_at\":\"2026-02-24T17:00:59.394878Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"89f770b5-8612-41ef-a35d-e325503b4aff\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"4386413c-88e0-46d1-9492-4907633ed575\",\"type\":\"status_pages\"}}}}],\"meta\":{\"page\":{\"type\":\"offset_limit\",\"offset\":0,\"limit\":50,\"total\":31,\"first_offset\":0,\"prev_offset\":null,\"next_offset\":null,\"last_offset\":0}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:58 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "*/*" + ] + }, + "method": "delete", + "uri": "https://api.datadoghq.com/api/v2/statuspages/4386413c-88e0-46d1-9492-4907633ed575" + }, + "response": { + "body": { + "string": "", + "encoding": null + }, + "headers": {}, + "status": { + "code": 204, + "message": "No Content" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:00:58 GMT" + } + ], + "recorded_with": "VCR 6.0.0" +} \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/List-status-pages-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/List-status-pages-returns-OK-response.frozen index 95c95875d..f728bf36b 100644 --- a/tests/scenarios/cassettes/v2/status_pages/List-status-pages-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/List-status-pages-returns-OK-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:49.653Z \ No newline at end of file +2026-02-24T17:01:00.437Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/List-status-pages-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/List-status-pages-returns-OK-response.json index 0e1a28737..44700582a 100644 --- a/tests/scenarios/cassettes/v2/status_pages/List-status-pages-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/List-status-pages-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"a292a726f79d8dd3\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"7e8c7b13fd8893b0\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"2fb5cefa-a43b-4974-b439-96cef54df054\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"82aa9ec5-5394-4138-8d6c-475ed209b03d\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"5e7fc960-39ed-4522-aa38-187f41ace1fd\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"eda28835-e8a6-44a1-87f7-8da14819152b\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:49.763982Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"a292a726f79d8dd3\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:49.763982Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/2fb5cefa-a43b-4974-b439-96cef54df054/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"06fa86aa-c512-4c00-95ee-b1cb5b2cccf1\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"11970522-93b3-4e4a-834b-d0ba5ea329d0\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"d8053632-57ba-4262-92c0-76a96458c126\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"e0f79c01-0aba-4728-8b72-2923a153d955\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:01:00.593918Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"7e8c7b13fd8893b0\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:01:00.593918Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/06fa86aa-c512-4c00-95ee-b1cb5b2cccf1/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:49 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:00 GMT" }, { "request": { @@ -47,7 +47,7 @@ }, "response": { "body": { - "string": "{\"data\":[{\"id\":\"2fb5cefa-a43b-4974-b439-96cef54df054\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"82aa9ec5-5394-4138-8d6c-475ed209b03d\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"5e7fc960-39ed-4522-aa38-187f41ace1fd\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"eda28835-e8a6-44a1-87f7-8da14819152b\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:49.763982Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"a292a726f79d8dd3\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:49.763982Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/2fb5cefa-a43b-4974-b439-96cef54df054/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}],\"meta\":{\"page\":{\"type\":\"offset_limit\",\"offset\":0,\"limit\":50,\"total\":null,\"first_offset\":0,\"prev_offset\":null,\"next_offset\":50,\"last_offset\":null}}}", + "string": "{\"data\":[{\"id\":\"06fa86aa-c512-4c00-95ee-b1cb5b2cccf1\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"11970522-93b3-4e4a-834b-d0ba5ea329d0\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"d8053632-57ba-4262-92c0-76a96458c126\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"e0f79c01-0aba-4728-8b72-2923a153d955\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:01:00.593918Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"7e8c7b13fd8893b0\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:01:00.593918Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/06fa86aa-c512-4c00-95ee-b1cb5b2cccf1/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"bdf170e4-6689-4c54-96b7-84edac7d652d\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"ef2b536d-55b0-4200-b8aa-94cce005c5e7\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"dcee6190-c6fc-49a6-af7e-dd3dc1114ad3\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"61b95f10-b197-433a-baed-4513213f8480\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-23T20:35:59.798046Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"7abf9bc13fcb676d-1771878959\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-23T20:35:59.798046Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/bdf170e4-6689-4c54-96b7-84edac7d652d/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"bc07b5b2-3f21-4568-99f3-2d9da89ec99c\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"6a55888b-9bc7-483f-892e-ec0e3e216555\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"23d8b2d5-e453-4db2-98ea-1891af5e1237\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"02cbda4f-ed23-4fd8-a288-aef9cb4c077c\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-21T00:35:59.809271Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"7abf9bc13fcb676d-1771634159\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-21T00:35:59.809271Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/bc07b5b2-3f21-4568-99f3-2d9da89ec99c/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"0061b471-af16-4c9c-a704-f5fb53ec871e\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"7530e1c7-fde9-44d5-a685-5f621438ff7b\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"ca2479b6-c0fb-4926-8c05-38814139de99\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"0f892ec8-4733-4b36-9b73-a8828d7aec77\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T22:08:15.622258Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"268772cff8564d83\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T22:08:15.622258Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/0061b471-af16-4c9c-a704-f5fb53ec871e/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"c4269d26-2a7a-48d8-b35c-0d065f5bdbdb\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"b20c2ef6-3416-4bbb-ac51-bc2a20b2dd29\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"37805b01-c997-40cb-8680-5322c12049de\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"025c4d32-9492-4d85-8b58-3452ff410fbe\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T22:08:14.142145Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"793dc6f684cf74f5\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T22:08:14.142145Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/c4269d26-2a7a-48d8-b35c-0d065f5bdbdb/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"1d52408e-1180-4704-be65-ca3dc0e17dbc\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"3a5648c4-3202-4b36-a0cc-398ab19858c9\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"4239bd23-e472-4a5e-b489-40bda1fe99e6\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"0856eefb-e0f5-4934-b7bd-b5d75c6a1ab6\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T22:08:13.176344Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"52b8237a5bee3a96\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T22:08:13.176344Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/1d52408e-1180-4704-be65-ca3dc0e17dbc/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"9d623a97-ec26-4e2b-a156-64169eff130e\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"83fce248-29e4-47f5-b6e6-fdf8f606cb51\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"a56c992a-ea84-4df0-86da-65a9ebe3b1c3\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"c2d71bc7-e697-4df8-ac51-91e21d5403bb\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T22:08:12.422374Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"b7d4c42f606a87ae\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T22:08:12.422374Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/9d623a97-ec26-4e2b-a156-64169eff130e/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"4fd54afd-fa2c-427d-8b40-897968e2dc3d\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"ec160342-9615-4795-bf4f-7109aa48e099\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"6005b8d9-223c-49bb-b179-57c183557b28\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"f0f88729-a143-4cc1-a559-d87f451ba0f6\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T21:52:11.817273Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"12c095514cea2548\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T21:52:11.817273Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/4fd54afd-fa2c-427d-8b40-897968e2dc3d/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"e9af0690-5634-4b5a-9a39-0024f5a94c5a\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"2c82ff96-7079-49cb-b71a-ab85b99d4a96\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"12171b79-aaa4-4508-b3c5-e58d0315735d\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"0b34993c-1b31-4a25-8419-8ac74553ad62\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T21:52:10.301908Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"39f8e4cbb8a429ce\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T21:52:10.301908Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/e9af0690-5634-4b5a-9a39-0024f5a94c5a/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"5d9fb154-2016-4209-a1aa-ffbb26b834cd\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"6dca35af-75ee-4111-b5d1-9c1b301f6ca0\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"deb7b997-4f57-48b3-9dbf-4eaee77a8418\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"80159e04-ce47-4f14-9063-7fef16753977\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T21:52:09.320462Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"ef5eb16440f3186e\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T21:52:09.320462Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/5d9fb154-2016-4209-a1aa-ffbb26b834cd/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"8d197716-0610-42ec-8bdf-8b571a68bfbe\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"39ad92d7-1344-4e75-a62a-7439b362187b\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"ff177f6a-17ed-4f5a-85c3-04b43621b282\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"729370f8-4ebd-4577-a2c5-aec917534ed4\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T21:52:08.550943Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"640a4ff7098142e4\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T21:52:08.550943Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/8d197716-0610-42ec-8bdf-8b571a68bfbe/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"4d753d2f-1348-486d-afc7-22f3e1759af3\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"67998dd2-0edc-4146-855a-a147f4af1a4d\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"de9b6f98-2556-44c9-bb88-9d839e1fda62\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"11d95bc8-59eb-451c-ac3c-6b2458c0493a\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T21:06:33.207555Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"cc4b27d85d273270\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T21:06:33.207555Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/4d753d2f-1348-486d-afc7-22f3e1759af3/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"6cb07301-fa51-4113-babd-229a0e86942e\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"4e2b2bbc-cc10-46b7-b323-51d5f1f923d3\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"9fabc1b3-bfc4-45f5-8fe7-6b284be04d28\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"3a30321a-9a60-4400-82a0-916dba33ba4d\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T21:06:26.507436Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"cd113ddaafbe79f2\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T21:06:26.507436Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/6cb07301-fa51-4113-babd-229a0e86942e/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"0751ca80-99db-4247-ae44-655162fa07a9\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"9d366ce5-00ed-4fc6-8348-44b125a6a65f\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"63331812-b5a5-422a-889a-f7ca633b2d80\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"8782c501-1741-4bb1-b633-fa09283c5728\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T21:06:20.663002Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"bf3be33fe8d7b262\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T21:06:20.663002Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/0751ca80-99db-4247-ae44-655162fa07a9/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"33c6f810-15d8-4ce2-835b-1ac3a6ca1dbc\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"aef28e84-a82c-4c93-b436-4ba42dbdd4b6\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"44da03e1-1b23-4100-b26f-68ab4f8ca457\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"e5753320-4de3-44d1-85b6-4775ce235f17\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:44:16.851238Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"af56efb2f5bba226\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:44:16.851238Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/33c6f810-15d8-4ce2-835b-1ac3a6ca1dbc/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"bd3f1d69-4ee1-428d-8ac8-f03f387a7677\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"090535e1-afea-43de-9762-816f7a965a16\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"d1d9b93d-301d-4dad-8f3b-4475a3fad1b1\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"30dc5823-df1a-43d6-b575-d4a8804ad745\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:44:11.295897Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"1be8518d13b9dd02\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:44:11.295897Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/bd3f1d69-4ee1-428d-8ac8-f03f387a7677/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"016f2768-6987-4a8f-898b-ab94e17b3dd3\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"427a7b30-e308-44a7-9871-a030396ac962\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"579f0d5c-cce7-4666-98f3-40a696be8cc7\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"77dd3fb9-529a-4900-a5eb-6e0a748cf468\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:44:06.349736Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"a058117186c84e4f\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:44:06.349736Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/016f2768-6987-4a8f-898b-ab94e17b3dd3/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"0e37a7c0-9b0c-4c4e-b315-6b5e145390af\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"73147bd8-26f7-4c57-8557-7fba52d561a4\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"c4d3a1be-8d3d-4b09-9521-b03d5c1e6fdd\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"15802004-c6e9-4186-ba5c-eb01169569de\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:43:57.756135Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"7e7c00468d1b799b\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:43:57.756135Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/0e37a7c0-9b0c-4c4e-b315-6b5e145390af/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"3c7ddb58-a07b-4db7-ade0-31ac925b6597\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"23ec6518-ab99-4382-8d4b-94eef8c84845\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"cfae542d-147e-4a5f-bd85-b7ad75b9eb88\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"d6d65fe1-f349-43a2-ad39-da38097a1311\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:43:13.751657Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"ec88a3070e186fd2\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:43:13.751657Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/3c7ddb58-a07b-4db7-ade0-31ac925b6597/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"4561e0f5-5a64-4bc9-b16c-654d3d81325a\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"4903f8ce-5d7c-44fe-a9cf-936699d9c67e\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"03b85dec-3f1c-4bc1-b6a6-c3070e94aaa7\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"e64fdd83-8dc5-4f6e-b527-4c623e6998a6\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:41:17.209814Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"c9a065bd3dc330d7\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:41:17.209814Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/4561e0f5-5a64-4bc9-b16c-654d3d81325a/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"7c3eff68-42fb-4ddb-8761-3e7695d79570\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"603670a3-1893-49a3-93e1-e655c79509d6\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"862e2d94-1286-423c-86ec-541f5f5aa5e6\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"5fb0fa8a-a9fd-41bd-901c-2577bf1799f4\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:41:11.55184Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"139604cb3deb8bfa\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:41:11.55184Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/7c3eff68-42fb-4ddb-8761-3e7695d79570/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"a8e3fb88-56ee-4f01-8909-734f9a066177\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"ed519647-6f30-42fa-8342-032faa934a68\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"e19596ba-245c-49dc-9274-5aa1b7e865f5\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"bed4d438-d938-44b4-b3f7-e42f94560d9c\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:41:06.354933Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"c9da05969f090bf2\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:41:06.354933Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/a8e3fb88-56ee-4f01-8909-734f9a066177/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"93fc2aa2-cb3e-4ef9-bc09-4ac0dfba45c4\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"34b8d16f-f477-499d-b099-79b45a32b4f1\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"e5c3b642-9d15-44ac-9766-a108cf3908d9\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"490c2714-a0ce-4962-b169-c327b1160a10\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:40:54.111832Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"a1c16169acd25c7f\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:40:54.111832Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/93fc2aa2-cb3e-4ef9-bc09-4ac0dfba45c4/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"7e1c914a-7b5d-4928-9603-2c231f4e27b5\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"7a833ed9-561d-472b-a821-c1272f1ace34\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"222ce53c-1646-45bc-a5d4-27e0a4eb0313\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"44672e6c-dd99-4ed1-8ecc-7715e0625a01\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:26:47.706539Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"ccf251964a09e006\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:26:47.706539Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/7e1c914a-7b5d-4928-9603-2c231f4e27b5/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"d3167fc5-957d-4ec6-a55d-d75a5eb1926a\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"a0e49fa5-3555-4202-8cee-e6c3be83a6f0\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"eb5ff7d4-3faa-4216-9141-b616ecfa29a7\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"a7b1111a-43d9-4d27-827a-d5f9ec23e1d3\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:26:42.040089Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"48333a37cbd28f23\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:26:42.040089Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/d3167fc5-957d-4ec6-a55d-d75a5eb1926a/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"ef7f6596-79dd-4f10-9e02-96047289e678\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"70276684-f206-4d50-b890-1c20a5303ee4\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"2a064c38-b34c-4afd-8958-567b4fb94891\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"30f6916a-e722-4b19-b1b8-0485e0afd9c6\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:26:36.880519Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"df7a8d1c89704ae5\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:26:36.880519Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/ef7f6596-79dd-4f10-9e02-96047289e678/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}},{\"id\":\"9554c1f6-837d-4ce9-8682-90cc44689d6e\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"c0bb1772-afd4-4eed-bab5-c33a5451b899\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"c354419b-c97e-49c6-b556-a2bd73c2945b\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"f14a431d-6a9a-4395-bb71-6b1d5af83fbb\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:05:04.858919Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"059503e3ac91b0da\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:05:04.858919Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/9554c1f6-837d-4ce9-8682-90cc44689d6e/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"e4a07280-5e60-41e8-8868-d6b391ac9ba4\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"83b8a78b-684b-402b-a8a6-f0df36c4eb09\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"2ec5ce94-7c6b-4883-b963-774cde63af0e\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"9b1911f3-49ba-4d06-971d-b0600d51820f\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:05:03.384639Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"196a899e9a39079a\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:05:03.384639Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/e4a07280-5e60-41e8-8868-d6b391ac9ba4/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"c3af2a4f-dd6e-4777-8899-7be70c0e629c\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"48138666-3c22-45b7-8ed3-bc27533e4d40\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"0da9e91e-519e-4d1b-a530-95dbf9b1d6a3\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"cd8829c5-75ca-40a1-9204-24cc97525713\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T16:05:02.028841Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"75fd3e1165e41d93\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T16:05:02.028841Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/c3af2a4f-dd6e-4777-8899-7be70c0e629c/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"cfbf3ff5-f7e6-4d6c-8175-cbff110ebfc9\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"09a8484c-be64-4295-a6b8-acf87f9245ab\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"5cc44628-14ac-4563-a052-5b1f9a3fa3e4\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"c2f9b131-672d-4ee8-a50c-5c3874f302e8\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:48:47.984615Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"f574ab46462ee007\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:48:47.984615Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/cfbf3ff5-f7e6-4d6c-8175-cbff110ebfc9/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"a8e6fdb1-05c8-416c-a150-9af49c513206\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"22432bc8-d59a-4d2a-b4c5-459199b433be\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"6407bf01-0c11-4509-8ae6-24c77cf205da\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"424ec72d-f12c-4718-8c5b-52a2a1c25cd5\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:48:46.468711Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"fd37efd95db6e0b5\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:48:46.468711Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/a8e6fdb1-05c8-416c-a150-9af49c513206/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"b57576ee-457d-43da-9b17-f7e9087ab4a4\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"27a0738a-f38d-404d-999a-370cff2c4f10\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"2bf35e8e-28c9-49c3-948a-854097030f2c\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"d8522dbf-1638-47fb-ba5a-95af1fcd700d\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:48:44.989419Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"2e43867bfa448a5d\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:48:44.989419Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/b57576ee-457d-43da-9b17-f7e9087ab4a4/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"e2a7988d-e454-480d-9bff-dcfc5058ffd6\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"700c4456-e8c7-4890-b2c5-30c3fe0ed823\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"13a1264c-4541-4bb6-9c92-e626930ece49\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"8de3f71a-efdd-4524-94a6-eb088abcbfbc\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:46:01.826656Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"0b5855db08df37da\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:46:01.826656Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/e2a7988d-e454-480d-9bff-dcfc5058ffd6/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"18505e11-3832-4194-ac65-b47359669e61\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"289b7ce0-840b-4cea-af5d-b6aaaa4cbc5e\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"c6b42e04-bd00-4ee5-b946-a773a7df9334\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"020a490f-d227-430c-83c8-5ad7b5231ba8\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:46:00.299228Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"be2cd8834307e7f7\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:46:00.299228Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/18505e11-3832-4194-ac65-b47359669e61/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"58b6cfe4-d036-408e-a2c8-39c2aa18b5a5\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"83e2336e-8008-4e27-80d0-5a132221ac43\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"b372da78-86e5-4d41-bedd-43f7134c6acc\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"aced314d-a1ba-402f-8721-50b7dd45f59a\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:45:58.944334Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"d7e60b47af4c64a3\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:45:58.944334Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/58b6cfe4-d036-408e-a2c8-39c2aa18b5a5/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"bbe07a71-94b7-4012-9f69-032ff09e567e\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"727a527d-16ab-4744-9cbd-6955bf21e647\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"e33fa227-f111-40ea-8350-70e54e03af66\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"efce96c6-1bd4-466f-938f-5458ea6b390b\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:16:02.886765Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"3f122df453622870\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:16:02.886765Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/bbe07a71-94b7-4012-9f69-032ff09e567e/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"233d02e7-9989-454d-be5d-295f3f04ff5f\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"59cbcb7d-7d1a-4ee3-8a22-5ef655f5445a\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"db2157c8-f88c-4076-8cdc-6c9ee7e883c8\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"30dc0ca4-b005-4745-9edf-196e87969a34\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:16:01.952726Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"a321ba5a9d4e1bc2\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:16:01.952726Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/233d02e7-9989-454d-be5d-295f3f04ff5f/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"141fb4dd-5560-42a7-9145-78da6d717d9b\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"4434910b-ff89-40d5-b665-0ce24275363f\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"0612918d-6554-415c-9988-73464da30450\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"cfeb9664-4276-4995-ad8e-367cb896234b\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:16:01.193556Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"dc887211d7151600\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:16:01.193556Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/141fb4dd-5560-42a7-9145-78da6d717d9b/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"fbcbdef4-4e3a-436a-bb0a-be8205a98b36\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"69631aec-9684-4341-8567-15fc5023011d\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"7d4bd295-b987-49b0-8086-9dddbcfade33\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"f5f7553c-c304-4946-bd58-2a58a83ab7cb\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:13:24.950199Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"d2cc282985fb6853\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:13:24.950199Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/fbcbdef4-4e3a-436a-bb0a-be8205a98b36/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"6f3e2bef-846a-4c05-9d6d-35d9d136c31a\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"06c940fa-78c0-434b-8c65-4edc35fb3bf8\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"8e3cd5cc-1ce3-435c-863d-2f139a10fd18\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"4a56abde-dc39-4dd6-b1f4-7c5d2fde704b\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:13:23.837825Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"f3aeb4c1b8c5449d\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:13:23.837825Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/6f3e2bef-846a-4c05-9d6d-35d9d136c31a/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"6054e25a-60fa-4c88-a02a-760bae1a7917\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"0609ab97-970b-4312-8209-2fedf5ca4bab\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"77170b9e-5e63-4ddb-9a0b-93e271e530ba\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"f720e3c0-12cf-409a-97a3-3269b2f0e8f3\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T15:13:22.190248Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"367d9e866a66ad8c\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T15:13:22.190248Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/6054e25a-60fa-4c88-a02a-760bae1a7917/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"a7f27d28-ea42-4c5a-acfe-800e036b4d83\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"381eaab2-004f-4716-a76f-d264ab591163\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"9a0e536b-d716-49db-88b4-639f6de9ea23\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"955cc731-9ae5-4271-8351-b2ed3268f174\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T14:28:40.849754Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"1504c4154f91a37d\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T14:28:40.849754Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/a7f27d28-ea42-4c5a-acfe-800e036b4d83/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"e9e86584-1f9a-45b8-ace4-cb9ac49c8c35\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"6f670044-3c47-480d-8f1b-15226dc96500\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"8ae3244d-3172-4414-b826-4f3b74923b01\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"ce4b8354-a34c-481d-84d8-150b177a2989\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T14:28:40.03449Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"170bc85c2835a80b\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T14:28:40.03449Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/e9e86584-1f9a-45b8-ace4-cb9ac49c8c35/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"14cc6952-f835-419b-9c36-b73c6c1f5d3f\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"3cc01b47-837e-4d4f-bf94-bec3d1c3b576\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"6be3f4e9-2523-4e1f-9a34-23c0cf593f96\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"b09b3432-c866-4572-b1c8-dcefd6f4538d\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-19T14:28:39.323329Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"3509967b198e91ed\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-19T14:28:39.323329Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/14cc6952-f835-419b-9c36-b73c6c1f5d3f/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"b33cb3e9-d065-4ff3-960c-d8e0afb99f37\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"077bb7e5-9846-4dd9-a737-af0139dee854\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"1abb15cc-21e4-4119-926d-ceea2965ef52\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"400f843b-a5b6-4520-be39-f85c1ccb253b\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-18T22:43:50.391028Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"57998a2699532e89\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-18T22:43:50.391028Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/b33cb3e9-d065-4ff3-960c-d8e0afb99f37/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"8c769ee5-a018-4f94-bee4-3e0330e38b95\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"fed9318c-8fe4-4fd7-9e96-a3fca3e4dd38\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"a5d068d8-9903-468e-8947-e5b177f11877\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"56dafdff-3539-40ab-862a-e06d86ad95e4\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-18T22:43:49.009383Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"8ee03b33252cf8e7\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-18T22:43:49.009383Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/8c769ee5-a018-4f94-bee4-3e0330e38b95/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"49ee3d48-7e5c-4a7a-b268-97fb6d0ea3d2\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"94d13995-c630-4e33-bfed-a0cb020fc3b6\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"96f86213-fd43-41b2-98b9-a47413dc5376\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"80e83792-71df-4d95-8a33-74a68cd594d2\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-18T22:43:47.881786Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"f89ce4f178b4d51e\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-18T22:43:47.881786Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/49ee3d48-7e5c-4a7a-b268-97fb6d0ea3d2/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"3dd25c2b-a623-4e90-8e8a-ca1474d25623\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"2152d80d-2844-440f-a6bd-d337daf0e517\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"545a3c7e-befe-4ce4-8822-450ef2739026\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"eaca5ee7-e3cf-473c-a952-911d7392c94c\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-18T22:11:43.515284Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"f2dfecd8453872bb\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-18T22:11:43.515284Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/3dd25c2b-a623-4e90-8e8a-ca1474d25623/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"5bdbe523-c175-4eaf-a093-6ee0fb5b5a10\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"3ef2a099-e89f-43e0-942d-2402fd190987\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"66fe5ac6-1f11-43ab-8727-6ef1b96ddc7d\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"16ea75b5-79b6-4bc0-81e3-e93c7faddf72\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-18T22:11:42.828961Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"1d6844e41643f4b1\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-18T22:11:42.828961Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/5bdbe523-c175-4eaf-a093-6ee0fb5b5a10/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}},{\"id\":\"7658f2c2-01d8-4fb8-af5f-354a49aa4057\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"2e179c9e-4f24-4e95-b7ee-e84a2168c71e\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"2ff41cbd-f935-4efa-9145-d8ca2e55fde1\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"cc3fedf9-5331-49d7-894a-83501f9bcfbd\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-18T22:11:42.271637Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"6f9e2fa0ce5ee595\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-18T22:11:42.271637Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/7658f2c2-01d8-4fb8-af5f-354a49aa4057/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"type\":\"users\"}}}}],\"meta\":{\"page\":{\"type\":\"offset_limit\",\"offset\":0,\"limit\":50,\"total\":null,\"first_offset\":0,\"prev_offset\":null,\"next_offset\":50,\"last_offset\":null}}}", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:49 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:00 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/2fb5cefa-a43b-4974-b439-96cef54df054" + "uri": "https://api.datadoghq.com/api/v2/statuspages/06fa86aa-c512-4c00-95ee-b1cb5b2cccf1" }, "response": { "body": { @@ -84,7 +84,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:49 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:00 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Update-component-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Update-component-returns-OK-response.frozen index 7b2cd91b7..65cd576dd 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Update-component-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Update-component-returns-OK-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:50.959Z \ No newline at end of file +2026-02-24T17:01:02.180Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Update-component-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/Update-component-returns-OK-response.json index 14b720e44..39ac77056 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Update-component-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Update-component-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"18ce7dca5f31f286\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"bca9d790b9b0f94d\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"2f95d75e-d08f-4c37-8808-2b0246f86e16\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"7a828867-d56d-41a9-bc35-9eec112fd334\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"424cedb4-c0c1-4726-871a-5927588ca835\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"1cdf79d4-4c20-4388-ab76-c24f6c140bcb\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:51.072685Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"18ce7dca5f31f286\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:51.072685Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/2f95d75e-d08f-4c37-8808-2b0246f86e16/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"e0e309f4-9049-49d2-b6af-80874c5a4b84\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"d0c9d99e-e697-431b-93b0-400d2873ec18\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"f4aafe97-fdce-43f0-8872-0cb5ce9e7347\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"b74e7cb4-04b6-4086-9f01-aff7e23bfc09\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:01:02.494038Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"bca9d790b9b0f94d\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:01:02.494038Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/e0e309f4-9049-49d2-b6af-80874c5a4b84/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:50 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:02 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"name\":\"Logs Indexing\"},\"id\":\"7a828867-d56d-41a9-bc35-9eec112fd334\",\"type\":\"components\"}}", + "string": "{\"data\":{\"attributes\":{\"name\":\"Logs Indexing\"},\"id\":\"d0c9d99e-e697-431b-93b0-400d2873ec18\",\"type\":\"components\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "patch", - "uri": "https://api.datadoghq.com/api/v2/statuspages/2f95d75e-d08f-4c37-8808-2b0246f86e16/components/7a828867-d56d-41a9-bc35-9eec112fd334" + "uri": "https://api.datadoghq.com/api/v2/statuspages/e0e309f4-9049-49d2-b6af-80874c5a4b84/components/d0c9d99e-e697-431b-93b0-400d2873ec18" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"7a828867-d56d-41a9-bc35-9eec112fd334\",\"type\":\"components\",\"attributes\":{\"components\":[{\"id\":\"424cedb4-c0c1-4726-871a-5927588ca835\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"1cdf79d4-4c20-4388-ab76-c24f6c140bcb\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}],\"created_at\":\"2026-01-21T21:23:51.072685Z\",\"modified_at\":\"2026-01-21T21:23:51.606861Z\",\"name\":\"Logs Indexing\",\"position\":0,\"type\":\"group\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"group\":{\"data\":null},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"2f95d75e-d08f-4c37-8808-2b0246f86e16\",\"type\":\"status_pages\"}}}}}", + "string": "{\"data\":{\"id\":\"d0c9d99e-e697-431b-93b0-400d2873ec18\",\"type\":\"components\",\"attributes\":{\"components\":[{\"id\":\"f4aafe97-fdce-43f0-8872-0cb5ce9e7347\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"b74e7cb4-04b6-4086-9f01-aff7e23bfc09\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}],\"created_at\":\"2026-02-24T17:01:02.494038Z\",\"modified_at\":\"2026-02-24T17:01:03.086151Z\",\"name\":\"Logs Indexing\",\"position\":0,\"type\":\"group\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"group\":{\"data\":null},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"e0e309f4-9049-49d2-b6af-80874c5a4b84\",\"type\":\"status_pages\"}}}}}", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:50 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:02 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/2f95d75e-d08f-4c37-8808-2b0246f86e16" + "uri": "https://api.datadoghq.com/api/v2/statuspages/e0e309f4-9049-49d2-b6af-80874c5a4b84" }, "response": { "body": { @@ -90,7 +90,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:50 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:02 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Update-degradation-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Update-degradation-returns-OK-response.frozen index 7ba365b79..17cab2082 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Update-degradation-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Update-degradation-returns-OK-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:52.130Z \ No newline at end of file +2026-02-24T17:01:03.744Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Update-degradation-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/Update-degradation-returns-OK-response.json index dba21885b..e99e389f3 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Update-degradation-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Update-degradation-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"63b50a302c459f7c\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"7db16496b6c8a7fc\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"5df6e8f7-b903-4ba9-b0c5-d603536e23fa\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"545201a0-a23f-4cbd-ae78-9e392a686b0d\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"681d4866-a4ff-4e4e-b295-6b9586892675\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"e0c7b0ec-2517-43bd-a489-2f2f23eb0bc4\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:52.260223Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"63b50a302c459f7c\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:52.260223Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/5df6e8f7-b903-4ba9-b0c5-d603536e23fa/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"31832b1a-f21d-4273-b8c9-e6ab70992c46\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"13c30f15-5b69-427a-bf3f-43e26be5b57b\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"bed6d62b-c62d-413d-ac49-b445debee25c\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"903094d1-f9bc-4e63-beb7-d43f1969e966\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:01:03.924912Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"7db16496b6c8a7fc\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:01:03.924912Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/31832b1a-f21d-4273-b8c9-e6ab70992c46/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:52 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:03 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components_affected\":[{\"id\":\"681d4866-a4ff-4e4e-b295-6b9586892675\",\"status\":\"major_outage\"}],\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\"},\"type\":\"degradations\"}}", + "string": "{\"data\":{\"attributes\":{\"components_affected\":[{\"id\":\"bed6d62b-c62d-413d-ac49-b445debee25c\",\"status\":\"major_outage\"}],\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\"},\"type\":\"degradations\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "post", - "uri": "https://api.datadoghq.com/api/v2/statuspages/5df6e8f7-b903-4ba9-b0c5-d603536e23fa/degradations" + "uri": "https://api.datadoghq.com/api/v2/statuspages/31832b1a-f21d-4273-b8c9-e6ab70992c46/degradations" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"3e8741c2-3c93-4346-9ddc-67d381baee05\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"681d4866-a4ff-4e4e-b295-6b9586892675\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-01-21T21:23:52.827013Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-01-21T21:23:52.827013Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"e97d38d6-936d-4a4c-b07e-fad1379f414f\",\"created_at\":\"2026-01-21T21:23:52.827013Z\",\"modified_at\":\"2026-01-21T21:23:52.827013Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"681d4866-a4ff-4e4e-b295-6b9586892675\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"5df6e8f7-b903-4ba9-b0c5-d603536e23fa\",\"type\":\"status_pages\"}}}}}", + "string": "{\"data\":{\"id\":\"ac3fb11e-3702-43bf-a5a2-8103c964acd9\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"bed6d62b-c62d-413d-ac49-b445debee25c\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-02-24T17:01:04.652213Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-02-24T17:01:04.652213Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency\",\"updates\":[{\"id\":\"0775f6bd-7bb0-4e36-a055-3601b137a270\",\"created_at\":\"2026-02-24T17:01:04.652213Z\",\"modified_at\":\"2026-02-24T17:01:04.652213Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"bed6d62b-c62d-413d-ac49-b445debee25c\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"31832b1a-f21d-4273-b8c9-e6ab70992c46\",\"type\":\"status_pages\"}}}}}", "encoding": null }, "headers": { @@ -66,12 +66,12 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:52 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:03 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"title\":\"Elevated API Latency in US1\"},\"id\":\"3e8741c2-3c93-4346-9ddc-67d381baee05\",\"type\":\"degradations\"}}", + "string": "{\"data\":{\"attributes\":{\"title\":\"Elevated API Latency in US1\"},\"id\":\"ac3fb11e-3702-43bf-a5a2-8103c964acd9\",\"type\":\"degradations\"}}", "encoding": null }, "headers": { @@ -83,11 +83,11 @@ ] }, "method": "patch", - "uri": "https://api.datadoghq.com/api/v2/statuspages/5df6e8f7-b903-4ba9-b0c5-d603536e23fa/degradations/3e8741c2-3c93-4346-9ddc-67d381baee05" + "uri": "https://api.datadoghq.com/api/v2/statuspages/31832b1a-f21d-4273-b8c9-e6ab70992c46/degradations/ac3fb11e-3702-43bf-a5a2-8103c964acd9" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"3e8741c2-3c93-4346-9ddc-67d381baee05\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"681d4866-a4ff-4e4e-b295-6b9586892675\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-01-21T21:23:52.827013Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-01-21T21:23:52.984252Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency in US1\",\"updates\":[{\"id\":\"e97d38d6-936d-4a4c-b07e-fad1379f414f\",\"created_at\":\"2026-01-21T21:23:52.827013Z\",\"modified_at\":\"2026-01-21T21:23:52.827013Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"681d4866-a4ff-4e4e-b295-6b9586892675\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"5df6e8f7-b903-4ba9-b0c5-d603536e23fa\",\"type\":\"status_pages\"}}}}}", + "string": "{\"data\":{\"id\":\"ac3fb11e-3702-43bf-a5a2-8103c964acd9\",\"type\":\"degradations\",\"attributes\":{\"components_affected\":[{\"id\":\"bed6d62b-c62d-413d-ac49-b445debee25c\",\"name\":\"Login\",\"status\":\"major_outage\"}],\"created_at\":\"2026-02-24T17:01:04.652213Z\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"modified_at\":\"2026-02-24T17:01:04.857819Z\",\"status\":\"investigating\",\"title\":\"Elevated API Latency in US1\",\"updates\":[{\"id\":\"0775f6bd-7bb0-4e36-a055-3601b137a270\",\"created_at\":\"2026-02-24T17:01:04.652213Z\",\"modified_at\":\"2026-02-24T17:01:04.652213Z\",\"status\":\"investigating\",\"description\":\"Our API is experiencing elevated latency. We are investigating the issue.\",\"components_affected\":[{\"id\":\"bed6d62b-c62d-413d-ac49-b445debee25c\",\"name\":\"Login\",\"status\":\"major_outage\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"31832b1a-f21d-4273-b8c9-e6ab70992c46\",\"type\":\"status_pages\"}}}}}", "encoding": null }, "headers": { @@ -100,7 +100,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:52 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:03 GMT" }, { "request": { @@ -111,7 +111,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/5df6e8f7-b903-4ba9-b0c5-d603536e23fa/degradations/3e8741c2-3c93-4346-9ddc-67d381baee05" + "uri": "https://api.datadoghq.com/api/v2/statuspages/31832b1a-f21d-4273-b8c9-e6ab70992c46/degradations/ac3fb11e-3702-43bf-a5a2-8103c964acd9" }, "response": { "body": { @@ -124,7 +124,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:52 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:03 GMT" }, { "request": { @@ -135,7 +135,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/5df6e8f7-b903-4ba9-b0c5-d603536e23fa" + "uri": "https://api.datadoghq.com/api/v2/statuspages/31832b1a-f21d-4273-b8c9-e6ab70992c46" }, "response": { "body": { @@ -148,7 +148,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:52 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:03 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/status_pages/Update-maintenance-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Update-maintenance-returns-OK-response.frozen new file mode 100644 index 000000000..6fdcab9b4 --- /dev/null +++ b/tests/scenarios/cassettes/v2/status_pages/Update-maintenance-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-02-24T17:01:05.730Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Update-maintenance-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/Update-maintenance-returns-OK-response.json new file mode 100644 index 000000000..a34037a35 --- /dev/null +++ b/tests/scenarios/cassettes/v2/status_pages/Update-maintenance-returns-OK-response.json @@ -0,0 +1,131 @@ +{ + "http_interactions": [ + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"bd41b0432241277c\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/statuspages" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"47eedb78-70c8-4492-94d9-d6072b1b461a\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"14510904-00d4-49a0-b4fb-f352e0bbee44\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"8dbbf907-e6bf-4f52-9087-9faf83662618\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"303d4a51-952f-4e2f-8124-bcac0008f20d\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:01:05.895153Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"bd41b0432241277c\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:01:05.895153Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/47eedb78-70c8-4492-94d9-d6072b1b461a/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 201, + "message": "Created" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:01:05 GMT" + }, + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"completed_date\":\"2026-02-24T19:01:05.730Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"8dbbf907-e6bf-4f52-9087-9faf83662618\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-24T18:01:05.730Z\",\"title\":\"API Maintenance\"},\"type\":\"maintenances\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/statuspages/47eedb78-70c8-4492-94d9-d6072b1b461a/maintenances" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"6e4bdbf5-d781-4db9-80c0-38d6a0b042d5\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-24T19:01:05.73Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"8dbbf907-e6bf-4f52-9087-9faf83662618\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance.\",\"modified_at\":\"2026-02-24T17:01:06.54667Z\",\"published_date\":\"2026-02-24T17:01:06.54667Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance.\",\"start_date\":\"2026-02-24T18:01:05.73Z\",\"status\":\"scheduled\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"5757da5d-1852-474f-9321-b80824f1d54c\",\"created_at\":\"2026-02-24T17:01:06.54667Z\",\"modified_at\":\"2026-02-24T17:01:06.54667Z\",\"started_at\":\"2026-02-24T17:01:06.54667Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"8dbbf907-e6bf-4f52-9087-9faf83662618\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"47eedb78-70c8-4492-94d9-d6072b1b461a\",\"type\":\"status_pages\"}}}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 201, + "message": "Created" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:01:05 GMT" + }, + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\"},\"id\":\"6e4bdbf5-d781-4db9-80c0-38d6a0b042d5\",\"type\":\"maintenances\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "patch", + "uri": "https://api.datadoghq.com/api/v2/statuspages/47eedb78-70c8-4492-94d9-d6072b1b461a/maintenances/6e4bdbf5-d781-4db9-80c0-38d6a0b042d5" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"6e4bdbf5-d781-4db9-80c0-38d6a0b042d5\",\"type\":\"maintenances\",\"attributes\":{\"completed_date\":\"2026-02-24T19:01:05.73Z\",\"completed_description\":\"We have completed maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"8dbbf907-e6bf-4f52-9087-9faf83662618\",\"name\":\"Login\",\"status\":\"operational\"}],\"in_progress_description\":\"We are currently performing maintenance on the API to improve performance for 40 minutes.\",\"modified_at\":\"2026-02-24T17:01:06.746611Z\",\"published_date\":\"2026-02-24T17:01:06.54667Z\",\"scheduled_description\":\"We will be performing maintenance on the API to improve performance for 40 minutes.\",\"start_date\":\"2026-02-24T18:01:05.73Z\",\"status\":\"scheduled\",\"title\":\"API Maintenance\",\"updates\":[{\"id\":\"5757da5d-1852-474f-9321-b80824f1d54c\",\"created_at\":\"2026-02-24T17:01:06.54667Z\",\"modified_at\":\"2026-02-24T17:01:06.54667Z\",\"started_at\":\"2026-02-24T17:01:06.54667Z\",\"manual_transition\":false,\"status\":\"scheduled\",\"description\":\"We will be performing maintenance on the API to improve performance.\",\"components_affected\":[{\"id\":\"8dbbf907-e6bf-4f52-9087-9faf83662618\",\"name\":\"Login\",\"status\":\"operational\"}]}]},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"status_page\":{\"data\":{\"id\":\"47eedb78-70c8-4492-94d9-d6072b1b461a\",\"type\":\"status_pages\"}}}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:01:05 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "*/*" + ] + }, + "method": "delete", + "uri": "https://api.datadoghq.com/api/v2/statuspages/47eedb78-70c8-4492-94d9-d6072b1b461a" + }, + "response": { + "body": { + "string": "", + "encoding": null + }, + "headers": {}, + "status": { + "code": 204, + "message": "No Content" + } + }, + "recorded_at": "Tue, 24 Feb 2026 17:01:05 GMT" + } + ], + "recorded_with": "VCR 6.0.0" +} \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Update-status-page-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/status_pages/Update-status-page-returns-OK-response.frozen index bbf12a2e7..b1f3fb21d 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Update-status-page-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/status_pages/Update-status-page-returns-OK-response.frozen @@ -1 +1 @@ -2026-01-21T21:23:53.747Z \ No newline at end of file +2026-02-24T17:01:07.308Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/status_pages/Update-status-page-returns-OK-response.json b/tests/scenarios/cassettes/v2/status_pages/Update-status-page-returns-OK-response.json index f9a32cbf6..07a36e6c1 100644 --- a/tests/scenarios/cassettes/v2/status_pages/Update-status-page-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/status_pages/Update-status-page-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"f7d669fd50a8ce89\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"components\":[{\"components\":[{\"name\":\"Login\",\"position\":0,\"type\":\"component\"},{\"name\":\"Settings\",\"position\":1,\"type\":\"component\"}],\"name\":\"Application\",\"type\":\"group\"}],\"domain_prefix\":\"50e12c2de25a414e\",\"enabled\":true,\"name\":\"A Status Page\",\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"197028d4-9c5e-420f-acb1-963ae82ebf22\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"8f68e844-d983-473a-84c7-f5a4544ef430\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"a22c28e9-d717-45b7-bab8-d1cda9349dd4\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"310a77dd-1afd-426d-8e3e-3652da90db23\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:53.873851Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"f7d669fd50a8ce89\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:53.873851Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/197028d4-9c5e-420f-acb1-963ae82ebf22/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"34c403c9-30eb-43d7-b50e-615447b8da7b\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"2c0a3417-3e0a-4142-83e1-e59027d0ce67\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"b3d1d966-6c22-42e3-8367-161fc4daf223\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"ccc00996-6f92-4558-80e2-0a890108f04e\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:01:07.464734Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"50e12c2de25a414e\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:01:07.464734Z\",\"name\":\"A Status Page\",\"page_url\":\"https://frog.datadoghq.com/status-pages/34c403c9-30eb-43d7-b50e-615447b8da7b/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "Created" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:53 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:07 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"name\":\"A Status Page in US1\"},\"id\":\"197028d4-9c5e-420f-acb1-963ae82ebf22\",\"type\":\"status_pages\"}}", + "string": "{\"data\":{\"attributes\":{\"name\":\"A Status Page in US1\"},\"id\":\"34c403c9-30eb-43d7-b50e-615447b8da7b\",\"type\":\"status_pages\"}}", "encoding": null }, "headers": { @@ -49,11 +49,11 @@ ] }, "method": "patch", - "uri": "https://api.datadoghq.com/api/v2/statuspages/197028d4-9c5e-420f-acb1-963ae82ebf22" + "uri": "https://api.datadoghq.com/api/v2/statuspages/34c403c9-30eb-43d7-b50e-615447b8da7b" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"197028d4-9c5e-420f-acb1-963ae82ebf22\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"8f68e844-d983-473a-84c7-f5a4544ef430\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"a22c28e9-d717-45b7-bab8-d1cda9349dd4\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"310a77dd-1afd-426d-8e3e-3652da90db23\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-01-21T21:23:53.873851Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"f7d669fd50a8ce89\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-01-21T21:23:54.528957Z\",\"name\":\"A Status Page in US1\",\"page_url\":\"https://frog.datadoghq.com/status-pages/197028d4-9c5e-420f-acb1-963ae82ebf22/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", + "string": "{\"data\":{\"id\":\"34c403c9-30eb-43d7-b50e-615447b8da7b\",\"type\":\"status_pages\",\"attributes\":{\"company_logo\":null,\"components\":[{\"id\":\"2c0a3417-3e0a-4142-83e1-e59027d0ce67\",\"name\":\"Application\",\"type\":\"group\",\"position\":0,\"components\":[{\"id\":\"b3d1d966-6c22-42e3-8367-161fc4daf223\",\"name\":\"Login\",\"type\":\"component\",\"status\":\"operational\",\"position\":0},{\"id\":\"ccc00996-6f92-4558-80e2-0a890108f04e\",\"name\":\"Settings\",\"type\":\"component\",\"status\":\"operational\",\"position\":1}]}],\"created_at\":\"2026-02-24T17:01:07.464734Z\",\"custom_domain\":null,\"custom_domain_enabled\":false,\"domain_prefix\":\"50e12c2de25a414e\",\"email_header_image\":null,\"enabled\":true,\"favicon\":null,\"modified_at\":\"2026-02-24T17:01:08.147811Z\",\"name\":\"A Status Page in US1\",\"page_url\":\"https://frog.datadoghq.com/status-pages/34c403c9-30eb-43d7-b50e-615447b8da7b/view\",\"subscriptions_enabled\":false,\"type\":\"internal\",\"visualization_type\":\"bars_and_uptime_percentage\"},\"relationships\":{\"created_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}},\"last_modified_by_user\":{\"data\":{\"id\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"type\":\"users\"}}}}}", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:53 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:07 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/statuspages/197028d4-9c5e-420f-acb1-963ae82ebf22" + "uri": "https://api.datadoghq.com/api/v2/statuspages/34c403c9-30eb-43d7-b50e-615447b8da7b" }, "response": { "body": { @@ -90,7 +90,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 21 Jan 2026 21:23:53 GMT" + "recorded_at": "Tue, 24 Feb 2026 17:01:07 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/synthetics/Create-a-test-suite-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/synthetics/Create-a-test-suite-returns-OK-response.frozen index 957e037f2..62723cd8d 100644 --- a/tests/scenarios/cassettes/v2/synthetics/Create-a-test-suite-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/synthetics/Create-a-test-suite-returns-OK-response.frozen @@ -1 +1 @@ -2026-02-18T16:57:05.121Z \ No newline at end of file +2026-01-07T12:38:45.716Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/synthetics/Create-a-test-suite-returns-OK-response.json b/tests/scenarios/cassettes/v2/synthetics/Create-a-test-suite-returns-OK-response.json index 5ca68869f..d3ec9a345 100644 --- a/tests/scenarios/cassettes/v2/synthetics/Create-a-test-suite-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/synthetics/Create-a-test-suite-returns-OK-response.json @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"type\":\"suites\",\"attributes\":{\"type\":\"suite\",\"monitor_id\":259845717,\"name\":\"Example suite name\",\"options\":{},\"tests\":[],\"tags\":[\"env:production\"],\"public_id\":\"hik-xp5-9q6\",\"created_at\":\"2026-02-18T16:57:05.583051+00:00\",\"modified_at\":\"2026-02-18T16:57:05.583051+00:00\",\"created_by\":{\"name\":\"Corentin Girard\",\"email\":\"corentin.girard@datadoghq.com\",\"handle\":\"corentin.girard@datadoghq.com\"},\"message\":\"Notification message\",\"org_id\":321813,\"modified_by\":{\"name\":\"Corentin Girard\",\"email\":\"corentin.girard@datadoghq.com\",\"handle\":\"corentin.girard@datadoghq.com\"}},\"id\":\"hik-xp5-9q6\"}}\n", + "string": "{\"data\":{\"type\":\"suites\",\"id\":\"36n-bb6-njj\",\"attributes\":{\"tags\":[\"env:production\"],\"type\":\"suite\",\"created_by\":{\"email\":\"team-intg-tools-libs-spam@datadoghq.com\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"created_at\":\"2026-01-07T12:38:46.109472+00:00\",\"modified_at\":\"2026-01-07T12:38:46.109472+00:00\",\"message\":\"Notification message\",\"public_id\":\"36n-bb6-njj\",\"options\":{},\"modified_by\":{\"email\":\"team-intg-tools-libs-spam@datadoghq.com\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"tests\":[],\"name\":\"Example suite name\",\"org_id\":321813,\"monitor_id\":249141773}}}\n", "encoding": null }, "headers": { @@ -32,12 +32,12 @@ "message": "OK" } }, - "recorded_at": "Wed, 18 Feb 2026 16:57:05 GMT" + "recorded_at": "Wed, 07 Jan 2026 12:38:45 GMT" }, { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"public_ids\":[\"hik-xp5-9q6\"]},\"type\":\"delete_suites_request\"}}", + "string": "{\"data\":{\"attributes\":{\"public_ids\":[\"36n-bb6-njj\"]},\"type\":\"delete_suites_request\"}}", "encoding": null }, "headers": { @@ -53,7 +53,7 @@ }, "response": { "body": { - "string": "{\"data\":[{\"type\":\"suites\",\"attributes\":{\"deleted_at\":\"2026-02-18 16:57:06.420679\",\"public_id\":\"hik-xp5-9q6\"},\"id\":\"hik-xp5-9q6\"}]}\n", + "string": "{\"data\":[{\"type\":\"suites\",\"attributes\":{\"public_id\":\"36n-bb6-njj\",\"deleted_at\":\"2026-01-07 12:38:46.679914\"},\"id\":\"36n-bb6-njj\"}]}\n", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 18 Feb 2026 16:57:05 GMT" + "recorded_at": "Wed, 07 Jan 2026 12:38:45 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/features/v2/given.json b/tests/scenarios/features/v2/given.json index 1202e4f78..76980d4ce 100644 --- a/tests/scenarios/features/v2/given.json +++ b/tests/scenarios/features/v2/given.json @@ -1299,6 +1299,22 @@ "tag": "Status Pages", "operationId": "CreateDegradation" }, + { + "parameters": [ + { + "name": "page_id", + "value": "\"{{ status_page.data.id }}\"" + }, + { + "name": "body", + "value": "{\n \"data\": {\n \"attributes\": {\n \"title\": \"API Maintenance\",\n \"scheduled_description\": \"We will be performing maintenance on the API to improve performance.\",\n \"in_progress_description\": \"We are currently performing maintenance on the API to improve performance.\",\n \"completed_description\": \"We have completed maintenance on the API to improve performance.\",\n \"start_date\": \"{{ timeISO('now + 1h') }}\",\n \"completed_date\": \"{{ timeISO('now + 2h') }}\",\n \"components_affected\": [\n {\n \"id\": \"{{ status_page.data.attributes.components[0].components[0].id }}\",\n \"status\": \"operational\"\n }\n ]\n },\n \"type\": \"maintenances\"\n }\n}" + } + ], + "step": "there is a valid \"maintenance\" in the system", + "key": "maintenance", + "tag": "Status Pages", + "operationId": "CreateMaintenance" + }, { "parameters": [ { diff --git a/tests/scenarios/features/v2/status_pages.feature b/tests/scenarios/features/v2/status_pages.feature index 35d80dd2f..2df3e612b 100644 --- a/tests/scenarios/features/v2/status_pages.feature +++ b/tests/scenarios/features/v2/status_pages.feature @@ -30,6 +30,16 @@ Feature: Status Pages Then the response status is 201 Created And the response "data.attributes.updates" has length 1 + @team:DataDog/incident-app + Scenario: Create maintenance returns "Created" response + Given there is a valid "status_page" in the system + And new "CreateMaintenance" request + And request contains "page_id" parameter from "status_page.data.id" + And body with value {"data": {"attributes": {"title": "API Maintenance", "scheduled_description": "We will be performing maintenance on the API to improve performance.", "in_progress_description": "We are currently performing maintenance on the API to improve performance.", "completed_description": "We have completed maintenance on the API to improve performance.", "start_date": "{{ timeISO('now + 1h') }}", "completed_date": "{{ timeISO('now + 2h') }}", "components_affected": [{"id": "{{ status_page.data.attributes.components[0].components[0].id }}", "status": "operational"}]}, "type": "maintenances"}} + When the request is sent + Then the response status is 201 Created + And the response "data.attributes.updates" has length 1 + @team:DataDog/incident-app Scenario: Create status page returns "Created" response Given new "CreateStatusPage" request @@ -83,6 +93,16 @@ Feature: Status Pages When the request is sent Then the response status is 200 OK + @team:DataDog/incident-app + Scenario: Get maintenance returns "OK" response + Given there is a valid "status_page" in the system + And there is a valid "maintenance" in the system + And new "GetMaintenance" request + And request contains "page_id" parameter from "status_page.data.id" + And request contains "maintenance_id" parameter from "maintenance.data.id" + When the request is sent + Then the response status is 200 OK + @team:DataDog/incident-app Scenario: Get status page returns "OK" response Given new "GetStatusPage" request @@ -107,6 +127,14 @@ Feature: Status Pages When the request is sent Then the response status is 200 OK + @team:DataDog/incident-app + Scenario: List maintenances returns "OK" response + Given there is a valid "status_page" in the system + And there is a valid "maintenance" in the system + And new "ListMaintenances" request + When the request is sent + Then the response status is 200 OK + @team:DataDog/incident-app Scenario: List status pages returns "OK" response Given new "ListStatusPages" request @@ -114,6 +142,14 @@ Feature: Status Pages When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/incident-app + Scenario: Schedule maintenance returns "Created" response + Given new "CreateMaintenance" request + And request contains "page_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"completed_date": "2026-02-18T19:51:13.332360075Z", "completed_description": "We have completed maintenance on the API to improve performance.", "components_affected": [{"id": "1234abcd-12ab-34cd-56ef-123456abcdef", "status": "operational"}], "in_progress_description": "We are currently performing maintenance on the API to improve performance.", "scheduled_description": "We will be performing maintenance on the API to improve performance.", "start_date": "2026-02-18T19:21:13.332360075Z", "title": "API Maintenance"}, "type": "maintenances"}} + When the request is sent + Then the response status is 201 Created + @team:DataDog/incident-app Scenario: Update component returns "OK" response Given new "UpdateComponent" request @@ -137,6 +173,17 @@ Feature: Status Pages Then the response status is 200 OK And the response "data.attributes.title" is equal to "Elevated API Latency in US1" + @team:DataDog/incident-app + Scenario: Update maintenance returns "OK" response + Given there is a valid "status_page" in the system + And there is a valid "maintenance" in the system + And new "UpdateMaintenance" request + And request contains "page_id" parameter from "status_page.data.id" + And request contains "maintenance_id" parameter from "maintenance.data.id" + And body with value {"data": {"attributes": {"scheduled_description": "We will be performing maintenance on the API to improve performance for 40 minutes.", "in_progress_description": "We are currently performing maintenance on the API to improve performance for 40 minutes."}, "id": "{{ maintenance.data.id }}", "type": "maintenances"}} + When the request is sent + Then the response status is 200 OK + @team:DataDog/incident-app Scenario: Update status page returns "OK" response Given new "UpdateStatusPage" request diff --git a/tests/scenarios/features/v2/undo.json b/tests/scenarios/features/v2/undo.json index 09186eef6..906045ff7 100644 --- a/tests/scenarios/features/v2/undo.json +++ b/tests/scenarios/features/v2/undo.json @@ -5388,6 +5388,12 @@ "type": "safe" } }, + "ListMaintenances": { + "tag": "Status Pages", + "undo": { + "type": "safe" + } + }, "DeleteStatusPage": { "tag": "Status Pages", "undo": { @@ -5482,6 +5488,24 @@ "type": "idempotent" } }, + "CreateMaintenance": { + "tag": "Status Pages", + "undo": { + "type": "safe" + } + }, + "GetMaintenance": { + "tag": "Status Pages", + "undo": { + "type": "safe" + } + }, + "UpdateMaintenance": { + "tag": "Status Pages", + "undo": { + "type": "idempotent" + } + }, "GetOnDemandConcurrencyCap": { "tag": "Synthetics", "undo": { diff --git a/tests/scenarios/function_mappings.rs b/tests/scenarios/function_mappings.rs index dbafb6667..45363c6b4 100644 --- a/tests/scenarios/function_mappings.rs +++ b/tests/scenarios/function_mappings.rs @@ -5006,6 +5006,9 @@ pub fn collect_function_calls(world: &mut DatadogWorld) { world .function_mappings .insert("v2.ListDegradations".into(), test_v2_list_degradations); + world + .function_mappings + .insert("v2.ListMaintenances".into(), test_v2_list_maintenances); world .function_mappings .insert("v2.DeleteStatusPage".into(), test_v2_delete_status_page); @@ -5042,6 +5045,15 @@ pub fn collect_function_calls(world: &mut DatadogWorld) { world .function_mappings .insert("v2.UpdateDegradation".into(), test_v2_update_degradation); + world + .function_mappings + .insert("v2.CreateMaintenance".into(), test_v2_create_maintenance); + world + .function_mappings + .insert("v2.GetMaintenance".into(), test_v2_get_maintenance); + world + .function_mappings + .insert("v2.UpdateMaintenance".into(), test_v2_update_maintenance); world.function_mappings.insert( "v2.GetOnDemandConcurrencyCap".into(), test_v2_get_on_demand_concurrency_cap, @@ -38463,12 +38475,16 @@ fn test_v2_list_degradations(world: &mut DatadogWorld, _parameters: &HashMap response, Err(error) => { @@ -38487,6 +38503,55 @@ fn test_v2_list_degradations(world: &mut DatadogWorld, _parameters: &HashMap) { + let api = world + .api_instances + .v2_api_status_pages + .as_ref() + .expect("api instance not found"); + let filter_page_id = _parameters + .get("filter[page_id]") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let page_offset = _parameters + .get("page[offset]") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let page_limit = _parameters + .get("page[limit]") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let include = _parameters + .get("include") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let filter_status = _parameters + .get("filter[status]") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let sort = _parameters + .get("sort") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let mut params = datadogV2::api_status_pages::ListMaintenancesOptionalParams::default(); + params.filter_page_id = filter_page_id; + params.page_offset = page_offset; + params.page_limit = page_limit; + params.include = include; + params.filter_status = filter_status; + params.sort = sort; + let response = match block_on(api.list_maintenances_with_http_info(params)) { + Ok(response) => response, + Err(error) => { + return match error { + Error::ResponseError(e) => { + world.response.code = e.status.as_u16(); + if let Some(entity) = e.entity { + world.response.object = serde_json::to_value(entity).unwrap(); + } + } + _ => panic!("error parsing response: {error}"), + }; + } + }; + world.response.object = serde_json::to_value(response.entity).unwrap(); + world.response.code = response.status.as_u16(); +} + fn test_v2_delete_status_page(world: &mut DatadogWorld, _parameters: &HashMap) { let api = world .api_instances @@ -38868,6 +38933,116 @@ fn test_v2_update_degradation(world: &mut DatadogWorld, _parameters: &HashMap) { + let api = world + .api_instances + .v2_api_status_pages + .as_ref() + .expect("api instance not found"); + let page_id = serde_json::from_value(_parameters.get("page_id").unwrap().clone()).unwrap(); + let body = serde_json::from_value(_parameters.get("body").unwrap().clone()).unwrap(); + let notify_subscribers = _parameters + .get("notify_subscribers") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let include = _parameters + .get("include") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let mut params = datadogV2::api_status_pages::CreateMaintenanceOptionalParams::default(); + params.notify_subscribers = notify_subscribers; + params.include = include; + let response = match block_on(api.create_maintenance_with_http_info(page_id, body, params)) { + Ok(response) => response, + Err(error) => { + return match error { + Error::ResponseError(e) => { + world.response.code = e.status.as_u16(); + if let Some(entity) = e.entity { + world.response.object = serde_json::to_value(entity).unwrap(); + } + } + _ => panic!("error parsing response: {error}"), + }; + } + }; + world.response.object = serde_json::to_value(response.entity).unwrap(); + world.response.code = response.status.as_u16(); +} + +fn test_v2_get_maintenance(world: &mut DatadogWorld, _parameters: &HashMap) { + let api = world + .api_instances + .v2_api_status_pages + .as_ref() + .expect("api instance not found"); + let page_id = serde_json::from_value(_parameters.get("page_id").unwrap().clone()).unwrap(); + let maintenance_id = + serde_json::from_value(_parameters.get("maintenance_id").unwrap().clone()).unwrap(); + let include = _parameters + .get("include") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let mut params = datadogV2::api_status_pages::GetMaintenanceOptionalParams::default(); + params.include = include; + let response = + match block_on(api.get_maintenance_with_http_info(page_id, maintenance_id, params)) { + Ok(response) => response, + Err(error) => { + return match error { + Error::ResponseError(e) => { + world.response.code = e.status.as_u16(); + if let Some(entity) = e.entity { + world.response.object = serde_json::to_value(entity).unwrap(); + } + } + _ => panic!("error parsing response: {error}"), + }; + } + }; + world.response.object = serde_json::to_value(response.entity).unwrap(); + world.response.code = response.status.as_u16(); +} + +fn test_v2_update_maintenance(world: &mut DatadogWorld, _parameters: &HashMap) { + let api = world + .api_instances + .v2_api_status_pages + .as_ref() + .expect("api instance not found"); + let page_id = serde_json::from_value(_parameters.get("page_id").unwrap().clone()).unwrap(); + let maintenance_id = + serde_json::from_value(_parameters.get("maintenance_id").unwrap().clone()).unwrap(); + let body = serde_json::from_value(_parameters.get("body").unwrap().clone()).unwrap(); + let notify_subscribers = _parameters + .get("notify_subscribers") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let include = _parameters + .get("include") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let mut params = datadogV2::api_status_pages::UpdateMaintenanceOptionalParams::default(); + params.notify_subscribers = notify_subscribers; + params.include = include; + let response = match block_on(api.update_maintenance_with_http_info( + page_id, + maintenance_id, + body, + params, + )) { + Ok(response) => response, + Err(error) => { + return match error { + Error::ResponseError(e) => { + world.response.code = e.status.as_u16(); + if let Some(entity) = e.entity { + world.response.object = serde_json::to_value(entity).unwrap(); + } + } + _ => panic!("error parsing response: {error}"), + }; + } + }; + world.response.object = serde_json::to_value(response.entity).unwrap(); + world.response.code = response.status.as_u16(); +} + fn test_v2_get_on_demand_concurrency_cap( world: &mut DatadogWorld, _parameters: &HashMap,