mirror of
https://github.com/octoleo/restic.git
synced 2024-11-15 17:47:21 +00:00
512 lines
21 KiB
Go
Executable File
512 lines
21 KiB
Go
Executable File
package insights
|
|
|
|
// Copyright (c) Microsoft and contributors. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
//
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
// Code generated by Microsoft (R) AutoRest Code Generator 1.0.1.0
|
|
// Changes may cause incorrect behavior and will be lost if the code is
|
|
// regenerated.
|
|
|
|
import (
|
|
"github.com/Azure/go-autorest/autorest"
|
|
"github.com/Azure/go-autorest/autorest/date"
|
|
"github.com/Azure/go-autorest/autorest/to"
|
|
"net/http"
|
|
)
|
|
|
|
// ComparisonOperationType enumerates the values for comparison operation type.
|
|
type ComparisonOperationType string
|
|
|
|
const (
|
|
// Equals specifies the equals state for comparison operation type.
|
|
Equals ComparisonOperationType = "Equals"
|
|
// GreaterThan specifies the greater than state for comparison operation
|
|
// type.
|
|
GreaterThan ComparisonOperationType = "GreaterThan"
|
|
// GreaterThanOrEqual specifies the greater than or equal state for
|
|
// comparison operation type.
|
|
GreaterThanOrEqual ComparisonOperationType = "GreaterThanOrEqual"
|
|
// LessThan specifies the less than state for comparison operation type.
|
|
LessThan ComparisonOperationType = "LessThan"
|
|
// LessThanOrEqual specifies the less than or equal state for comparison
|
|
// operation type.
|
|
LessThanOrEqual ComparisonOperationType = "LessThanOrEqual"
|
|
// NotEquals specifies the not equals state for comparison operation type.
|
|
NotEquals ComparisonOperationType = "NotEquals"
|
|
)
|
|
|
|
// ConditionOperator enumerates the values for condition operator.
|
|
type ConditionOperator string
|
|
|
|
const (
|
|
// ConditionOperatorGreaterThan specifies the condition operator greater
|
|
// than state for condition operator.
|
|
ConditionOperatorGreaterThan ConditionOperator = "GreaterThan"
|
|
// ConditionOperatorGreaterThanOrEqual specifies the condition operator
|
|
// greater than or equal state for condition operator.
|
|
ConditionOperatorGreaterThanOrEqual ConditionOperator = "GreaterThanOrEqual"
|
|
// ConditionOperatorLessThan specifies the condition operator less than
|
|
// state for condition operator.
|
|
ConditionOperatorLessThan ConditionOperator = "LessThan"
|
|
// ConditionOperatorLessThanOrEqual specifies the condition operator less
|
|
// than or equal state for condition operator.
|
|
ConditionOperatorLessThanOrEqual ConditionOperator = "LessThanOrEqual"
|
|
)
|
|
|
|
// MetricStatisticType enumerates the values for metric statistic type.
|
|
type MetricStatisticType string
|
|
|
|
const (
|
|
// Average specifies the average state for metric statistic type.
|
|
Average MetricStatisticType = "Average"
|
|
// Max specifies the max state for metric statistic type.
|
|
Max MetricStatisticType = "Max"
|
|
// Min specifies the min state for metric statistic type.
|
|
Min MetricStatisticType = "Min"
|
|
// Sum specifies the sum state for metric statistic type.
|
|
Sum MetricStatisticType = "Sum"
|
|
)
|
|
|
|
// RecurrenceFrequency enumerates the values for recurrence frequency.
|
|
type RecurrenceFrequency string
|
|
|
|
const (
|
|
// Day specifies the day state for recurrence frequency.
|
|
Day RecurrenceFrequency = "Day"
|
|
// Hour specifies the hour state for recurrence frequency.
|
|
Hour RecurrenceFrequency = "Hour"
|
|
// Minute specifies the minute state for recurrence frequency.
|
|
Minute RecurrenceFrequency = "Minute"
|
|
// Month specifies the month state for recurrence frequency.
|
|
Month RecurrenceFrequency = "Month"
|
|
// None specifies the none state for recurrence frequency.
|
|
None RecurrenceFrequency = "None"
|
|
// Second specifies the second state for recurrence frequency.
|
|
Second RecurrenceFrequency = "Second"
|
|
// Week specifies the week state for recurrence frequency.
|
|
Week RecurrenceFrequency = "Week"
|
|
// Year specifies the year state for recurrence frequency.
|
|
Year RecurrenceFrequency = "Year"
|
|
)
|
|
|
|
// ScaleDirection enumerates the values for scale direction.
|
|
type ScaleDirection string
|
|
|
|
const (
|
|
// ScaleDirectionDecrease specifies the scale direction decrease state for
|
|
// scale direction.
|
|
ScaleDirectionDecrease ScaleDirection = "Decrease"
|
|
// ScaleDirectionIncrease specifies the scale direction increase state for
|
|
// scale direction.
|
|
ScaleDirectionIncrease ScaleDirection = "Increase"
|
|
// ScaleDirectionNone specifies the scale direction none state for scale
|
|
// direction.
|
|
ScaleDirectionNone ScaleDirection = "None"
|
|
)
|
|
|
|
// ScaleType enumerates the values for scale type.
|
|
type ScaleType string
|
|
|
|
const (
|
|
// ChangeCount specifies the change count state for scale type.
|
|
ChangeCount ScaleType = "ChangeCount"
|
|
// ExactCount specifies the exact count state for scale type.
|
|
ExactCount ScaleType = "ExactCount"
|
|
// PercentChangeCount specifies the percent change count state for scale
|
|
// type.
|
|
PercentChangeCount ScaleType = "PercentChangeCount"
|
|
)
|
|
|
|
// TimeAggregationOperator enumerates the values for time aggregation operator.
|
|
type TimeAggregationOperator string
|
|
|
|
const (
|
|
// TimeAggregationOperatorAverage specifies the time aggregation operator
|
|
// average state for time aggregation operator.
|
|
TimeAggregationOperatorAverage TimeAggregationOperator = "Average"
|
|
// TimeAggregationOperatorLast specifies the time aggregation operator last
|
|
// state for time aggregation operator.
|
|
TimeAggregationOperatorLast TimeAggregationOperator = "Last"
|
|
// TimeAggregationOperatorMaximum specifies the time aggregation operator
|
|
// maximum state for time aggregation operator.
|
|
TimeAggregationOperatorMaximum TimeAggregationOperator = "Maximum"
|
|
// TimeAggregationOperatorMinimum specifies the time aggregation operator
|
|
// minimum state for time aggregation operator.
|
|
TimeAggregationOperatorMinimum TimeAggregationOperator = "Minimum"
|
|
// TimeAggregationOperatorTotal specifies the time aggregation operator
|
|
// total state for time aggregation operator.
|
|
TimeAggregationOperatorTotal TimeAggregationOperator = "Total"
|
|
)
|
|
|
|
// TimeAggregationType enumerates the values for time aggregation type.
|
|
type TimeAggregationType string
|
|
|
|
const (
|
|
// TimeAggregationTypeAverage specifies the time aggregation type average
|
|
// state for time aggregation type.
|
|
TimeAggregationTypeAverage TimeAggregationType = "Average"
|
|
// TimeAggregationTypeCount specifies the time aggregation type count state
|
|
// for time aggregation type.
|
|
TimeAggregationTypeCount TimeAggregationType = "Count"
|
|
// TimeAggregationTypeMaximum specifies the time aggregation type maximum
|
|
// state for time aggregation type.
|
|
TimeAggregationTypeMaximum TimeAggregationType = "Maximum"
|
|
// TimeAggregationTypeMinimum specifies the time aggregation type minimum
|
|
// state for time aggregation type.
|
|
TimeAggregationTypeMinimum TimeAggregationType = "Minimum"
|
|
// TimeAggregationTypeTotal specifies the time aggregation type total state
|
|
// for time aggregation type.
|
|
TimeAggregationTypeTotal TimeAggregationType = "Total"
|
|
)
|
|
|
|
// AlertRule is an alert rule.
|
|
type AlertRule struct {
|
|
Name *string `json:"name,omitempty"`
|
|
Description *string `json:"description,omitempty"`
|
|
IsEnabled *bool `json:"isEnabled,omitempty"`
|
|
Condition *RuleCondition `json:"condition,omitempty"`
|
|
Actions *[]RuleAction `json:"actions,omitempty"`
|
|
LastUpdatedTime *date.Time `json:"lastUpdatedTime,omitempty"`
|
|
}
|
|
|
|
// AlertRuleResource is the alert rule resource.
|
|
type AlertRuleResource struct {
|
|
autorest.Response `json:"-"`
|
|
ID *string `json:"id,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
Type *string `json:"type,omitempty"`
|
|
Location *string `json:"location,omitempty"`
|
|
Tags *map[string]*string `json:"tags,omitempty"`
|
|
*AlertRule `json:"properties,omitempty"`
|
|
}
|
|
|
|
// AlertRuleResourceCollection is represents a collection of alert rule
|
|
// resources.
|
|
type AlertRuleResourceCollection struct {
|
|
autorest.Response `json:"-"`
|
|
Value *[]AlertRuleResource `json:"value,omitempty"`
|
|
}
|
|
|
|
// AutoscaleNotification is autoscale notification.
|
|
type AutoscaleNotification struct {
|
|
Operation *string `json:"operation,omitempty"`
|
|
Email *EmailNotification `json:"email,omitempty"`
|
|
Webhooks *[]WebhookNotification `json:"webhooks,omitempty"`
|
|
}
|
|
|
|
// AutoscaleProfile is autoscale profile.
|
|
type AutoscaleProfile struct {
|
|
Name *string `json:"name,omitempty"`
|
|
Capacity *ScaleCapacity `json:"capacity,omitempty"`
|
|
Rules *[]ScaleRule `json:"rules,omitempty"`
|
|
FixedDate *TimeWindow `json:"fixedDate,omitempty"`
|
|
Recurrence *Recurrence `json:"recurrence,omitempty"`
|
|
}
|
|
|
|
// AutoscaleSetting is a setting that contains all of the configuration for the
|
|
// automatic scaling of a resource.
|
|
type AutoscaleSetting struct {
|
|
Profiles *[]AutoscaleProfile `json:"profiles,omitempty"`
|
|
Notifications *[]AutoscaleNotification `json:"notifications,omitempty"`
|
|
Enabled *bool `json:"enabled,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
TargetResourceURI *string `json:"targetResourceUri,omitempty"`
|
|
}
|
|
|
|
// AutoscaleSettingResource is the autoscale setting resource.
|
|
type AutoscaleSettingResource struct {
|
|
autorest.Response `json:"-"`
|
|
ID *string `json:"id,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
Type *string `json:"type,omitempty"`
|
|
Location *string `json:"location,omitempty"`
|
|
Tags *map[string]*string `json:"tags,omitempty"`
|
|
*AutoscaleSetting `json:"properties,omitempty"`
|
|
}
|
|
|
|
// AutoscaleSettingResourceCollection is represents a collection of autoscale
|
|
// setting resources.
|
|
type AutoscaleSettingResourceCollection struct {
|
|
autorest.Response `json:"-"`
|
|
Value *[]AutoscaleSettingResource `json:"value,omitempty"`
|
|
NextLink *string `json:"nextLink,omitempty"`
|
|
}
|
|
|
|
// AutoscaleSettingResourceCollectionPreparer prepares a request to retrieve the next set of results. It returns
|
|
// nil if no more results exist.
|
|
func (client AutoscaleSettingResourceCollection) AutoscaleSettingResourceCollectionPreparer() (*http.Request, error) {
|
|
if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 {
|
|
return nil, nil
|
|
}
|
|
return autorest.Prepare(&http.Request{},
|
|
autorest.AsJSON(),
|
|
autorest.AsGet(),
|
|
autorest.WithBaseURL(to.String(client.NextLink)))
|
|
}
|
|
|
|
// EmailNotification is email notification of an autoscale event.
|
|
type EmailNotification struct {
|
|
SendToSubscriptionAdministrator *bool `json:"sendToSubscriptionAdministrator,omitempty"`
|
|
SendToSubscriptionCoAdministrators *bool `json:"sendToSubscriptionCoAdministrators,omitempty"`
|
|
CustomEmails *[]string `json:"customEmails,omitempty"`
|
|
}
|
|
|
|
// Incident is an alert incident indicates the activation status of an alert
|
|
// rule.
|
|
type Incident struct {
|
|
autorest.Response `json:"-"`
|
|
Name *string `json:"name,omitempty"`
|
|
RuleName *string `json:"ruleName,omitempty"`
|
|
IsActive *bool `json:"isActive,omitempty"`
|
|
ActivatedTime *date.Time `json:"activatedTime,omitempty"`
|
|
ResolvedTime *date.Time `json:"resolvedTime,omitempty"`
|
|
}
|
|
|
|
// IncidentListResult is the List incidents operation response.
|
|
type IncidentListResult struct {
|
|
autorest.Response `json:"-"`
|
|
Value *[]Incident `json:"value,omitempty"`
|
|
}
|
|
|
|
// LocationThresholdRuleCondition is a rule condition based on a certain number
|
|
// of locations failing.
|
|
type LocationThresholdRuleCondition struct {
|
|
DataSource *RuleDataSource `json:"dataSource,omitempty"`
|
|
WindowSize *string `json:"windowSize,omitempty"`
|
|
FailedLocationCount *int32 `json:"failedLocationCount,omitempty"`
|
|
}
|
|
|
|
// LogProfileCollection is represents a collection of log profiles.
|
|
type LogProfileCollection struct {
|
|
autorest.Response `json:"-"`
|
|
Value *[]LogProfileResource `json:"value,omitempty"`
|
|
}
|
|
|
|
// LogProfileProperties is the log profile properties.
|
|
type LogProfileProperties struct {
|
|
StorageAccountID *string `json:"storageAccountId,omitempty"`
|
|
ServiceBusRuleID *string `json:"serviceBusRuleId,omitempty"`
|
|
Locations *[]string `json:"locations,omitempty"`
|
|
Categories *[]string `json:"categories,omitempty"`
|
|
RetentionPolicy *RetentionPolicy `json:"retentionPolicy,omitempty"`
|
|
}
|
|
|
|
// LogProfileResource is the log profile resource.
|
|
type LogProfileResource struct {
|
|
autorest.Response `json:"-"`
|
|
ID *string `json:"id,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
Type *string `json:"type,omitempty"`
|
|
Location *string `json:"location,omitempty"`
|
|
Tags *map[string]*string `json:"tags,omitempty"`
|
|
*LogProfileProperties `json:"properties,omitempty"`
|
|
}
|
|
|
|
// LogSettings is part of MultiTenantDiagnosticSettings. Specifies the settings
|
|
// for a particular log.
|
|
type LogSettings struct {
|
|
Category *string `json:"category,omitempty"`
|
|
Enabled *bool `json:"enabled,omitempty"`
|
|
RetentionPolicy *RetentionPolicy `json:"retentionPolicy,omitempty"`
|
|
}
|
|
|
|
// ManagementEventAggregationCondition is how the data that is collected should
|
|
// be combined over time.
|
|
type ManagementEventAggregationCondition struct {
|
|
Operator ConditionOperator `json:"operator,omitempty"`
|
|
Threshold *float64 `json:"threshold,omitempty"`
|
|
WindowSize *string `json:"windowSize,omitempty"`
|
|
}
|
|
|
|
// ManagementEventRuleCondition is a management event rule condition.
|
|
type ManagementEventRuleCondition struct {
|
|
DataSource *RuleDataSource `json:"dataSource,omitempty"`
|
|
Aggregation *ManagementEventAggregationCondition `json:"aggregation,omitempty"`
|
|
}
|
|
|
|
// MetricSettings is part of MultiTenantDiagnosticSettings. Specifies the
|
|
// settings for a particular metric.
|
|
type MetricSettings struct {
|
|
TimeGrain *string `json:"timeGrain,omitempty"`
|
|
Enabled *bool `json:"enabled,omitempty"`
|
|
RetentionPolicy *RetentionPolicy `json:"retentionPolicy,omitempty"`
|
|
}
|
|
|
|
// MetricTrigger is the trigger that results in a scaling action.
|
|
type MetricTrigger struct {
|
|
MetricName *string `json:"metricName,omitempty"`
|
|
MetricResourceURI *string `json:"metricResourceUri,omitempty"`
|
|
TimeGrain *string `json:"timeGrain,omitempty"`
|
|
Statistic MetricStatisticType `json:"statistic,omitempty"`
|
|
TimeWindow *string `json:"timeWindow,omitempty"`
|
|
TimeAggregation TimeAggregationType `json:"timeAggregation,omitempty"`
|
|
Operator ComparisonOperationType `json:"operator,omitempty"`
|
|
Threshold *float64 `json:"threshold,omitempty"`
|
|
}
|
|
|
|
// Recurrence is the repeating times at which this profile begins. This element
|
|
// is not used if the FixedDate element is used.
|
|
type Recurrence struct {
|
|
Frequency RecurrenceFrequency `json:"frequency,omitempty"`
|
|
Schedule *RecurrentSchedule `json:"schedule,omitempty"`
|
|
}
|
|
|
|
// RecurrentSchedule is the scheduling constraints for when the profile begins.
|
|
type RecurrentSchedule struct {
|
|
TimeZone *string `json:"timeZone,omitempty"`
|
|
Days *[]string `json:"days,omitempty"`
|
|
Hours *[]int32 `json:"hours,omitempty"`
|
|
Minutes *[]int32 `json:"minutes,omitempty"`
|
|
}
|
|
|
|
// Resource is an azure resource object
|
|
type Resource struct {
|
|
ID *string `json:"id,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
Type *string `json:"type,omitempty"`
|
|
Location *string `json:"location,omitempty"`
|
|
Tags *map[string]*string `json:"tags,omitempty"`
|
|
}
|
|
|
|
// RetentionPolicy is specifies the retention policy for the log.
|
|
type RetentionPolicy struct {
|
|
Enabled *bool `json:"enabled,omitempty"`
|
|
Days *int32 `json:"days,omitempty"`
|
|
}
|
|
|
|
// RuleAction is the action that is performed when the alert rule becomes
|
|
// active, and when an alert condition is resolved.
|
|
type RuleAction struct {
|
|
}
|
|
|
|
// RuleCondition is the condition that results in the alert rule being
|
|
// activated.
|
|
type RuleCondition struct {
|
|
}
|
|
|
|
// RuleDataSource is the resource from which the rule collects its data.
|
|
type RuleDataSource struct {
|
|
}
|
|
|
|
// RuleEmailAction is specifies the action to send email when the rule
|
|
// condition is evaluated. The discriminator is always RuleEmailAction in this
|
|
// case.
|
|
type RuleEmailAction struct {
|
|
SendToServiceOwners *bool `json:"sendToServiceOwners,omitempty"`
|
|
CustomEmails *[]string `json:"customEmails,omitempty"`
|
|
}
|
|
|
|
// RuleManagementEventClaimsDataSource is the claims for a rule management
|
|
// event data source.
|
|
type RuleManagementEventClaimsDataSource struct {
|
|
EmailAddress *string `json:"emailAddress,omitempty"`
|
|
}
|
|
|
|
// RuleManagementEventDataSource is a rule management event data source. The
|
|
// discriminator fields is always RuleManagementEventDataSource in this case.
|
|
type RuleManagementEventDataSource struct {
|
|
EventName *string `json:"eventName,omitempty"`
|
|
EventSource *string `json:"eventSource,omitempty"`
|
|
Level *string `json:"level,omitempty"`
|
|
OperationName *string `json:"operationName,omitempty"`
|
|
ResourceGroupName *string `json:"resourceGroupName,omitempty"`
|
|
ResourceProviderName *string `json:"resourceProviderName,omitempty"`
|
|
ResourceURI *string `json:"resourceUri,omitempty"`
|
|
Status *string `json:"status,omitempty"`
|
|
SubStatus *string `json:"subStatus,omitempty"`
|
|
Claims *RuleManagementEventClaimsDataSource `json:"claims,omitempty"`
|
|
}
|
|
|
|
// RuleMetricDataSource is a rule metric data source. The discriminator value
|
|
// is always RuleMetricDataSource in this case.
|
|
type RuleMetricDataSource struct {
|
|
ResourceURI *string `json:"resourceUri,omitempty"`
|
|
MetricName *string `json:"metricName,omitempty"`
|
|
}
|
|
|
|
// RuleWebhookAction is specifies the action to post to service when the rule
|
|
// condition is evaluated. The discriminator is always RuleWebhookAction in
|
|
// this case.
|
|
type RuleWebhookAction struct {
|
|
ServiceURI *string `json:"serviceUri,omitempty"`
|
|
Properties *map[string]*string `json:"properties,omitempty"`
|
|
}
|
|
|
|
// ScaleAction is the parameters for the scaling action.
|
|
type ScaleAction struct {
|
|
Direction ScaleDirection `json:"direction,omitempty"`
|
|
Type ScaleType `json:"type,omitempty"`
|
|
Value *string `json:"value,omitempty"`
|
|
Cooldown *string `json:"cooldown,omitempty"`
|
|
}
|
|
|
|
// ScaleCapacity is the number of instances that can be used during this
|
|
// profile.
|
|
type ScaleCapacity struct {
|
|
Minimum *string `json:"minimum,omitempty"`
|
|
Maximum *string `json:"maximum,omitempty"`
|
|
Default *string `json:"default,omitempty"`
|
|
}
|
|
|
|
// ScaleRule is a rule that provide the triggers and parameters for the scaling
|
|
// action.
|
|
type ScaleRule struct {
|
|
MetricTrigger *MetricTrigger `json:"metricTrigger,omitempty"`
|
|
ScaleAction *ScaleAction `json:"scaleAction,omitempty"`
|
|
}
|
|
|
|
// ServiceDiagnosticSettings is the diagnostic settings for service.
|
|
type ServiceDiagnosticSettings struct {
|
|
StorageAccountID *string `json:"storageAccountId,omitempty"`
|
|
ServiceBusRuleID *string `json:"serviceBusRuleId,omitempty"`
|
|
Metrics *[]MetricSettings `json:"metrics,omitempty"`
|
|
Logs *[]LogSettings `json:"logs,omitempty"`
|
|
WorkspaceID *string `json:"workspaceId,omitempty"`
|
|
}
|
|
|
|
// ServiceDiagnosticSettingsResource is description of a service diagnostic
|
|
// setting
|
|
type ServiceDiagnosticSettingsResource struct {
|
|
autorest.Response `json:"-"`
|
|
ID *string `json:"id,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
Type *string `json:"type,omitempty"`
|
|
Location *string `json:"location,omitempty"`
|
|
Tags *map[string]*string `json:"tags,omitempty"`
|
|
*ServiceDiagnosticSettings `json:"properties,omitempty"`
|
|
}
|
|
|
|
// ThresholdRuleCondition is a rule condition based on a metric crossing a
|
|
// threshold.
|
|
type ThresholdRuleCondition struct {
|
|
DataSource *RuleDataSource `json:"dataSource,omitempty"`
|
|
Operator ConditionOperator `json:"operator,omitempty"`
|
|
Threshold *float64 `json:"threshold,omitempty"`
|
|
WindowSize *string `json:"windowSize,omitempty"`
|
|
TimeAggregation TimeAggregationOperator `json:"timeAggregation,omitempty"`
|
|
}
|
|
|
|
// TimeWindow is a specific date-time for the profile.
|
|
type TimeWindow struct {
|
|
TimeZone *string `json:"timeZone,omitempty"`
|
|
Start *date.Time `json:"start,omitempty"`
|
|
End *date.Time `json:"end,omitempty"`
|
|
}
|
|
|
|
// WebhookNotification is webhook notification of an autoscale event.
|
|
type WebhookNotification struct {
|
|
ServiceURI *string `json:"serviceUri,omitempty"`
|
|
Properties *map[string]*string `json:"properties,omitempty"`
|
|
}
|