Skip to main content
Glama
ag2-mcp-servers

Cloud Monitoring API Server

models.py42.7 kB
# generated by fastapi-codegen: # filename: openapi.yaml # timestamp: 2025-06-29T02:27:44+00:00 from __future__ import annotations from enum import Enum from typing import Any, Dict, List, Optional from pydantic import BaseModel, Field class CrossSeriesReducer(Enum): REDUCE_NONE = 'REDUCE_NONE' REDUCE_MEAN = 'REDUCE_MEAN' REDUCE_MIN = 'REDUCE_MIN' REDUCE_MAX = 'REDUCE_MAX' REDUCE_SUM = 'REDUCE_SUM' REDUCE_STDDEV = 'REDUCE_STDDEV' REDUCE_COUNT = 'REDUCE_COUNT' REDUCE_COUNT_TRUE = 'REDUCE_COUNT_TRUE' REDUCE_COUNT_FALSE = 'REDUCE_COUNT_FALSE' REDUCE_FRACTION_TRUE = 'REDUCE_FRACTION_TRUE' REDUCE_PERCENTILE_99 = 'REDUCE_PERCENTILE_99' REDUCE_PERCENTILE_95 = 'REDUCE_PERCENTILE_95' REDUCE_PERCENTILE_50 = 'REDUCE_PERCENTILE_50' REDUCE_PERCENTILE_05 = 'REDUCE_PERCENTILE_05' class PerSeriesAligner(Enum): ALIGN_NONE = 'ALIGN_NONE' ALIGN_DELTA = 'ALIGN_DELTA' ALIGN_RATE = 'ALIGN_RATE' ALIGN_INTERPOLATE = 'ALIGN_INTERPOLATE' ALIGN_NEXT_OLDER = 'ALIGN_NEXT_OLDER' ALIGN_MIN = 'ALIGN_MIN' ALIGN_MAX = 'ALIGN_MAX' ALIGN_MEAN = 'ALIGN_MEAN' ALIGN_COUNT = 'ALIGN_COUNT' ALIGN_SUM = 'ALIGN_SUM' ALIGN_STDDEV = 'ALIGN_STDDEV' ALIGN_COUNT_TRUE = 'ALIGN_COUNT_TRUE' ALIGN_COUNT_FALSE = 'ALIGN_COUNT_FALSE' ALIGN_FRACTION_TRUE = 'ALIGN_FRACTION_TRUE' ALIGN_PERCENTILE_99 = 'ALIGN_PERCENTILE_99' ALIGN_PERCENTILE_95 = 'ALIGN_PERCENTILE_95' ALIGN_PERCENTILE_50 = 'ALIGN_PERCENTILE_50' ALIGN_PERCENTILE_05 = 'ALIGN_PERCENTILE_05' ALIGN_PERCENT_CHANGE = 'ALIGN_PERCENT_CHANGE' class Aggregation(BaseModel): alignmentPeriod: Optional[str] = Field( None, description='The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 2 years, or 104 weeks.', ) crossSeriesReducer: Optional[CrossSeriesReducer] = Field( None, description='The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned.', ) groupByFields: Optional[List[str]] = Field( None, description='The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored.', ) perSeriesAligner: Optional[PerSeriesAligner] = Field( None, description='An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned.', ) class AlertChart(BaseModel): name: Optional[str] = Field( None, description='Required. The resource name of the alert policy. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] ', ) class Scale(Enum): SCALE_UNSPECIFIED = 'SCALE_UNSPECIFIED' LINEAR = 'LINEAR' LOG10 = 'LOG10' class Axis(BaseModel): label: Optional[str] = Field(None, description='The label of the axis.') scale: Optional[Scale] = Field( None, description='The axis scale. By default, a linear scale is used.' ) class Mode(Enum): MODE_UNSPECIFIED = 'MODE_UNSPECIFIED' COLOR = 'COLOR' X_RAY = 'X_RAY' STATS = 'STATS' class ChartOptions(BaseModel): mode: Optional[Mode] = Field(None, description='The chart mode.') class CollapsibleGroup(BaseModel): collapsed: Optional[bool] = Field( None, description='The collapsed state of the widget on first page load.' ) class ColumnSettings(BaseModel): column: Optional[str] = Field(None, description='Required. The id of the column.') visible: Optional[bool] = Field( None, description='Required. Whether the column should be visible on page load.' ) class FilterType(Enum): FILTER_TYPE_UNSPECIFIED = 'FILTER_TYPE_UNSPECIFIED' RESOURCE_LABEL = 'RESOURCE_LABEL' METRIC_LABEL = 'METRIC_LABEL' USER_METADATA_LABEL = 'USER_METADATA_LABEL' SYSTEM_METADATA_LABEL = 'SYSTEM_METADATA_LABEL' GROUP = 'GROUP' class DashboardFilter(BaseModel): filterType: Optional[FilterType] = Field( None, description='The specified filter type' ) labelKey: Optional[str] = Field(None, description='Required. The key for the label') stringValue: Optional[str] = Field( None, description='A variable-length string value.' ) templateVariable: Optional[str] = Field( None, description='The placeholder text that can be referenced in a filter string or MQL query. If omitted, the dashboard filter will be applied to all relevant widgets in the dashboard.', ) class PlotType(Enum): PLOT_TYPE_UNSPECIFIED = 'PLOT_TYPE_UNSPECIFIED' LINE = 'LINE' STACKED_AREA = 'STACKED_AREA' STACKED_BAR = 'STACKED_BAR' HEATMAP = 'HEATMAP' class TargetAxis(Enum): TARGET_AXIS_UNSPECIFIED = 'TARGET_AXIS_UNSPECIFIED' Y1 = 'Y1' Y2 = 'Y2' class DroppedLabels(BaseModel): label: Optional[Dict[str, str]] = Field( None, description='Map from label to its value, for all labels dropped in any aggregation.', ) class Empty(BaseModel): pass class Cardinality(Enum): CARDINALITY_UNKNOWN = 'CARDINALITY_UNKNOWN' CARDINALITY_OPTIONAL = 'CARDINALITY_OPTIONAL' CARDINALITY_REQUIRED = 'CARDINALITY_REQUIRED' CARDINALITY_REPEATED = 'CARDINALITY_REPEATED' class Kind(Enum): TYPE_UNKNOWN = 'TYPE_UNKNOWN' TYPE_DOUBLE = 'TYPE_DOUBLE' TYPE_FLOAT = 'TYPE_FLOAT' TYPE_INT64 = 'TYPE_INT64' TYPE_UINT64 = 'TYPE_UINT64' TYPE_INT32 = 'TYPE_INT32' TYPE_FIXED64 = 'TYPE_FIXED64' TYPE_FIXED32 = 'TYPE_FIXED32' TYPE_BOOL = 'TYPE_BOOL' TYPE_STRING = 'TYPE_STRING' TYPE_GROUP = 'TYPE_GROUP' TYPE_MESSAGE = 'TYPE_MESSAGE' TYPE_BYTES = 'TYPE_BYTES' TYPE_UINT32 = 'TYPE_UINT32' TYPE_ENUM = 'TYPE_ENUM' TYPE_SFIXED32 = 'TYPE_SFIXED32' TYPE_SFIXED64 = 'TYPE_SFIXED64' TYPE_SINT32 = 'TYPE_SINT32' TYPE_SINT64 = 'TYPE_SINT64' class GaugeView(BaseModel): lowerBound: Optional[float] = Field( None, description='The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this.', ) upperBound: Optional[float] = Field( None, description='The upper bound for this gauge chart. The value of the chart should always be less than or equal to this.', ) class HttpBody(BaseModel): contentType: Optional[str] = Field( None, description='The HTTP Content-Type header value specifying the content type of the body.', ) data: Optional[str] = Field( None, description='The HTTP request/response body as raw binary.' ) extensions: Optional[List[Dict[str, Any]]] = Field( None, description='Application specific response metadata. Must be set in the first response for streaming APIs.', ) class ListLabelsRequest(BaseModel): end: Optional[str] = Field( None, description='The end time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.', ) match: Optional[str] = Field( None, description='A list of matchers encoded in the Prometheus label matcher format to constrain the values to series that satisfy them.', ) start: Optional[str] = Field( None, description='The start time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.', ) class LogsPanel(BaseModel): filter: Optional[str] = Field( None, description='A filter that chooses which log entries to return. See Advanced Logs Queries (https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries.', ) resourceNames: Optional[List[str]] = Field( None, description='The names of logging resources to collect logs for. Currently only projects are supported. If empty, the widget will default to the host project.', ) class MonitoredProject(BaseModel): createTime: Optional[str] = Field( None, description='Output only. The time when this MonitoredProject was created.', ) name: Optional[str] = Field( None, description='Immutable. The resource name of the MonitoredProject. On input, the resource name includes the scoping project ID and monitored project ID. On output, it contains the equivalent project numbers. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}/projects/{MONITORED_PROJECT_ID_OR_NUMBER}', ) class MonitoredResource(BaseModel): labels: Optional[Dict[str, str]] = Field( None, description='Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels "project_id", "instance_id", and "zone".', ) type: Optional[str] = Field( None, description='Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types (https://cloud.google.com/monitoring/api/resources) and Logging resource types (https://cloud.google.com/logging/docs/api/v2/resource-list).', ) class State(Enum): STATE_UNSPECIFIED = 'STATE_UNSPECIFIED' CREATED = 'CREATED' RUNNING = 'RUNNING' DONE = 'DONE' CANCELLED = 'CANCELLED' class OperationMetadata(BaseModel): createTime: Optional[str] = Field( None, description='The time when the batch request was received.' ) state: Optional[State] = Field( None, description='Current state of the batch operation.' ) updateTime: Optional[str] = Field( None, description='The time when the operation result was last updated.' ) class Option(BaseModel): name: Optional[str] = Field( None, description='The option\'s name. For protobuf built-in options (options defined in descriptor.proto), this is the short name. For example, "map_entry". For custom options, it should be the fully-qualified name. For example, "google.api.http".', ) value: Optional[Dict[str, Any]] = Field( None, description="The option's value packed in an Any message. If the value is a primitive, the corresponding wrapper type defined in google/protobuf/wrappers.proto should be used. If the value is an enum, it should be stored as an int32 value using the google.protobuf.Int32Value type.", ) class Direction(Enum): DIRECTION_UNSPECIFIED = 'DIRECTION_UNSPECIFIED' TOP = 'TOP' BOTTOM = 'BOTTOM' class RankingMethod(Enum): METHOD_UNSPECIFIED = 'METHOD_UNSPECIFIED' METHOD_MEAN = 'METHOD_MEAN' METHOD_MAX = 'METHOD_MAX' METHOD_MIN = 'METHOD_MIN' METHOD_SUM = 'METHOD_SUM' METHOD_LATEST = 'METHOD_LATEST' class PickTimeSeriesFilter(BaseModel): direction: Optional[Direction] = Field( None, description='How to use the ranking to select time series that pass through the filter.', ) numTimeSeries: Optional[int] = Field( None, description='How many time series to allow to pass through the filter.' ) rankingMethod: Optional[RankingMethod] = Field( None, description='ranking_method is applied to each time series independently to produce the value which will be used to compare the time series to other time series.', ) class QueryExemplarsRequest(BaseModel): end: Optional[str] = Field( None, description='The end time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.', ) query: Optional[str] = Field( None, description='A PromQL query string. Query lanauge documentation: https://prometheus.io/docs/prometheus/latest/querying/basics/.', ) start: Optional[str] = Field( None, description='The start time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.', ) class QueryInstantRequest(BaseModel): query: Optional[str] = Field( None, description='A PromQL query string. Query lanauge documentation: https://prometheus.io/docs/prometheus/latest/querying/basics/.', ) time: Optional[str] = Field( None, description='The single point in time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.', ) timeout: Optional[str] = Field( None, description='An upper bound timeout for the query. Either a Prometheus duration string (https://prometheus.io/docs/prometheus/latest/querying/basics/#time-durations) or floating point seconds. This non-standard encoding must be used for compatibility with the open source API. Clients may still implement timeouts at the connection level while ignoring this field.', ) class QueryRangeRequest(BaseModel): end: Optional[str] = Field( None, description='The end time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.', ) query: Optional[str] = Field( None, description='A PromQL query string. Query lanauge documentation: https://prometheus.io/docs/prometheus/latest/querying/basics/.', ) start: Optional[str] = Field( None, description='The start time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.', ) step: Optional[str] = Field( None, description='The resolution of query result. Either a Prometheus duration string (https://prometheus.io/docs/prometheus/latest/querying/basics/#time-durations) or floating point seconds. This non-standard encoding must be used for compatibility with the open source API. Clients may still implement timeouts at the connection level while ignoring this field.', ) timeout: Optional[str] = Field( None, description='An upper bound timeout for the query. Either a Prometheus duration string (https://prometheus.io/docs/prometheus/latest/querying/basics/#time-durations) or floating point seconds. This non-standard encoding must be used for compatibility with the open source API. Clients may still implement timeouts at the connection level while ignoring this field.', ) class QuerySeriesRequest(BaseModel): end: Optional[str] = Field( None, description='The end time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.', ) start: Optional[str] = Field( None, description='The start time to evaluate the query for. Either floating point UNIX seconds or RFC3339 formatted timestamp.', ) class RatioPart(BaseModel): aggregation: Optional[Aggregation] = Field( None, description='By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.', ) filter: Optional[str] = Field( None, description='Required. The monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.', ) class SourceContext(BaseModel): fileName: Optional[str] = Field( None, description='The path-qualified name of the .proto file that contained the associated protobuf element. For example: "google/protobuf/source_context.proto".', ) class SpanContext(BaseModel): spanName: Optional[str] = Field( None, description='The resource name of the span. The format is: projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID] [TRACE_ID] is a unique identifier for a trace within a project; it is a 32-character hexadecimal encoding of a 16-byte array.[SPAN_ID] is a unique identifier for a span within a trace; it is a 16-character hexadecimal encoding of an 8-byte array.', ) class SparkChartType(Enum): SPARK_CHART_TYPE_UNSPECIFIED = 'SPARK_CHART_TYPE_UNSPECIFIED' SPARK_LINE = 'SPARK_LINE' SPARK_BAR = 'SPARK_BAR' class SparkChartView(BaseModel): minAlignmentPeriod: Optional[str] = Field( None, description='The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint.', ) sparkChartType: Optional[SparkChartType] = Field( None, description='Required. The type of sparkchart to show in this chartView.' ) class RankingMethod1(Enum): METHOD_UNSPECIFIED = 'METHOD_UNSPECIFIED' METHOD_CLUSTER_OUTLIER = 'METHOD_CLUSTER_OUTLIER' class StatisticalTimeSeriesFilter(BaseModel): numTimeSeries: Optional[int] = Field( None, description='How many time series to output.' ) rankingMethod: Optional[RankingMethod1] = Field( None, description='rankingMethod is applied to a set of time series, and then the produced value for each individual time series is used to compare a given time series to others. These are methods that cannot be applied stream-by-stream, but rather require the full context of a request to evaluate time series.', ) class Status(BaseModel): code: Optional[int] = Field( None, description='The status code, which should be an enum value of google.rpc.Code.', ) details: Optional[List[Dict[str, Any]]] = Field( None, description='A list of messages that carry the error details. There is a common set of message types for APIs to use.', ) message: Optional[str] = Field( None, description='A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.', ) class TableDisplayOptions(BaseModel): shownColumns: Optional[List[str]] = Field( None, description='Optional. This field is unused and has been replaced by TimeSeriesTable.column_settings', ) class Format(Enum): FORMAT_UNSPECIFIED = 'FORMAT_UNSPECIFIED' MARKDOWN = 'MARKDOWN' RAW = 'RAW' class Text(BaseModel): content: Optional[str] = Field( None, description='The text content to be displayed.' ) format: Optional[Format] = Field( None, description='How the text content is formatted.' ) class Color(Enum): COLOR_UNSPECIFIED = 'COLOR_UNSPECIFIED' YELLOW = 'YELLOW' RED = 'RED' class Direction1(Enum): DIRECTION_UNSPECIFIED = 'DIRECTION_UNSPECIFIED' ABOVE = 'ABOVE' BELOW = 'BELOW' class Threshold(BaseModel): color: Optional[Color] = Field( None, description='The state color for this threshold. Color is not allowed in a XyChart.', ) direction: Optional[Direction1] = Field( None, description='The direction for the current threshold. Direction is not allowed in a XyChart.', ) label: Optional[str] = Field(None, description='A label for the threshold.') targetAxis: Optional[TargetAxis] = Field( None, description='The target axis to use for plotting the threshold. Target axis is not allowed in a Scorecard.', ) value: Optional[float] = Field( None, description='The value of the threshold. The value should be defined in the native scale of the metric.', ) class TimeSeriesFilter(BaseModel): aggregation: Optional[Aggregation] = Field( None, description='By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.', ) filter: Optional[str] = Field( None, description='Required. The monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.', ) pickTimeSeriesFilter: Optional[PickTimeSeriesFilter] = Field( None, description='Ranking based time series filter.' ) secondaryAggregation: Optional[Aggregation] = Field( None, description='Apply a second aggregation after aggregation is applied.' ) statisticalTimeSeriesFilter: Optional[StatisticalTimeSeriesFilter] = Field( None, description='Statistics based time series filter. Note: This field is deprecated and completely ignored by the API.', ) class TimeSeriesFilterRatio(BaseModel): denominator: Optional[RatioPart] = Field( None, description='The denominator of the ratio.' ) numerator: Optional[RatioPart] = Field( None, description='The numerator of the ratio.' ) pickTimeSeriesFilter: Optional[PickTimeSeriesFilter] = Field( None, description='Ranking based time series filter.' ) secondaryAggregation: Optional[Aggregation] = Field( None, description='Apply a second aggregation after the ratio is computed.' ) statisticalTimeSeriesFilter: Optional[StatisticalTimeSeriesFilter] = Field( None, description='Statistics based time series filter. Note: This field is deprecated and completely ignored by the API.', ) class TimeSeriesQuery(BaseModel): prometheusQuery: Optional[str] = Field( None, description='A query used to fetch time series with PromQL.' ) timeSeriesFilter: Optional[TimeSeriesFilter] = Field( None, description='Filter parameters to fetch time series.' ) timeSeriesFilterRatio: Optional[TimeSeriesFilterRatio] = Field( None, description='Parameters to fetch a ratio between two time series filters.' ) timeSeriesQueryLanguage: Optional[str] = Field( None, description='A query used to fetch time series with MQL.' ) unitOverride: Optional[str] = Field( None, description='The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the unit (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in MetricDescriptor.', ) class MetricVisualization(Enum): METRIC_VISUALIZATION_UNSPECIFIED = 'METRIC_VISUALIZATION_UNSPECIFIED' NUMBER = 'NUMBER' BAR = 'BAR' class Syntax(Enum): SYNTAX_PROTO2 = 'SYNTAX_PROTO2' SYNTAX_PROTO3 = 'SYNTAX_PROTO3' SYNTAX_EDITIONS = 'SYNTAX_EDITIONS' class FieldXgafv(Enum): field_1 = '1' field_2 = '2' class Alt(Enum): json = 'json' media = 'media' proto = 'proto' class DataSet(BaseModel): legendTemplate: Optional[str] = Field( None, description="A template string for naming TimeSeries in the resulting data set. This should be a string with interpolations of the form ${label_name}, which will resolve to the label's value.", ) minAlignmentPeriod: Optional[str] = Field( None, description='Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the min_alignment_period should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals.', ) plotType: Optional[PlotType] = Field( None, description='How this data should be plotted on the chart.' ) targetAxis: Optional[TargetAxis] = Field( None, description='Optional. The target axis to use for plotting the metric.' ) timeSeriesQuery: Optional[TimeSeriesQuery] = Field( None, description='Required. Fields for querying time series data from the Stackdriver metrics API.', ) class FieldModel(BaseModel): cardinality: Optional[Cardinality] = Field( None, description='The field cardinality.' ) defaultValue: Optional[str] = Field( None, description='The string value of the default value of this field. Proto2 syntax only.', ) jsonName: Optional[str] = Field(None, description='The field JSON name.') kind: Optional[Kind] = Field(None, description='The field type.') name: Optional[str] = Field(None, description='The field name.') number: Optional[int] = Field(None, description='The field number.') oneofIndex: Optional[int] = Field( None, description='The index of the field type in Type.oneofs, for message or enumeration types. The first type has index 1; zero means the type is not in the list.', ) options: Optional[List[Option]] = Field( None, description='The protocol buffer options.' ) packed: Optional[bool] = Field( None, description='Whether to use alternative packed wire representation.' ) typeUrl: Optional[str] = Field( None, description='The field type URL, without the scheme, for message or enumeration types. Example: "type.googleapis.com/google.protobuf.Timestamp".', ) class IncidentList(BaseModel): monitoredResources: Optional[List[MonitoredResource]] = Field( None, description="Optional. The monitored resource for which incidents are listed. The resource doesn't need to be fully specified. That is, you can specify the resource type but not the values of the resource labels. The resource type and labels are used for filtering.", ) policyNames: Optional[List[str]] = Field( None, description="Optional. A list of alert policy names to filter the incident list by. Don't include the project ID prefix in the policy name. For example, use alertPolicies/utilization.", ) class MetricsScope(BaseModel): createTime: Optional[str] = Field( None, description='Output only. The time when this Metrics Scope was created.' ) monitoredProjects: Optional[List[MonitoredProject]] = Field( None, description='Output only. The list of projects monitored by this Metrics Scope.', ) name: Optional[str] = Field( None, description='Immutable. The resource name of the Monitoring Metrics Scope. On input, the resource name can be specified with the scoping project ID or number. On output, the resource name is specified with the scoping project number. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}', ) updateTime: Optional[str] = Field( None, description='Output only. The time when this Metrics Scope record was last updated.', ) class Operation(BaseModel): done: Optional[bool] = Field( None, description='If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.', ) error: Optional[Status] = Field( None, description='The error result of the operation in case of failure or cancellation.', ) metadata: Optional[Dict[str, Any]] = Field( None, description='Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.', ) name: Optional[str] = Field( None, description='The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.', ) response: Optional[Dict[str, Any]] = Field( None, description='The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.', ) class Scorecard(BaseModel): gaugeView: Optional[GaugeView] = Field( None, description='Will cause the scorecard to show a gauge chart.' ) sparkChartView: Optional[SparkChartView] = Field( None, description='Will cause the scorecard to show a spark chart.' ) thresholds: Optional[List[Threshold]] = Field( None, description="The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.)As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', }, { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state.", ) timeSeriesQuery: Optional[TimeSeriesQuery] = Field( None, description='Required. Fields for querying time series data from the Stackdriver metrics API.', ) class TableDataSet(BaseModel): minAlignmentPeriod: Optional[str] = Field( None, description='Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the min_alignment_period should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals.', ) tableDisplayOptions: Optional[TableDisplayOptions] = Field( None, description='Optional. Table display options for configuring how the table is rendered.', ) tableTemplate: Optional[str] = Field( None, description='Optional. A template string for naming TimeSeries in the resulting data set. This should be a string with interpolations of the form ${label_name}, which will resolve to the label\'s value i.e. "${resource.labels.project_id}."', ) timeSeriesQuery: Optional[TimeSeriesQuery] = Field( None, description='Required. Fields for querying time series data from the Stackdriver metrics API.', ) class TimeSeriesTable(BaseModel): columnSettings: Optional[List[ColumnSettings]] = Field( None, description='Optional. The list of the persistent column settings for the table.', ) dataSets: Optional[List[TableDataSet]] = Field( None, description='Required. The data displayed in this table.' ) metricVisualization: Optional[MetricVisualization] = Field( None, description='Optional. Store rendering strategy' ) class Type(BaseModel): edition: Optional[str] = Field( None, description='The source edition string, only valid when syntax is SYNTAX_EDITIONS.', ) fields: Optional[List[FieldModel]] = Field(None, description='The list of fields.') name: Optional[str] = Field(None, description='The fully qualified message name.') oneofs: Optional[List[str]] = Field( None, description='The list of types appearing in oneof definitions in this type.', ) options: Optional[List[Option]] = Field( None, description='The protocol buffer options.' ) sourceContext: Optional[SourceContext] = Field( None, description='The source context.' ) syntax: Optional[Syntax] = Field(None, description='The source syntax.') class XyChart(BaseModel): chartOptions: Optional[ChartOptions] = Field( None, description='Display options for the chart.' ) dataSets: Optional[List[DataSet]] = Field( None, description='Required. The data displayed in this chart.' ) thresholds: Optional[List[Threshold]] = Field( None, description='Threshold lines drawn horizontally across the chart.' ) timeshiftDuration: Optional[str] = Field( None, description='The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type.', ) xAxis: Optional[Axis] = Field( None, description='The properties applied to the x-axis.' ) y2Axis: Optional[Axis] = Field( None, description='The properties applied to the y2-axis.' ) yAxis: Optional[Axis] = Field( None, description='The properties applied to the y-axis.' ) class ListMetricsScopesByMonitoredProjectResponse(BaseModel): metricsScopes: Optional[List[MetricsScope]] = Field( None, description='A set of all metrics scopes that the specified monitored project has been added to.', ) class Widget(BaseModel): alertChart: Optional[AlertChart] = Field( None, description='A chart of alert policy data.' ) blank: Optional[Empty] = Field(None, description='A blank space.') collapsibleGroup: Optional[CollapsibleGroup] = Field( None, description='A widget that groups the other widgets. All widgets that are within the area spanned by the grouping widget are considered member widgets.', ) incidentList: Optional[IncidentList] = Field( None, description='A widget that shows list of incidents.' ) logsPanel: Optional[LogsPanel] = Field( None, description='A widget that shows a stream of logs.' ) scorecard: Optional[Scorecard] = Field( None, description='A scorecard summarizing time series data.' ) text: Optional[Text] = Field( None, description='A raw string or markdown displaying textual content.' ) timeSeriesTable: Optional[TimeSeriesTable] = Field( None, description='A widget that displays time series data in a tabular format.' ) title: Optional[str] = Field(None, description='Optional. The title of the widget.') xyChart: Optional[XyChart] = Field(None, description='A chart of time series data.') class Column(BaseModel): weight: Optional[str] = Field( None, description='The relative weight of this column. The column weight is used to adjust the width of columns on the screen (relative to peers). Greater the weight, greater the width of the column on the screen. If omitted, a value of 1 is used while rendering.', ) widgets: Optional[List[Widget]] = Field( None, description='The display widgets arranged vertically in this column.' ) class ColumnLayout(BaseModel): columns: Optional[List[Column]] = Field( None, description='The columns of content to display.' ) class GridLayout(BaseModel): columns: Optional[str] = Field( None, description="The number of columns into which the view's width is divided. If omitted or set to zero, a system default will be used while rendering.", ) widgets: Optional[List[Widget]] = Field( None, description='The informational elements that are arranged into the columns row-first.', ) class Row(BaseModel): weight: Optional[str] = Field( None, description='The relative weight of this row. The row weight is used to adjust the height of rows on the screen (relative to peers). Greater the weight, greater the height of the row on the screen. If omitted, a value of 1 is used while rendering.', ) widgets: Optional[List[Widget]] = Field( None, description='The display widgets arranged horizontally in this row.' ) class RowLayout(BaseModel): rows: Optional[List[Row]] = Field( None, description='The rows of content to display.' ) class Tile(BaseModel): height: Optional[int] = Field( None, description='The height of the tile, measured in grid blocks. Tiles must have a minimum height of 1.', ) widget: Optional[Widget] = Field( None, description='The informational widget contained in the tile. For example an XyChart.', ) width: Optional[int] = Field( None, description='The width of the tile, measured in grid blocks. Tiles must have a minimum width of 1.', ) xPos: Optional[int] = Field( None, description='The zero-indexed position of the tile in grid blocks relative to the left edge of the grid. Tiles must be contained within the specified number of columns. x_pos cannot be negative.', ) yPos: Optional[int] = Field( None, description='The zero-indexed position of the tile in grid blocks relative to the top edge of the grid. y_pos cannot be negative.', ) class MosaicLayout(BaseModel): columns: Optional[int] = Field( None, description='The number of columns in the mosaic grid. The number of columns must be between 1 and 12, inclusive.', ) tiles: Optional[List[Tile]] = Field(None, description='The tiles to display.') class Dashboard(BaseModel): columnLayout: Optional[ColumnLayout] = Field( None, description='The content is divided into equally spaced columns and the widgets are arranged vertically.', ) dashboardFilters: Optional[List[DashboardFilter]] = Field( None, description='Filters to reduce the amount of data charted based on the filter criteria.', ) displayName: Optional[str] = Field( None, description='Required. The mutable, human-readable name.' ) etag: Optional[str] = Field( None, description='etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. An etag is returned in the response to GetDashboard, and users are expected to put that etag in the request to UpdateDashboard to ensure that their change will be applied to the same version of the Dashboard configuration. The field should not be passed during dashboard creation.', ) gridLayout: Optional[GridLayout] = Field( None, description='Content is arranged with a basic layout that re-flows a simple list of informational elements like widgets or tiles.', ) labels: Optional[Dict[str, str]] = Field( None, description='Labels applied to the dashboard' ) mosaicLayout: Optional[MosaicLayout] = Field( None, description='The content is arranged as a grid of tiles, with each content widget occupying one or more grid blocks.', ) name: Optional[str] = Field( None, description='Immutable. The resource name of the dashboard.' ) rowLayout: Optional[RowLayout] = Field( None, description='The content is divided into equally spaced rows and the widgets are arranged horizontally.', ) class ListDashboardsResponse(BaseModel): dashboards: Optional[List[Dashboard]] = Field( None, description='The list of requested dashboards.' ) nextPageToken: Optional[str] = Field( None, description='If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.', )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ag2-mcp-servers/cloud-monitoring-api'

If you have feedback or need assistance with the MCP directory API, please join our Discord server