Skip to content

Conversation

giuseppedipinto
Copy link
Contributor

Add favourite services openapi definition.

List of Changes

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):

Types of changes

  • Chore (nothing changes by a user perspective)
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

  • My change requires a changeset, which I've added.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.

Copy link

changeset-bot bot commented Oct 13, 2025

⚠️ No Changeset found

Latest commit: b4f2839

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link
Contributor

github-actions bot commented Oct 13, 2025

Jira Pull Request Link

This Pull Request refers to the following Jira issue IOPAE-2207

Copy link
Contributor

github-actions bot commented Oct 13, 2025

Terraform Plan 📖

Terraform Plan
ime", ytitle= "availability(%)")
                                            EOT
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ControlType"
                                          + value      = "FrameControlChart"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "SpecificChart"
                                          + value      = "Line"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartTitle"
                                          + value      = "Availability (5m)"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartSubTitle"
                                          + value      = "/api/v2/favourites/services"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Dimensions"
                                          + value      = {
                                              + aggregation = "Sum"
                                              + splitBy     = []
                                              + xAxis       = {
                                                  + name = "TimeGenerated"
                                                  + type = "datetime"
                                                }
                                              + yAxis       = [
                                                  + {
                                                      + name = "availability"
                                                      + type = "real"
                                                    },
                                                  + {
                                                      + name = "watermark"
                                                      + type = "real"
                                                    },
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "LegendOptions"
                                          + value      = {
                                              + isEnabled = true
                                              + position  = "Bottom"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "IsQueryContainTimeRange"
                                          + value      = false
                                        },
                                    ]
                                  + settings = {
                                      + content = {
                                          + PartTitle = "Availability (5m)"
                                          + Query     = <<-EOT
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                let threshold = 0.99;
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex "/api/v2/favourites/services$"
                                                | summarize
                                                  Total=count(),
                                                  Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)
                                                | extend availability=toreal(Success) / Total
                                                | project TimeGenerated, availability, watermark=threshold
                                                | render timechart with (xtitle = "time", ytitle= "availability(%)")
                                            EOT
                                        }
                                    }
                                  + type     = "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart"
                                }
                              + position = {
                                  + colSpan = 6
                                  + rowSpan = 4
                                  + x       = 0
                                  + y       = 20
                                }
                            }
                          + "16" = {
                              + metadata = {
                                  + inputs   = [
                                      + {
                                          + isOptional = true
                                          + name       = "resourceTypeMode"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ComponentId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Scope"
                                          + value      = {
                                              + resourceIds = [
                                                  + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-itn-common-rg-01/providers/Microsoft.Network/applicationGateways/io-p-itn-agw-01",
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Version"
                                          + value      = "2.0"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "TimeRange"
                                          + value      = "PT4H"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "DashboardId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "DraftRequestParameters"
                                          + value      = {
                                              + scope = "hierarchy"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Query"
                                          + value      = <<-EOT
                                                let api_url = "/api/v2/favourites/services$";
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex api_url
                                                | extend HTTPStatus = case(
                                                  httpStatus_d between (100 .. 199), "1XX",
                                                  httpStatus_d between (200 .. 299), "2XX",
                                                  httpStatus_d between (300 .. 399), "3XX",
                                                  httpStatus_d between (400 .. 499), "4XX",
                                                  "5XX")
                                                | summarize count() by HTTPStatus, bin(TimeGenerated, 5m)
                                                | render areachart with (xtitle = "time", ytitle= "count")
                                            EOT
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ControlType"
                                          + value      = "FrameControlChart"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "SpecificChart"
                                          + value      = "Pie"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartTitle"
                                          + value      = "Response Codes (5m)"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartSubTitle"
                                          + value      = "/api/v2/favourites/services"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Dimensions"
                                          + value      = {
                                              + aggregation = "Sum"
                                              + splitBy     = []
                                              + xAxis       = {
                                                  + name = "httpStatus_d"
                                                  + type = "string"
                                                }
                                              + yAxis       = [
                                                  + {
                                                      + name = "count_"
                                                      + type = "long"
                                                    },
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "LegendOptions"
                                          + value      = {
                                              + isEnabled = true
                                              + position  = "Bottom"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "IsQueryContainTimeRange"
                                          + value      = false
                                        },
                                    ]
                                  + settings = {
                                      + content = {
                                          + Dimensions    = {
                                              + aggregation = "Sum"
                                              + splitBy     = [
                                                  + {
                                                      + name = "HTTPStatus"
                                                      + type = "string"
                                                    },
                                                ]
                                              + xAxis       = {
                                                  + name = "TimeGenerated"
                                                  + type = "datetime"
                                                }
                                              + yAxis       = [
                                                  + {
                                                      + name = "count_"
                                                      + type = "long"
                                                    },
                                                ]
                                            }
                                          + PartTitle     = "Response Codes (5m)"
                                          + Query         = <<-EOT
                                                let api_url = "/api/v2/favourites/services$";
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex api_url
                                                | extend HTTPStatus = case(
                                                  httpStatus_d between (100 .. 199), "1XX",
                                                  httpStatus_d between (200 .. 299), "2XX",
                                                  httpStatus_d between (300 .. 399), "3XX",
                                                  httpStatus_d between (400 .. 499), "4XX",
                                                  "5XX")
                                                | summarize count() by HTTPStatus, bin(TimeGenerated, 5m)
                                                | render areachart with (xtitle = "time", ytitle= "count")
                                            EOT
                                          + SpecificChart = "StackedArea"
                                        }
                                    }
                                  + type     = "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart"
                                }
                              + position = {
                                  + colSpan = 6
                                  + rowSpan = 4
                                  + x       = 6
                                  + y       = 20
                                }
                            }
                          + "17" = {
                              + metadata = {
                                  + inputs   = [
                                      + {
                                          + isOptional = true
                                          + name       = "resourceTypeMode"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ComponentId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Scope"
                                          + value      = {
                                              + resourceIds = [
                                                  + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-itn-common-rg-01/providers/Microsoft.Network/applicationGateways/io-p-itn-agw-01",
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Version"
                                          + value      = "2.0"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "TimeRange"
                                          + value      = "PT4H"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "DashboardId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "DraftRequestParameters"
                                          + value      = {
                                              + scope = "hierarchy"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Query"
                                          + value      = <<-EOT
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                let threshold = 1;
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex "/api/v2/favourites/services$"
                                                | summarize
                                                    watermark=threshold,
                                                    duration_percentile_95=percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)
                                                | render timechart with (xtitle = "time", ytitle= "response time(s)")
                                            EOT
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ControlType"
                                          + value      = "FrameControlChart"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "SpecificChart"
                                          + value      = "StackedColumn"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartTitle"
                                          + value      = "Percentile Response Time (5m)"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartSubTitle"
                                          + value      = "/api/v2/favourites/services"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Dimensions"
                                          + value      = {
                                              + aggregation = "Sum"
                                              + splitBy     = []
                                              + xAxis       = {
                                                  + name = "TimeGenerated"
                                                  + type = "datetime"
                                                }
                                              + yAxis       = [
                                                  + {
                                                      + name = "duration_percentile_95"
                                                      + type = "real"
                                                    },
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "LegendOptions"
                                          + value      = {
                                              + isEnabled = true
                                              + position  = "Bottom"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "IsQueryContainTimeRange"
                                          + value      = false
                                        },
                                    ]
                                  + settings = {
                                      + content = {
                                          + Dimensions    = {
                                              + aggregation = "Sum"
                                              + splitBy     = []
                                              + xAxis       = {
                                                  + name = "TimeGenerated"
                                                  + type = "datetime"
                                                }
                                              + yAxis       = [
                                                  + {
                                                      + name = "watermark"
                                                      + type = "long"
                                                    },
                                                  + {
                                                      + name = "duration_percentile_95"
                                                      + type = "real"
                                                    },
                                                ]
                                            }
                                          + PartTitle     = "Percentile Response Time (5m)"
                                          + Query         = <<-EOT
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                let threshold = 1;
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex "/api/v2/favourites/services$"
                                                | summarize
                                                    watermark=threshold,
                                                    duration_percentile_95=percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)
                                                | render timechart with (xtitle = "time", ytitle= "response time(s)")
                                            EOT
                                          + SpecificChart = "Line"
                                        }
                                    }
                                  + type     = "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart"
                                }
                              + position = {
                                  + colSpan = 6
                                  + rowSpan = 4
                                  + x       = 12
                                  + y       = 20
                                }
                            }
                          + "18" = {
                              + metadata = {
                                  + inputs   = [
                                      + {
                                          + isOptional = true
                                          + name       = "resourceTypeMode"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ComponentId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Scope"
                                          + value      = {
                                              + resourceIds = [
                                                  + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-itn-common-rg-01/providers/Microsoft.Network/applicationGateways/io-p-itn-agw-01",
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Version"
                                          + value      = "2.0"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "TimeRange"
                                          + value      = "PT4H"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "DashboardId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "DraftRequestParameters"
                                          + value      = {
                                              + scope = "hierarchy"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Query"
                                          + value      = <<-EOT
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                let threshold = 0.99;
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex "/api/v2/favourites/services/[^/]+$"
                                                | summarize
                                                  Total=count(),
                                                  Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)
                                                | extend availability=toreal(Success) / Total
                                                | project TimeGenerated, availability, watermark=threshold
                                                | render timechart with (xtitle = "time", ytitle= "availability(%)")
                                            EOT
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ControlType"
                                          + value      = "FrameControlChart"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "SpecificChart"
                                          + value      = "Line"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartTitle"
                                          + value      = "Availability (5m)"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartSubTitle"
                                          + value      = "/api/v2/favourites/services/{serviceId}"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Dimensions"
                                          + value      = {
                                              + aggregation = "Sum"
                                              + splitBy     = []
                                              + xAxis       = {
                                                  + name = "TimeGenerated"
                                                  + type = "datetime"
                                                }
                                              + yAxis       = [
                                                  + {
                                                      + name = "availability"
                                                      + type = "real"
                                                    },
                                                  + {
                                                      + name = "watermark"
                                                      + type = "real"
                                                    },
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "LegendOptions"
                                          + value      = {
                                              + isEnabled = true
                                              + position  = "Bottom"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "IsQueryContainTimeRange"
                                          + value      = false
                                        },
                                    ]
                                  + settings = {
                                      + content = {
                                          + PartTitle = "Availability (5m)"
                                          + Query     = <<-EOT
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                let threshold = 0.99;
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex "/api/v2/favourites/services/[^/]+$"
                                                | summarize
                                                  Total=count(),
                                                  Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)
                                                | extend availability=toreal(Success) / Total
                                                | project TimeGenerated, availability, watermark=threshold
                                                | render timechart with (xtitle = "time", ytitle= "availability(%)")
                                            EOT
                                        }
                                    }
                                  + type     = "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart"
                                }
                              + position = {
                                  + colSpan = 6
                                  + rowSpan = 4
                                  + x       = 0
                                  + y       = 24
                                }
                            }
                          + "19" = {
                              + metadata = {
                                  + inputs   = [
                                      + {
                                          + isOptional = true
                                          + name       = "resourceTypeMode"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ComponentId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Scope"
                                          + value      = {
                                              + resourceIds = [
                                                  + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-itn-common-rg-01/providers/Microsoft.Network/applicationGateways/io-p-itn-agw-01",
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Version"
                                          + value      = "2.0"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "TimeRange"
                                          + value      = "PT4H"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "DashboardId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "DraftRequestParameters"
                                          + value      = {
                                              + scope = "hierarchy"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Query"
                                          + value      = <<-EOT
                                                let api_url = "/api/v2/favourites/services/[^/]+$";
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex api_url
                                                | extend HTTPStatus = case(
                                                  httpStatus_d between (100 .. 199), "1XX",
                                                  httpStatus_d between (200 .. 299), "2XX",
                                                  httpStatus_d between (300 .. 399), "3XX",
                                                  httpStatus_d between (400 .. 499), "4XX",
                                                  "5XX")
                                                | summarize count() by HTTPStatus, bin(TimeGenerated, 5m)
                                                | render areachart with (xtitle = "time", ytitle= "count")
                                            EOT
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ControlType"
                                          + value      = "FrameControlChart"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "SpecificChart"
                                          + value      = "Pie"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartTitle"
                                          + value      = "Response Codes (5m)"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartSubTitle"
                                          + value      = "/api/v2/favourites/services/{serviceId}"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Dimensions"
                                          + value      = {
                                              + aggregation = "Sum"
                                              + splitBy     = []
                                              + xAxis       = {
                                                  + name = "httpStatus_d"
                                                  + type = "string"
                                                }
                                              + yAxis       = [
                                                  + {
                                                      + name = "count_"
                                                      + type = "long"
                                                    },
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "LegendOptions"
                                          + value      = {
                                              + isEnabled = true
                                              + position  = "Bottom"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "IsQueryContainTimeRange"
                                          + value      = false
                                        },
                                    ]
                                  + settings = {
                                      + content = {
                                          + Dimensions    = {
                                              + aggregation = "Sum"
                                              + splitBy     = [
                                                  + {
                                                      + name = "HTTPStatus"
                                                      + type = "string"
                                                    },
                                                ]
                                              + xAxis       = {
                                                  + name = "TimeGenerated"
                                                  + type = "datetime"
                                                }
                                              + yAxis       = [
                                                  + {
                                                      + name = "count_"
                                                      + type = "long"
                                                    },
                                                ]
                                            }
                                          + PartTitle     = "Response Codes (5m)"
                                          + Query         = <<-EOT
                                                let api_url = "/api/v2/favourites/services/[^/]+$";
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex api_url
                                                | extend HTTPStatus = case(
                                                  httpStatus_d between (100 .. 199), "1XX",
                                                  httpStatus_d between (200 .. 299), "2XX",
                                                  httpStatus_d between (300 .. 399), "3XX",
                                                  httpStatus_d between (400 .. 499), "4XX",
                                                  "5XX")
                                                | summarize count() by HTTPStatus, bin(TimeGenerated, 5m)
                                                | render areachart with (xtitle = "time", ytitle= "count")
                                            EOT
                                          + SpecificChart = "StackedArea"
                                        }
                                    }
                                  + type     = "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart"
                                }
                              + position = {
                                  + colSpan = 6
                                  + rowSpan = 4
                                  + x       = 6
                                  + y       = 24
                                }
                            }
                          + "20" = {
                              + metadata = {
                                  + inputs   = [
                                      + {
                                          + isOptional = true
                                          + name       = "resourceTypeMode"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ComponentId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Scope"
                                          + value      = {
                                              + resourceIds = [
                                                  + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-itn-common-rg-01/providers/Microsoft.Network/applicationGateways/io-p-itn-agw-01",
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Version"
                                          + value      = "2.0"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "TimeRange"
                                          + value      = "PT4H"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "DashboardId"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "DraftRequestParameters"
                                          + value      = {
                                              + scope = "hierarchy"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Query"
                                          + value      = <<-EOT
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                let threshold = 1;
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex "/api/v2/favourites/services/[^/]+$"
                                                | summarize
                                                    watermark=threshold,
                                                    duration_percentile_95=percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)
                                                | render timechart with (xtitle = "time", ytitle= "response time(s)")
                                            EOT
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "ControlType"
                                          + value      = "FrameControlChart"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "SpecificChart"
                                          + value      = "StackedColumn"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartTitle"
                                          + value      = "Percentile Response Time (5m)"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "PartSubTitle"
                                          + value      = "/api/v2/favourites/services/{serviceId}"
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "Dimensions"
                                          + value      = {
                                              + aggregation = "Sum"
                                              + splitBy     = []
                                              + xAxis       = {
                                                  + name = "TimeGenerated"
                                                  + type = "datetime"
                                                }
                                              + yAxis       = [
                                                  + {
                                                      + name = "duration_percentile_95"
                                                      + type = "real"
                                                    },
                                                ]
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "LegendOptions"
                                          + value      = {
                                              + isEnabled = true
                                              + position  = "Bottom"
                                            }
                                        },
                                      + {
                                          + isOptional = true
                                          + name       = "IsQueryContainTimeRange"
                                          + value      = false
                                        },
                                    ]
                                  + settings = {
                                      + content = {
                                          + Dimensions    = {
                                              + aggregation = "Sum"
                                              + splitBy     = []
                                              + xAxis       = {
                                                  + name = "TimeGenerated"
                                                  + type = "datetime"
                                                }
                                              + yAxis       = [
                                                  + {
                                                      + name = "watermark"
                                                      + type = "long"
                                                    },
                                                  + {
                                                      + name = "duration_percentile_95"
                                                      + type = "real"
                                                    },
                                                ]
                                            }
                                          + PartTitle     = "Percentile Response Time (5m)"
                                          + Query         = <<-EOT
                                                let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"];
                                                let threshold = 1;
                                                AzureDiagnostics
                                                | where originalHost_s in (api_hosts)
                                                | where requestUri_s matches regex "/api/v2/favourites/services/[^/]+$"
                                                | summarize
                                                    watermark=threshold,
                                                    duration_percentile_95=percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)
                                                | render timechart with (xtitle = "time", ytitle= "response time(s)")
                                            EOT
                                          + SpecificChart = "Line"
                                        }
                                    }
                                  + type     = "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart"
                                }
                              + position = {
                                  + colSpan = 6
                                  + rowSpan = 4
                                  + x       = 12
                                  + y       = 24
                                }
                            }
                            # (15 unchanged attributes hidden)
                        }
                        # (1 unchanged attribute hidden)
                    }
                }
              ~ metadata = {
                  ~ model = {
                      ~ filters      = {
                          ~ value = {
                              ~ MsPortalFx_TimeRange = {
                                  ~ displayCache    = {
                                        name  = "Local Time"
                                      ~ value = "Past 12 hours" -> "Past 48 hours"
                                    }
                                  ~ filteredPartIds = [
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa22050",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa22052",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa2205e",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa22060",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa22062",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa22064",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa22066",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa22068",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa2206a",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa2206c",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa22054",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa22056",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa22058",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa2205a",
                                      - "StartboardPart-LogsDashboardPart-7a6b0133-1ea8-4667-8fca-575f6aa2205c",
                                      + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432ed",
                                      + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432ef",
                                      + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f1",
                                      + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f3",
                                      + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f5",
                                      + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f7",
                                      + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f9",
                                      + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432fb",
                                      + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432fd",
                                    ]
                                  ~ model           = {
                                      ~ relative    = "12h" -> "48h"
                                        # (2 unchanged attributes hidden)
                                    }
                                }
                            }
                        }
                        # (2 unchanged attributes hidden)
                    }
                }
            }
        )
        id                   = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/dashboards/providers/Microsoft.Portal/dashboards/io-p-opex_iobackend_api_service_app_backend"
        name                 = "io-p-opex_iobackend_api_service_app_backend"
      ~ tags                 = {
            "CostCenter"     = "TS310 - PAGAMENTI & SERVIZI"
            "CreatedBy"      = "Terraform"
            "Environment"    = "Prod"
            "ManagementTeam" = "IO Enti & Servizi"
            "Owner"          = "IO"
            "Source"         = "https://github.com/pagopa/io-backend"
          - "hidden-title"   = "io-p-opex_iobackend_api_service_app_backend" -> null
        }
        # (2 unchanged attributes hidden)
    }

Plan: 4 to add, 1 to change, 0 to destroy.

─────────────────────────────────────────────────────────────────────────────

Note: You didn't use the -out option to save this plan, so Terraform can't
guarantee to take exactly these actions if you run "terraform apply" now.

Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant