From ea90eb62da6aa07c4eb7c939733d6312353c6a4d Mon Sep 17 00:00:00 2001 From: Krisztian Gacsal Date: Wed, 17 Jul 2024 13:52:10 +0200 Subject: [PATCH] feat: add Notifications API spec --- api/api.gen.go | 2194 +++++++-- api/client/go/client.gen.go | 5835 +++++++++++++++++------- api/openapi.yaml | 836 +++- internal/server/router/notification.go | 79 + 4 files changed, 6896 insertions(+), 2048 deletions(-) create mode 100644 internal/server/router/notification.go diff --git a/api/api.gen.go b/api/api.gen.go index 5f70701ca..a529a6993 100644 --- a/api/api.gen.go +++ b/api/api.gen.go @@ -70,6 +70,29 @@ const ( ExpirationPeriodDurationYEAR ExpirationPeriodDuration = "YEAR" ) +// Defines values for NotificationChannelType. +const ( + WEBHOOK NotificationChannelType = "WEBHOOK" +) + +// Defines values for NotificationEventDeliveryStatusState. +const ( + FAILED NotificationEventDeliveryStatusState = "FAILED" + SENDING NotificationEventDeliveryStatusState = "SENDING" + SUCCESS NotificationEventDeliveryStatusState = "SUCCESS" +) + +// Defines values for NotificationRuleBalanceThresholdValueType. +const ( + NUMBER NotificationRuleBalanceThresholdValueType = "NUMBER" + PERCENT NotificationRuleBalanceThresholdValueType = "PERCENT" +) + +// Defines values for NotificationRuleType. +const ( + EntitlementsBalanceThreshold NotificationRuleType = "entitlements.balance.threshold" +) + // Defines values for RecurringPeriodEnum. const ( RecurringPeriodEnumDAY RecurringPeriodEnum = "DAY" @@ -98,11 +121,33 @@ const ( ListGrantsParamsOrderByUpdatedAt ListGrantsParamsOrderBy = "updatedAt" ) +// Defines values for ListNotificationChannelsParamsOrderBy. +const ( + ListNotificationChannelsParamsOrderByCreatedAt ListNotificationChannelsParamsOrderBy = "createdAt" + ListNotificationChannelsParamsOrderById ListNotificationChannelsParamsOrderBy = "id" + ListNotificationChannelsParamsOrderByType ListNotificationChannelsParamsOrderBy = "type" + ListNotificationChannelsParamsOrderByUpdatedAt ListNotificationChannelsParamsOrderBy = "updatedAt" +) + +// Defines values for ListNotificationEventsParamsOrderBy. +const ( + ListNotificationEventsParamsOrderByCreatedAt ListNotificationEventsParamsOrderBy = "createdAt" + ListNotificationEventsParamsOrderById ListNotificationEventsParamsOrderBy = "id" +) + +// Defines values for ListNotificationRulesParamsOrderBy. +const ( + ListNotificationRulesParamsOrderByCreatedAt ListNotificationRulesParamsOrderBy = "createdAt" + ListNotificationRulesParamsOrderById ListNotificationRulesParamsOrderBy = "id" + ListNotificationRulesParamsOrderByType ListNotificationRulesParamsOrderBy = "type" + ListNotificationRulesParamsOrderByUpdatedAt ListNotificationRulesParamsOrderBy = "updatedAt" +) + // Defines values for ListEntitlementGrantsParamsOrderBy. const ( - ListEntitlementGrantsParamsOrderByCreatedAt ListEntitlementGrantsParamsOrderBy = "createdAt" - ListEntitlementGrantsParamsOrderById ListEntitlementGrantsParamsOrderBy = "id" - ListEntitlementGrantsParamsOrderByUpdatedAt ListEntitlementGrantsParamsOrderBy = "updatedAt" + CreatedAt ListEntitlementGrantsParamsOrderBy = "createdAt" + Id ListEntitlementGrantsParamsOrderBy = "id" + UpdatedAt ListEntitlementGrantsParamsOrderBy = "updatedAt" ) // Defines values for GetEntitlementHistoryParamsWindowSize. @@ -616,6 +661,78 @@ type FeatureCreateInputs struct { Name string `json:"name"` } +// GenericNotificationChannel defines model for GenericNotificationChannel. +type GenericNotificationChannel struct { + // CreatedAt Timestamp when the channel was created. + CreatedAt *time.Time `json:"createdAt,omitempty"` + + // Disabled Whether the channel is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Id A unique identifier for the notification channel. + Id string `json:"id"` + + // Name User friendly name of the channel. + Name *string `json:"name,omitempty"` + + // Type The type of the notification channel. + Type NotificationChannelType `json:"type"` + + // UpdatedAt Timestamp when the channel was modified. + UpdatedAt *time.Time `json:"updatedAt,omitempty"` +} + +// GenericNotificationChannelCreateRequest defines model for GenericNotificationChannelCreateRequest. +type GenericNotificationChannelCreateRequest struct { + // Disabled Whether the channel is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Name User friendly name of the channel. + Name string `json:"name"` + + // Type The type of the notification channel. + Type NotificationChannelType `json:"type"` +} + +// GenericNotificationRule Defines the common fields of a notification rule. +type GenericNotificationRule struct { + // Channels List of notification channel identifiers the rule applies to. + Channels *[]string `json:"channels,omitempty"` + + // CreatedAt Timestamp when the rule was created. + CreatedAt *time.Time `json:"createdAt,omitempty"` + + // Disabled Whether the rule is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Id A unique identifier for the notification rule. + Id string `json:"id"` + + // Name The user friendly name of the notification rule. + Name *string `json:"name,omitempty"` + + // Type The type of the notification rule. + Type NotificationRuleType `json:"type"` + + // UpdatedAt Timestamp when the rule was modified. + UpdatedAt *time.Time `json:"updatedAt,omitempty"` +} + +// GenericNotificationRuleCreateRequest Defines the common fields of a notification rule. +type GenericNotificationRuleCreateRequest struct { + // Channels List of notification channel identifiers or names the rule applies to. + Channels []string `json:"channels"` + + // Disabled Whether the rule is disabled or not. + Disabled bool `json:"disabled"` + + // Name The user friendly name of the notification rule. + Name string `json:"name"` + + // Type The type of the notification rule. + Type NotificationRuleType `json:"type"` +} + // GrantBurnDownHistorySegment A segment of the grant burn down history. // // A given segment represents the usage of a grant between events that changed either the grant burn down priority order or the usag period. @@ -683,6 +800,216 @@ type MeterQueryResult struct { // MeterQueryRow A row in the result of a meter query. type MeterQueryRow = models.MeterQueryRow +// NotificationChannel defines model for NotificationChannel. +type NotificationChannel struct { + union json.RawMessage +} + +// NotificationChannelCreateRequest defines model for NotificationChannelCreateRequest. +type NotificationChannelCreateRequest struct { + union json.RawMessage +} + +// NotificationChannelType The type of the notification channel. +type NotificationChannelType string + +// NotificationChannelWebhook defines model for NotificationChannelWebhook. +type NotificationChannelWebhook struct { + // CreatedAt Timestamp when the channel was created. + CreatedAt *time.Time `json:"createdAt,omitempty"` + + // CustomHeaders Custom HTTP headers sent as part of the webhook request. + CustomHeaders *map[string]interface{} `json:"customHeaders"` + + // Disabled Whether the channel is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Id A unique identifier for the notification channel. + Id string `json:"id"` + + // Name User friendly name of the channel. + Name *string `json:"name,omitempty"` + + // SigningSecret Signing secret used for webhook request validation on the receiving end. + // + // Format: `base64` encoded random bytes optionally prefixed with `whsec_`. Recommended size: 24 + SigningSecret string `json:"signingSecret"` + + // Type The type of the notification channel. + Type NotificationChannelType `json:"type"` + + // UpdatedAt Timestamp when the channel was modified. + UpdatedAt *time.Time `json:"updatedAt,omitempty"` + + // Url Webhook URL where the notification is sent. + Url string `json:"url"` +} + +// NotificationChannelWebhookCreateRequest defines model for NotificationChannelWebhookCreateRequest. +type NotificationChannelWebhookCreateRequest struct { + // CustomHeaders Custom HTTP headers sent as part of the webhook request. + CustomHeaders *map[string]interface{} `json:"customHeaders"` + + // Disabled Whether the channel is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Name User friendly name of the channel. + Name string `json:"name"` + + // SigningSecret Signing secret used for webhook request validation on the receiving end. Automatically generated if not provided. + // + // Format: `base64` encoded random bytes optionally prefixed with `whsec_`. Recommended size: 24 + SigningSecret *string `json:"signingSecret"` + + // Type The type of the notification channel. + Type NotificationChannelType `json:"type"` + + // Url Webhook URL where the notification is sent. + Url string `json:"url"` +} + +// NotificationChannels defines model for NotificationChannels. +type NotificationChannels = []NotificationChannel + +// NotificationEvent Notification event generated by the system based on the criteria defined in the corresponding +// a notification rule. +// +// The `payload` field contains the actual message sent to the notification channel. +type NotificationEvent struct { + // CreatedAt Timestamp when the notification event was created. + CreatedAt time.Time `json:"createdAt"` + + // DeliveryStatus The delivery status of the notification event. + DeliveryStatus []NotificationEventDeliveryStatus `json:"deliveryStatus"` + + // FeatureId The identifier of the feature defined in notification rule triggered this event. + FeatureId *string `json:"featureId,omitempty"` + + // Id A unique identifier for the notification event. + Id string `json:"id"` + + // Payload The actual payload sent to channel as part of the notification event. + // + // The `data` field contains the information specific to the notification event + // which may vary based on the `type` of the event. + Payload NotificationEventPayload `json:"payload"` + + // RuleId The identifier of the Notification Rule which triggered this event. + RuleId string `json:"ruleId"` + + // SubjectId The identifier of the feature defined in notification rule triggered this event. + SubjectId *string `json:"subjectId,omitempty"` +} + +// NotificationEventDeliveryStatus defines model for NotificationEventDeliveryStatus. +type NotificationEventDeliveryStatus struct { + ChannelId string `json:"channelId"` + State NotificationEventDeliveryStatusState `json:"state"` + UpdatedAt time.Time `json:"updatedAt"` +} + +// NotificationEventDeliveryStatusState defines model for NotificationEventDeliveryStatus.State. +type NotificationEventDeliveryStatusState string + +// NotificationEventPayload The actual payload sent to channel as part of the notification event. +// +// The `data` field contains the information specific to the notification event +// which may vary based on the `type` of the event. +type NotificationEventPayload struct { + // Data Event type specific data. + // + // The format may vary based on the type of the event and the schema is defined for each event type separately. + Data map[string]interface{} `json:"data"` + + // Id A unique identifier for the notification event. + Id string `json:"id"` + + // Metadata Metadata information releted to the event. + Metadata *map[string]interface{} `json:"metadata"` + + // Timestamp Timestamp when the notification event was created. + Timestamp time.Time `json:"timestamp"` + + // Type The type of teh notification rule generated this event. + Type string `json:"type"` +} + +// NotificationRule defines model for NotificationRule. +type NotificationRule struct { + union json.RawMessage +} + +// NotificationRuleBalanceThreshold defines model for NotificationRuleBalanceThreshold. +type NotificationRuleBalanceThreshold struct { + // Channels List of notification channel identifiers the rule applies to. + Channels *[]string `json:"channels,omitempty"` + + // CreatedAt Timestamp when the rule was created. + CreatedAt *time.Time `json:"createdAt,omitempty"` + + // Disabled Whether the rule is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Features Optional field for scoping notification based by features. + Features *[]string `json:"features"` + + // Id A unique identifier for the notification rule. + Id string `json:"id"` + + // Name The user friendly name of the notification rule. + Name *string `json:"name,omitempty"` + + // Thresholds List of thresholds the rule suppose to be triggered. + Thresholds []NotificationRuleBalanceThresholdValue `json:"thresholds"` + + // Type The type of the notification rule. + Type NotificationRuleType `json:"type"` + + // UpdatedAt Timestamp when the rule was modified. + UpdatedAt *time.Time `json:"updatedAt,omitempty"` +} + +// NotificationRuleBalanceThresholdCreateRequest defines model for NotificationRuleBalanceThresholdCreateRequest. +type NotificationRuleBalanceThresholdCreateRequest struct { + // Channels List of notification channel identifiers or names the rule applies to. + Channels []string `json:"channels"` + + // Disabled Whether the rule is disabled or not. + Disabled bool `json:"disabled"` + + // Features Optional field for defining the scope of notification by feature. + Features *[]string `json:"features"` + + // Name The user friendly name of the notification rule. + Name string `json:"name"` + + // Thresholds List of thresholds the rule suppose to be triggered. + Thresholds []NotificationRuleBalanceThresholdValue `json:"thresholds"` + + // Type The type of the notification rule. + Type NotificationRuleType `json:"type"` +} + +// NotificationRuleBalanceThresholdValue Threshold value with multiple supported types. +type NotificationRuleBalanceThresholdValue struct { + Type NotificationRuleBalanceThresholdValueType `json:"type"` + Value float64 `json:"value"` +} + +// NotificationRuleBalanceThresholdValueType defines model for NotificationRuleBalanceThresholdValue.Type. +type NotificationRuleBalanceThresholdValueType string + +// NotificationRuleCreateRequest defines model for NotificationRuleCreateRequest. +type NotificationRuleCreateRequest struct { + union json.RawMessage +} + +// NotificationRuleType The type of the notification rule. +type NotificationRuleType string + +// NotificationRules defines model for NotificationRules. +type NotificationRules = []NotificationRule + // Period A time period type Period struct { // From Period start time where the amount was applied. If applicable. @@ -789,12 +1116,18 @@ type WindowedBalanceHistory struct { WindowedHistory *[]BalanceHistoryWindow `json:"windowedHistory,omitempty"` } +// ChannelId defines model for channelId. +type ChannelId = string + // EntitlementId defines model for entitlementId. type EntitlementId = string // EntitlementIdOrFeatureKey defines model for entitlementIdOrFeatureKey. type EntitlementIdOrFeatureKey = string +// EventId defines model for eventId. +type EventId = string + // FeatureId defines model for featureId. type FeatureId = string @@ -807,6 +1140,9 @@ type IncludeDeleted = bool // MeterIdOrSlug A unique identifier. type MeterIdOrSlug = IdOrSlug +// QueryFilterFeature defines model for queryFilterFeature. +type QueryFilterFeature = []string + // QueryFilterGroupBy Simple filter for group bys with exact match. // // Usage: `?filterGroupBy[type]=input&filterGroupBy[model]=gpt-4` @@ -821,6 +1157,9 @@ type QueryFrom = time.Time // QueryGroupBy defines model for queryGroupBy. type QueryGroupBy = []string +// QueryIncludeDisabled defines model for queryIncludeDisabled. +type QueryIncludeDisabled = bool + // QueryLimit defines model for queryLimit. type QueryLimit = int @@ -836,6 +1175,9 @@ type QueryWindowSize = WindowSize // QueryWindowTimeZone defines model for queryWindowTimeZone. type QueryWindowTimeZone = string +// RuleId defines model for ruleId. +type RuleId = string + // SubjectIdOrKey defines model for subjectIdOrKey. type SubjectIdOrKey = string @@ -958,6 +1300,72 @@ type QueryMeterParams struct { GroupBy *QueryGroupBy `form:"groupBy,omitempty" json:"groupBy,omitempty"` } +// ListNotificationChannelsParams defines parameters for ListNotificationChannels. +type ListNotificationChannelsParams struct { + // Limit Number of entries to return + Limit *QueryLimit `form:"limit,omitempty" json:"limit,omitempty"` + + // Offset Number of entries to skip + Offset *QueryOffset `form:"offset,omitempty" json:"offset,omitempty"` + + // OrderBy Order by field + OrderBy *ListNotificationChannelsParamsOrderBy `form:"orderBy,omitempty" json:"orderBy,omitempty"` + + // IncludeDisabled Include disabled entries. + IncludeDisabled *QueryIncludeDisabled `form:"includeDisabled,omitempty" json:"includeDisabled,omitempty"` +} + +// ListNotificationChannelsParamsOrderBy defines parameters for ListNotificationChannels. +type ListNotificationChannelsParamsOrderBy string + +// ListNotificationEventsParams defines parameters for ListNotificationEvents. +type ListNotificationEventsParams struct { + // Limit Number of entries to return + Limit *QueryLimit `form:"limit,omitempty" json:"limit,omitempty"` + + // Offset Number of entries to skip + Offset *QueryOffset `form:"offset,omitempty" json:"offset,omitempty"` + + // OrderBy Order by field + OrderBy *ListNotificationEventsParamsOrderBy `form:"orderBy,omitempty" json:"orderBy,omitempty"` + + // Feature Filtering by multiple features. + // + // Usage: `?feature=feature-1&feature=feature-2` + Feature *QueryFilterFeature `form:"feature,omitempty" json:"feature,omitempty"` + + // Subject Filtering by multiple subjects. + // + // Usage: ?subject=customer-1&subject=customer-2 + Subject *QueryFilterSubject `form:"subject,omitempty" json:"subject,omitempty"` +} + +// ListNotificationEventsParamsOrderBy defines parameters for ListNotificationEvents. +type ListNotificationEventsParamsOrderBy string + +// ListNotificationRulesParams defines parameters for ListNotificationRules. +type ListNotificationRulesParams struct { + // Limit Number of entries to return + Limit *QueryLimit `form:"limit,omitempty" json:"limit,omitempty"` + + // Offset Number of entries to skip + Offset *QueryOffset `form:"offset,omitempty" json:"offset,omitempty"` + + // OrderBy Order by field + OrderBy *ListNotificationRulesParamsOrderBy `form:"orderBy,omitempty" json:"orderBy,omitempty"` + + // IncludeDisabled Include disabled entries. + IncludeDisabled *QueryIncludeDisabled `form:"includeDisabled,omitempty" json:"includeDisabled,omitempty"` + + // Feature Filtering by multiple features. + // + // Usage: `?feature=feature-1&feature=feature-2` + Feature *QueryFilterFeature `form:"feature,omitempty" json:"feature,omitempty"` +} + +// ListNotificationRulesParamsOrderBy defines parameters for ListNotificationRules. +type ListNotificationRulesParamsOrderBy string + // QueryPortalMeterParams defines parameters for QueryPortalMeter. type QueryPortalMeterParams struct { // From Start date-time in RFC 3339 format. @@ -1068,6 +1476,18 @@ type CreateFeatureJSONRequestBody = FeatureCreateInputs // CreateMeterJSONRequestBody defines body for CreateMeter for application/json ContentType. type CreateMeterJSONRequestBody = Meter +// CreateNotificationChannelJSONRequestBody defines body for CreateNotificationChannel for application/json ContentType. +type CreateNotificationChannelJSONRequestBody = NotificationChannelCreateRequest + +// UpdateNotificationChannelJSONRequestBody defines body for UpdateNotificationChannel for application/json ContentType. +type UpdateNotificationChannelJSONRequestBody = NotificationChannelCreateRequest + +// CreateNotificationRuleJSONRequestBody defines body for CreateNotificationRule for application/json ContentType. +type CreateNotificationRuleJSONRequestBody = NotificationRuleCreateRequest + +// UpdateNotificationRuleJSONRequestBody defines body for UpdateNotificationRule for application/json ContentType. +type UpdateNotificationRuleJSONRequestBody = NotificationRuleCreateRequest + // CreatePortalTokenJSONRequestBody defines body for CreatePortalToken for application/json ContentType. type CreatePortalTokenJSONRequestBody = PortalToken @@ -1459,79 +1879,351 @@ func (t *EntitlementCreateInputs) UnmarshalJSON(b []byte) error { return err } -// ServerInterface represents all server handlers. -type ServerInterface interface { - // Get event metrics - // (GET /api/v1/debug/metrics) - GetDebugMetrics(w http.ResponseWriter, r *http.Request) - // List entitlements - // (GET /api/v1/entitlements) - ListEntitlements(w http.ResponseWriter, r *http.Request, params ListEntitlementsParams) - // List ingested events - // (GET /api/v1/events) - ListEvents(w http.ResponseWriter, r *http.Request, params ListEventsParams) - // Ingest events - // (POST /api/v1/events) - IngestEvents(w http.ResponseWriter, r *http.Request) - // List features - // (GET /api/v1/features) - ListFeatures(w http.ResponseWriter, r *http.Request, params ListFeaturesParams) - // Create a feature - // (POST /api/v1/features) - CreateFeature(w http.ResponseWriter, r *http.Request) - // Archive a feature - // (DELETE /api/v1/features/{featureId}) - DeleteFeature(w http.ResponseWriter, r *http.Request, featureId FeatureId) - // Get feature - // (GET /api/v1/features/{featureId}) - GetFeature(w http.ResponseWriter, r *http.Request, featureId FeatureId) - // List grants - // (GET /api/v1/grants) - ListGrants(w http.ResponseWriter, r *http.Request, params ListGrantsParams) - // Void a grant - // (DELETE /api/v1/grants/{grantId}) - VoidGrant(w http.ResponseWriter, r *http.Request, grantId GrantId) - // List meters - // (GET /api/v1/meters) - ListMeters(w http.ResponseWriter, r *http.Request) - // ☁ Create meter - // (POST /api/v1/meters) - CreateMeter(w http.ResponseWriter, r *http.Request) - // ☁ Delete meter - // (DELETE /api/v1/meters/{meterIdOrSlug}) - DeleteMeter(w http.ResponseWriter, r *http.Request, meterIdOrSlug MeterIdOrSlug) - // Get meter - // (GET /api/v1/meters/{meterIdOrSlug}) - GetMeter(w http.ResponseWriter, r *http.Request, meterIdOrSlug MeterIdOrSlug) - // Query meter - // (GET /api/v1/meters/{meterIdOrSlug}/query) - QueryMeter(w http.ResponseWriter, r *http.Request, meterIdOrSlug MeterIdOrSlug, params QueryMeterParams) - // List meter subjects - // (GET /api/v1/meters/{meterIdOrSlug}/subjects) - ListMeterSubjects(w http.ResponseWriter, r *http.Request, meterIdOrSlug MeterIdOrSlug) - // Query portal meter - // (GET /api/v1/portal/meters/{meterSlug}/query) - QueryPortalMeter(w http.ResponseWriter, r *http.Request, meterSlug string, params QueryPortalMeterParams) - // ☁ List portal tokens - // (GET /api/v1/portal/tokens) - ListPortalTokens(w http.ResponseWriter, r *http.Request, params ListPortalTokensParams) - // Create portal token - // (POST /api/v1/portal/tokens) - CreatePortalToken(w http.ResponseWriter, r *http.Request) - // ☁ Invalidate portal tokens - // (POST /api/v1/portal/tokens/invalidate) - InvalidatePortalTokens(w http.ResponseWriter, r *http.Request) - // ☁ List subjects - // (GET /api/v1/subjects) - ListSubjects(w http.ResponseWriter, r *http.Request) - // ☁ Upsert subject - // (POST /api/v1/subjects) - UpsertSubject(w http.ResponseWriter, r *http.Request) - // ☁ Delete subject - // (DELETE /api/v1/subjects/{subjectIdOrKey}) - DeleteSubject(w http.ResponseWriter, r *http.Request, subjectIdOrKey SubjectIdOrKey) - // ☁ Get subject - // (GET /api/v1/subjects/{subjectIdOrKey}) +// AsNotificationChannelWebhook returns the union data inside the NotificationChannel as a NotificationChannelWebhook +func (t NotificationChannel) AsNotificationChannelWebhook() (NotificationChannelWebhook, error) { + var body NotificationChannelWebhook + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromNotificationChannelWebhook overwrites any union data inside the NotificationChannel as the provided NotificationChannelWebhook +func (t *NotificationChannel) FromNotificationChannelWebhook(v NotificationChannelWebhook) error { + v.Type = "WEBHOOK" + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeNotificationChannelWebhook performs a merge with any union data inside the NotificationChannel, using the provided NotificationChannelWebhook +func (t *NotificationChannel) MergeNotificationChannelWebhook(v NotificationChannelWebhook) error { + v.Type = "WEBHOOK" + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +func (t NotificationChannel) Discriminator() (string, error) { + var discriminator struct { + Discriminator string `json:"type"` + } + err := json.Unmarshal(t.union, &discriminator) + return discriminator.Discriminator, err +} + +func (t NotificationChannel) ValueByDiscriminator() (interface{}, error) { + discriminator, err := t.Discriminator() + if err != nil { + return nil, err + } + switch discriminator { + case "WEBHOOK": + return t.AsNotificationChannelWebhook() + default: + return nil, errors.New("unknown discriminator value: " + discriminator) + } +} + +func (t NotificationChannel) MarshalJSON() ([]byte, error) { + b, err := t.union.MarshalJSON() + return b, err +} + +func (t *NotificationChannel) UnmarshalJSON(b []byte) error { + err := t.union.UnmarshalJSON(b) + return err +} + +// AsNotificationChannelWebhookCreateRequest returns the union data inside the NotificationChannelCreateRequest as a NotificationChannelWebhookCreateRequest +func (t NotificationChannelCreateRequest) AsNotificationChannelWebhookCreateRequest() (NotificationChannelWebhookCreateRequest, error) { + var body NotificationChannelWebhookCreateRequest + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromNotificationChannelWebhookCreateRequest overwrites any union data inside the NotificationChannelCreateRequest as the provided NotificationChannelWebhookCreateRequest +func (t *NotificationChannelCreateRequest) FromNotificationChannelWebhookCreateRequest(v NotificationChannelWebhookCreateRequest) error { + v.Type = "WEBHOOK" + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeNotificationChannelWebhookCreateRequest performs a merge with any union data inside the NotificationChannelCreateRequest, using the provided NotificationChannelWebhookCreateRequest +func (t *NotificationChannelCreateRequest) MergeNotificationChannelWebhookCreateRequest(v NotificationChannelWebhookCreateRequest) error { + v.Type = "WEBHOOK" + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +func (t NotificationChannelCreateRequest) Discriminator() (string, error) { + var discriminator struct { + Discriminator string `json:"type"` + } + err := json.Unmarshal(t.union, &discriminator) + return discriminator.Discriminator, err +} + +func (t NotificationChannelCreateRequest) ValueByDiscriminator() (interface{}, error) { + discriminator, err := t.Discriminator() + if err != nil { + return nil, err + } + switch discriminator { + case "WEBHOOK": + return t.AsNotificationChannelWebhookCreateRequest() + default: + return nil, errors.New("unknown discriminator value: " + discriminator) + } +} + +func (t NotificationChannelCreateRequest) MarshalJSON() ([]byte, error) { + b, err := t.union.MarshalJSON() + return b, err +} + +func (t *NotificationChannelCreateRequest) UnmarshalJSON(b []byte) error { + err := t.union.UnmarshalJSON(b) + return err +} + +// AsNotificationRuleBalanceThreshold returns the union data inside the NotificationRule as a NotificationRuleBalanceThreshold +func (t NotificationRule) AsNotificationRuleBalanceThreshold() (NotificationRuleBalanceThreshold, error) { + var body NotificationRuleBalanceThreshold + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromNotificationRuleBalanceThreshold overwrites any union data inside the NotificationRule as the provided NotificationRuleBalanceThreshold +func (t *NotificationRule) FromNotificationRuleBalanceThreshold(v NotificationRuleBalanceThreshold) error { + v.Type = "entitlements.balance.threshold" + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeNotificationRuleBalanceThreshold performs a merge with any union data inside the NotificationRule, using the provided NotificationRuleBalanceThreshold +func (t *NotificationRule) MergeNotificationRuleBalanceThreshold(v NotificationRuleBalanceThreshold) error { + v.Type = "entitlements.balance.threshold" + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +func (t NotificationRule) Discriminator() (string, error) { + var discriminator struct { + Discriminator string `json:"type"` + } + err := json.Unmarshal(t.union, &discriminator) + return discriminator.Discriminator, err +} + +func (t NotificationRule) ValueByDiscriminator() (interface{}, error) { + discriminator, err := t.Discriminator() + if err != nil { + return nil, err + } + switch discriminator { + case "entitlements.balance.threshold": + return t.AsNotificationRuleBalanceThreshold() + default: + return nil, errors.New("unknown discriminator value: " + discriminator) + } +} + +func (t NotificationRule) MarshalJSON() ([]byte, error) { + b, err := t.union.MarshalJSON() + return b, err +} + +func (t *NotificationRule) UnmarshalJSON(b []byte) error { + err := t.union.UnmarshalJSON(b) + return err +} + +// AsNotificationRuleBalanceThresholdCreateRequest returns the union data inside the NotificationRuleCreateRequest as a NotificationRuleBalanceThresholdCreateRequest +func (t NotificationRuleCreateRequest) AsNotificationRuleBalanceThresholdCreateRequest() (NotificationRuleBalanceThresholdCreateRequest, error) { + var body NotificationRuleBalanceThresholdCreateRequest + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromNotificationRuleBalanceThresholdCreateRequest overwrites any union data inside the NotificationRuleCreateRequest as the provided NotificationRuleBalanceThresholdCreateRequest +func (t *NotificationRuleCreateRequest) FromNotificationRuleBalanceThresholdCreateRequest(v NotificationRuleBalanceThresholdCreateRequest) error { + v.Type = "entitlements.balance.threshold" + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeNotificationRuleBalanceThresholdCreateRequest performs a merge with any union data inside the NotificationRuleCreateRequest, using the provided NotificationRuleBalanceThresholdCreateRequest +func (t *NotificationRuleCreateRequest) MergeNotificationRuleBalanceThresholdCreateRequest(v NotificationRuleBalanceThresholdCreateRequest) error { + v.Type = "entitlements.balance.threshold" + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +func (t NotificationRuleCreateRequest) Discriminator() (string, error) { + var discriminator struct { + Discriminator string `json:"type"` + } + err := json.Unmarshal(t.union, &discriminator) + return discriminator.Discriminator, err +} + +func (t NotificationRuleCreateRequest) ValueByDiscriminator() (interface{}, error) { + discriminator, err := t.Discriminator() + if err != nil { + return nil, err + } + switch discriminator { + case "entitlements.balance.threshold": + return t.AsNotificationRuleBalanceThresholdCreateRequest() + default: + return nil, errors.New("unknown discriminator value: " + discriminator) + } +} + +func (t NotificationRuleCreateRequest) MarshalJSON() ([]byte, error) { + b, err := t.union.MarshalJSON() + return b, err +} + +func (t *NotificationRuleCreateRequest) UnmarshalJSON(b []byte) error { + err := t.union.UnmarshalJSON(b) + return err +} + +// ServerInterface represents all server handlers. +type ServerInterface interface { + // Get event metrics + // (GET /api/v1/debug/metrics) + GetDebugMetrics(w http.ResponseWriter, r *http.Request) + // List entitlements + // (GET /api/v1/entitlements) + ListEntitlements(w http.ResponseWriter, r *http.Request, params ListEntitlementsParams) + // List ingested events + // (GET /api/v1/events) + ListEvents(w http.ResponseWriter, r *http.Request, params ListEventsParams) + // Ingest events + // (POST /api/v1/events) + IngestEvents(w http.ResponseWriter, r *http.Request) + // List features + // (GET /api/v1/features) + ListFeatures(w http.ResponseWriter, r *http.Request, params ListFeaturesParams) + // Create a feature + // (POST /api/v1/features) + CreateFeature(w http.ResponseWriter, r *http.Request) + // Archive a feature + // (DELETE /api/v1/features/{featureId}) + DeleteFeature(w http.ResponseWriter, r *http.Request, featureId FeatureId) + // Get feature + // (GET /api/v1/features/{featureId}) + GetFeature(w http.ResponseWriter, r *http.Request, featureId FeatureId) + // List grants + // (GET /api/v1/grants) + ListGrants(w http.ResponseWriter, r *http.Request, params ListGrantsParams) + // Void a grant + // (DELETE /api/v1/grants/{grantId}) + VoidGrant(w http.ResponseWriter, r *http.Request, grantId GrantId) + // List meters + // (GET /api/v1/meters) + ListMeters(w http.ResponseWriter, r *http.Request) + // ☁ Create meter + // (POST /api/v1/meters) + CreateMeter(w http.ResponseWriter, r *http.Request) + // ☁ Delete meter + // (DELETE /api/v1/meters/{meterIdOrSlug}) + DeleteMeter(w http.ResponseWriter, r *http.Request, meterIdOrSlug MeterIdOrSlug) + // Get meter + // (GET /api/v1/meters/{meterIdOrSlug}) + GetMeter(w http.ResponseWriter, r *http.Request, meterIdOrSlug MeterIdOrSlug) + // Query meter + // (GET /api/v1/meters/{meterIdOrSlug}/query) + QueryMeter(w http.ResponseWriter, r *http.Request, meterIdOrSlug MeterIdOrSlug, params QueryMeterParams) + // List meter subjects + // (GET /api/v1/meters/{meterIdOrSlug}/subjects) + ListMeterSubjects(w http.ResponseWriter, r *http.Request, meterIdOrSlug MeterIdOrSlug) + // List notification channels + // (GET /api/v1/notification/channels) + ListNotificationChannels(w http.ResponseWriter, r *http.Request, params ListNotificationChannelsParams) + // Create a notification channel + // (POST /api/v1/notification/channels) + CreateNotificationChannel(w http.ResponseWriter, r *http.Request) + // Delete a notification channel + // (DELETE /api/v1/notification/channels/{channelId}) + DeleteNotificationChannel(w http.ResponseWriter, r *http.Request, channelId ChannelId) + // Get notification channel + // (GET /api/v1/notification/channels/{channelId}) + GetNotificationChannel(w http.ResponseWriter, r *http.Request, channelId ChannelId) + // Update notification channel + // (PUT /api/v1/notification/channels/{channelId}) + UpdateNotificationChannel(w http.ResponseWriter, r *http.Request, channelId ChannelId) + // List notification evens + // (GET /api/v1/notification/events) + ListNotificationEvents(w http.ResponseWriter, r *http.Request, params ListNotificationEventsParams) + // Get notification event + // (GET /api/v1/notification/events/{eventId}) + GetNotificationEvent(w http.ResponseWriter, r *http.Request, eventId EventId) + // List notification rules + // (GET /api/v1/notification/rules) + ListNotificationRules(w http.ResponseWriter, r *http.Request, params ListNotificationRulesParams) + // Create a notification rule + // (POST /api/v1/notification/rules) + CreateNotificationRule(w http.ResponseWriter, r *http.Request) + // Delete a notification rule + // (DELETE /api/v1/notification/rules/{ruleId}) + DeleteNotificationRule(w http.ResponseWriter, r *http.Request, ruleId RuleId) + // Get notification rule + // (GET /api/v1/notification/rules/{ruleId}) + GetNotificationRule(w http.ResponseWriter, r *http.Request, ruleId RuleId) + // Update a notification rule + // (PUT /api/v1/notification/rules/{ruleId}) + UpdateNotificationRule(w http.ResponseWriter, r *http.Request, ruleId RuleId) + // Query portal meter + // (GET /api/v1/portal/meters/{meterSlug}/query) + QueryPortalMeter(w http.ResponseWriter, r *http.Request, meterSlug string, params QueryPortalMeterParams) + // ☁ List portal tokens + // (GET /api/v1/portal/tokens) + ListPortalTokens(w http.ResponseWriter, r *http.Request, params ListPortalTokensParams) + // Create portal token + // (POST /api/v1/portal/tokens) + CreatePortalToken(w http.ResponseWriter, r *http.Request) + // ☁ Invalidate portal tokens + // (POST /api/v1/portal/tokens/invalidate) + InvalidatePortalTokens(w http.ResponseWriter, r *http.Request) + // ☁ List subjects + // (GET /api/v1/subjects) + ListSubjects(w http.ResponseWriter, r *http.Request) + // ☁ Upsert subject + // (POST /api/v1/subjects) + UpsertSubject(w http.ResponseWriter, r *http.Request) + // ☁ Delete subject + // (DELETE /api/v1/subjects/{subjectIdOrKey}) + DeleteSubject(w http.ResponseWriter, r *http.Request, subjectIdOrKey SubjectIdOrKey) + // ☁ Get subject + // (GET /api/v1/subjects/{subjectIdOrKey}) GetSubject(w http.ResponseWriter, r *http.Request, subjectIdOrKey SubjectIdOrKey) // List entitlements of a subject // (GET /api/v1/subjects/{subjectIdOrKey}/entitlements) @@ -1662,19 +2354,91 @@ func (_ Unimplemented) ListMeterSubjects(w http.ResponseWriter, r *http.Request, w.WriteHeader(http.StatusNotImplemented) } -// Query portal meter -// (GET /api/v1/portal/meters/{meterSlug}/query) -func (_ Unimplemented) QueryPortalMeter(w http.ResponseWriter, r *http.Request, meterSlug string, params QueryPortalMeterParams) { +// List notification channels +// (GET /api/v1/notification/channels) +func (_ Unimplemented) ListNotificationChannels(w http.ResponseWriter, r *http.Request, params ListNotificationChannelsParams) { w.WriteHeader(http.StatusNotImplemented) } -// ☁ List portal tokens -// (GET /api/v1/portal/tokens) -func (_ Unimplemented) ListPortalTokens(w http.ResponseWriter, r *http.Request, params ListPortalTokensParams) { +// Create a notification channel +// (POST /api/v1/notification/channels) +func (_ Unimplemented) CreateNotificationChannel(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusNotImplemented) } -// Create portal token +// Delete a notification channel +// (DELETE /api/v1/notification/channels/{channelId}) +func (_ Unimplemented) DeleteNotificationChannel(w http.ResponseWriter, r *http.Request, channelId ChannelId) { + w.WriteHeader(http.StatusNotImplemented) +} + +// Get notification channel +// (GET /api/v1/notification/channels/{channelId}) +func (_ Unimplemented) GetNotificationChannel(w http.ResponseWriter, r *http.Request, channelId ChannelId) { + w.WriteHeader(http.StatusNotImplemented) +} + +// Update notification channel +// (PUT /api/v1/notification/channels/{channelId}) +func (_ Unimplemented) UpdateNotificationChannel(w http.ResponseWriter, r *http.Request, channelId ChannelId) { + w.WriteHeader(http.StatusNotImplemented) +} + +// List notification evens +// (GET /api/v1/notification/events) +func (_ Unimplemented) ListNotificationEvents(w http.ResponseWriter, r *http.Request, params ListNotificationEventsParams) { + w.WriteHeader(http.StatusNotImplemented) +} + +// Get notification event +// (GET /api/v1/notification/events/{eventId}) +func (_ Unimplemented) GetNotificationEvent(w http.ResponseWriter, r *http.Request, eventId EventId) { + w.WriteHeader(http.StatusNotImplemented) +} + +// List notification rules +// (GET /api/v1/notification/rules) +func (_ Unimplemented) ListNotificationRules(w http.ResponseWriter, r *http.Request, params ListNotificationRulesParams) { + w.WriteHeader(http.StatusNotImplemented) +} + +// Create a notification rule +// (POST /api/v1/notification/rules) +func (_ Unimplemented) CreateNotificationRule(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusNotImplemented) +} + +// Delete a notification rule +// (DELETE /api/v1/notification/rules/{ruleId}) +func (_ Unimplemented) DeleteNotificationRule(w http.ResponseWriter, r *http.Request, ruleId RuleId) { + w.WriteHeader(http.StatusNotImplemented) +} + +// Get notification rule +// (GET /api/v1/notification/rules/{ruleId}) +func (_ Unimplemented) GetNotificationRule(w http.ResponseWriter, r *http.Request, ruleId RuleId) { + w.WriteHeader(http.StatusNotImplemented) +} + +// Update a notification rule +// (PUT /api/v1/notification/rules/{ruleId}) +func (_ Unimplemented) UpdateNotificationRule(w http.ResponseWriter, r *http.Request, ruleId RuleId) { + w.WriteHeader(http.StatusNotImplemented) +} + +// Query portal meter +// (GET /api/v1/portal/meters/{meterSlug}/query) +func (_ Unimplemented) QueryPortalMeter(w http.ResponseWriter, r *http.Request, meterSlug string, params QueryPortalMeterParams) { + w.WriteHeader(http.StatusNotImplemented) +} + +// ☁ List portal tokens +// (GET /api/v1/portal/tokens) +func (_ Unimplemented) ListPortalTokens(w http.ResponseWriter, r *http.Request, params ListPortalTokensParams) { + w.WriteHeader(http.StatusNotImplemented) +} + +// Create portal token // (POST /api/v1/portal/tokens) func (_ Unimplemented) CreatePortalToken(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusNotImplemented) @@ -1871,14 +2635,441 @@ func (siw *ServerInterfaceWrapper) ListEvents(w http.ResponseWriter, r *http.Req // ------------- Optional query parameter "limit" ------------- - err = runtime.BindQueryParameter("form", true, false, "limit", r.URL.Query(), ¶ms.Limit) + err = runtime.BindQueryParameter("form", true, false, "limit", r.URL.Query(), ¶ms.Limit) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err}) + return + } + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.ListEvents(w, r, params) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// IngestEvents operation middleware +func (siw *ServerInterfaceWrapper) IngestEvents(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.IngestEvents(w, r) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// ListFeatures operation middleware +func (siw *ServerInterfaceWrapper) ListFeatures(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + var err error + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + // Parameter object where we will unmarshal all parameters from the context + var params ListFeaturesParams + + // ------------- Optional query parameter "limit" ------------- + + err = runtime.BindQueryParameter("form", true, false, "limit", r.URL.Query(), ¶ms.Limit) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err}) + return + } + + // ------------- Optional query parameter "offset" ------------- + + err = runtime.BindQueryParameter("form", true, false, "offset", r.URL.Query(), ¶ms.Offset) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "offset", Err: err}) + return + } + + // ------------- Optional query parameter "orderBy" ------------- + + err = runtime.BindQueryParameter("form", true, false, "orderBy", r.URL.Query(), ¶ms.OrderBy) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "orderBy", Err: err}) + return + } + + // ------------- Optional query parameter "includeArchived" ------------- + + err = runtime.BindQueryParameter("form", true, false, "includeArchived", r.URL.Query(), ¶ms.IncludeArchived) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "includeArchived", Err: err}) + return + } + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.ListFeatures(w, r, params) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// CreateFeature operation middleware +func (siw *ServerInterfaceWrapper) CreateFeature(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.CreateFeature(w, r) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// DeleteFeature operation middleware +func (siw *ServerInterfaceWrapper) DeleteFeature(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + var err error + + // ------------- Path parameter "featureId" ------------- + var featureId FeatureId + + err = runtime.BindStyledParameterWithOptions("simple", "featureId", chi.URLParam(r, "featureId"), &featureId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "featureId", Err: err}) + return + } + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.DeleteFeature(w, r, featureId) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// GetFeature operation middleware +func (siw *ServerInterfaceWrapper) GetFeature(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + var err error + + // ------------- Path parameter "featureId" ------------- + var featureId FeatureId + + err = runtime.BindStyledParameterWithOptions("simple", "featureId", chi.URLParam(r, "featureId"), &featureId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "featureId", Err: err}) + return + } + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.GetFeature(w, r, featureId) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// ListGrants operation middleware +func (siw *ServerInterfaceWrapper) ListGrants(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + var err error + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + // Parameter object where we will unmarshal all parameters from the context + var params ListGrantsParams + + // ------------- Optional query parameter "limit" ------------- + + err = runtime.BindQueryParameter("form", true, false, "limit", r.URL.Query(), ¶ms.Limit) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err}) + return + } + + // ------------- Optional query parameter "offset" ------------- + + err = runtime.BindQueryParameter("form", true, false, "offset", r.URL.Query(), ¶ms.Offset) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "offset", Err: err}) + return + } + + // ------------- Optional query parameter "orderBy" ------------- + + err = runtime.BindQueryParameter("form", true, false, "orderBy", r.URL.Query(), ¶ms.OrderBy) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "orderBy", Err: err}) + return + } + + // ------------- Optional query parameter "includeDeleted" ------------- + + err = runtime.BindQueryParameter("form", true, false, "includeDeleted", r.URL.Query(), ¶ms.IncludeDeleted) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "includeDeleted", Err: err}) + return + } + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.ListGrants(w, r, params) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// VoidGrant operation middleware +func (siw *ServerInterfaceWrapper) VoidGrant(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + var err error + + // ------------- Path parameter "grantId" ------------- + var grantId GrantId + + err = runtime.BindStyledParameterWithOptions("simple", "grantId", chi.URLParam(r, "grantId"), &grantId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "grantId", Err: err}) + return + } + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.VoidGrant(w, r, grantId) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// ListMeters operation middleware +func (siw *ServerInterfaceWrapper) ListMeters(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.ListMeters(w, r) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// CreateMeter operation middleware +func (siw *ServerInterfaceWrapper) CreateMeter(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.CreateMeter(w, r) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// DeleteMeter operation middleware +func (siw *ServerInterfaceWrapper) DeleteMeter(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + var err error + + // ------------- Path parameter "meterIdOrSlug" ------------- + var meterIdOrSlug MeterIdOrSlug + + err = runtime.BindStyledParameterWithOptions("simple", "meterIdOrSlug", chi.URLParam(r, "meterIdOrSlug"), &meterIdOrSlug, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "meterIdOrSlug", Err: err}) + return + } + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.DeleteMeter(w, r, meterIdOrSlug) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// GetMeter operation middleware +func (siw *ServerInterfaceWrapper) GetMeter(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + var err error + + // ------------- Path parameter "meterIdOrSlug" ------------- + var meterIdOrSlug MeterIdOrSlug + + err = runtime.BindStyledParameterWithOptions("simple", "meterIdOrSlug", chi.URLParam(r, "meterIdOrSlug"), &meterIdOrSlug, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "meterIdOrSlug", Err: err}) + return + } + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.GetMeter(w, r, meterIdOrSlug) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// QueryMeter operation middleware +func (siw *ServerInterfaceWrapper) QueryMeter(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + var err error + + // ------------- Path parameter "meterIdOrSlug" ------------- + var meterIdOrSlug MeterIdOrSlug + + err = runtime.BindStyledParameterWithOptions("simple", "meterIdOrSlug", chi.URLParam(r, "meterIdOrSlug"), &meterIdOrSlug, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "meterIdOrSlug", Err: err}) + return + } + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + // Parameter object where we will unmarshal all parameters from the context + var params QueryMeterParams + + // ------------- Optional query parameter "from" ------------- + + err = runtime.BindQueryParameter("form", true, false, "from", r.URL.Query(), ¶ms.From) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "from", Err: err}) + return + } + + // ------------- Optional query parameter "to" ------------- + + err = runtime.BindQueryParameter("form", true, false, "to", r.URL.Query(), ¶ms.To) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "to", Err: err}) + return + } + + // ------------- Optional query parameter "windowSize" ------------- + + err = runtime.BindQueryParameter("form", true, false, "windowSize", r.URL.Query(), ¶ms.WindowSize) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "windowSize", Err: err}) + return + } + + // ------------- Optional query parameter "windowTimeZone" ------------- + + err = runtime.BindQueryParameter("form", true, false, "windowTimeZone", r.URL.Query(), ¶ms.WindowTimeZone) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "windowTimeZone", Err: err}) + return + } + + // ------------- Optional query parameter "subject" ------------- + + err = runtime.BindQueryParameter("form", true, false, "subject", r.URL.Query(), ¶ms.Subject) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "subject", Err: err}) + return + } + + // ------------- Optional query parameter "filterGroupBy" ------------- + + err = runtime.BindQueryParameter("deepObject", true, false, "filterGroupBy", r.URL.Query(), ¶ms.FilterGroupBy) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "filterGroupBy", Err: err}) + return + } + + // ------------- Optional query parameter "groupBy" ------------- + + err = runtime.BindQueryParameter("form", true, false, "groupBy", r.URL.Query(), ¶ms.GroupBy) if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err}) + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "groupBy", Err: err}) return } handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListEvents(w, r, params) + siw.Handler.QueryMeter(w, r, meterIdOrSlug, params) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -1888,16 +3079,27 @@ func (siw *ServerInterfaceWrapper) ListEvents(w http.ResponseWriter, r *http.Req handler.ServeHTTP(w, r.WithContext(ctx)) } -// IngestEvents operation middleware -func (siw *ServerInterfaceWrapper) IngestEvents(w http.ResponseWriter, r *http.Request) { +// ListMeterSubjects operation middleware +func (siw *ServerInterfaceWrapper) ListMeterSubjects(w http.ResponseWriter, r *http.Request) { ctx := r.Context() + var err error + + // ------------- Path parameter "meterIdOrSlug" ------------- + var meterIdOrSlug MeterIdOrSlug + + err = runtime.BindStyledParameterWithOptions("simple", "meterIdOrSlug", chi.URLParam(r, "meterIdOrSlug"), &meterIdOrSlug, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "meterIdOrSlug", Err: err}) + return + } + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.IngestEvents(w, r) + siw.Handler.ListMeterSubjects(w, r, meterIdOrSlug) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -1907,8 +3109,8 @@ func (siw *ServerInterfaceWrapper) IngestEvents(w http.ResponseWriter, r *http.R handler.ServeHTTP(w, r.WithContext(ctx)) } -// ListFeatures operation middleware -func (siw *ServerInterfaceWrapper) ListFeatures(w http.ResponseWriter, r *http.Request) { +// ListNotificationChannels operation middleware +func (siw *ServerInterfaceWrapper) ListNotificationChannels(w http.ResponseWriter, r *http.Request) { ctx := r.Context() var err error @@ -1918,7 +3120,7 @@ func (siw *ServerInterfaceWrapper) ListFeatures(w http.ResponseWriter, r *http.R ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) // Parameter object where we will unmarshal all parameters from the context - var params ListFeaturesParams + var params ListNotificationChannelsParams // ------------- Optional query parameter "limit" ------------- @@ -1944,16 +3146,16 @@ func (siw *ServerInterfaceWrapper) ListFeatures(w http.ResponseWriter, r *http.R return } - // ------------- Optional query parameter "includeArchived" ------------- + // ------------- Optional query parameter "includeDisabled" ------------- - err = runtime.BindQueryParameter("form", true, false, "includeArchived", r.URL.Query(), ¶ms.IncludeArchived) + err = runtime.BindQueryParameter("form", true, false, "includeDisabled", r.URL.Query(), ¶ms.IncludeDisabled) if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "includeArchived", Err: err}) + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "includeDisabled", Err: err}) return } handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListFeatures(w, r, params) + siw.Handler.ListNotificationChannels(w, r, params) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -1963,8 +3165,8 @@ func (siw *ServerInterfaceWrapper) ListFeatures(w http.ResponseWriter, r *http.R handler.ServeHTTP(w, r.WithContext(ctx)) } -// CreateFeature operation middleware -func (siw *ServerInterfaceWrapper) CreateFeature(w http.ResponseWriter, r *http.Request) { +// CreateNotificationChannel operation middleware +func (siw *ServerInterfaceWrapper) CreateNotificationChannel(w http.ResponseWriter, r *http.Request) { ctx := r.Context() ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) @@ -1972,7 +3174,7 @@ func (siw *ServerInterfaceWrapper) CreateFeature(w http.ResponseWriter, r *http. ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.CreateFeature(w, r) + siw.Handler.CreateNotificationChannel(w, r) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -1982,18 +3184,18 @@ func (siw *ServerInterfaceWrapper) CreateFeature(w http.ResponseWriter, r *http. handler.ServeHTTP(w, r.WithContext(ctx)) } -// DeleteFeature operation middleware -func (siw *ServerInterfaceWrapper) DeleteFeature(w http.ResponseWriter, r *http.Request) { +// DeleteNotificationChannel operation middleware +func (siw *ServerInterfaceWrapper) DeleteNotificationChannel(w http.ResponseWriter, r *http.Request) { ctx := r.Context() var err error - // ------------- Path parameter "featureId" ------------- - var featureId FeatureId + // ------------- Path parameter "channelId" ------------- + var channelId ChannelId - err = runtime.BindStyledParameterWithOptions("simple", "featureId", chi.URLParam(r, "featureId"), &featureId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + err = runtime.BindStyledParameterWithOptions("simple", "channelId", chi.URLParam(r, "channelId"), &channelId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "featureId", Err: err}) + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "channelId", Err: err}) return } @@ -2002,7 +3204,7 @@ func (siw *ServerInterfaceWrapper) DeleteFeature(w http.ResponseWriter, r *http. ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.DeleteFeature(w, r, featureId) + siw.Handler.DeleteNotificationChannel(w, r, channelId) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -2012,18 +3214,18 @@ func (siw *ServerInterfaceWrapper) DeleteFeature(w http.ResponseWriter, r *http. handler.ServeHTTP(w, r.WithContext(ctx)) } -// GetFeature operation middleware -func (siw *ServerInterfaceWrapper) GetFeature(w http.ResponseWriter, r *http.Request) { +// GetNotificationChannel operation middleware +func (siw *ServerInterfaceWrapper) GetNotificationChannel(w http.ResponseWriter, r *http.Request) { ctx := r.Context() var err error - // ------------- Path parameter "featureId" ------------- - var featureId FeatureId + // ------------- Path parameter "channelId" ------------- + var channelId ChannelId - err = runtime.BindStyledParameterWithOptions("simple", "featureId", chi.URLParam(r, "featureId"), &featureId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + err = runtime.BindStyledParameterWithOptions("simple", "channelId", chi.URLParam(r, "channelId"), &channelId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "featureId", Err: err}) + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "channelId", Err: err}) return } @@ -2032,7 +3234,7 @@ func (siw *ServerInterfaceWrapper) GetFeature(w http.ResponseWriter, r *http.Req ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetFeature(w, r, featureId) + siw.Handler.GetNotificationChannel(w, r, channelId) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -2042,8 +3244,38 @@ func (siw *ServerInterfaceWrapper) GetFeature(w http.ResponseWriter, r *http.Req handler.ServeHTTP(w, r.WithContext(ctx)) } -// ListGrants operation middleware -func (siw *ServerInterfaceWrapper) ListGrants(w http.ResponseWriter, r *http.Request) { +// UpdateNotificationChannel operation middleware +func (siw *ServerInterfaceWrapper) UpdateNotificationChannel(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + var err error + + // ------------- Path parameter "channelId" ------------- + var channelId ChannelId + + err = runtime.BindStyledParameterWithOptions("simple", "channelId", chi.URLParam(r, "channelId"), &channelId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "channelId", Err: err}) + return + } + + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + + ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.UpdateNotificationChannel(w, r, channelId) + })) + + for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { + handler = siw.HandlerMiddlewares[i](handler) + } + + handler.ServeHTTP(w, r.WithContext(ctx)) +} + +// ListNotificationEvents operation middleware +func (siw *ServerInterfaceWrapper) ListNotificationEvents(w http.ResponseWriter, r *http.Request) { ctx := r.Context() var err error @@ -2053,7 +3285,7 @@ func (siw *ServerInterfaceWrapper) ListGrants(w http.ResponseWriter, r *http.Req ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) // Parameter object where we will unmarshal all parameters from the context - var params ListGrantsParams + var params ListNotificationEventsParams // ------------- Optional query parameter "limit" ------------- @@ -2079,16 +3311,24 @@ func (siw *ServerInterfaceWrapper) ListGrants(w http.ResponseWriter, r *http.Req return } - // ------------- Optional query parameter "includeDeleted" ------------- + // ------------- Optional query parameter "feature" ------------- - err = runtime.BindQueryParameter("form", true, false, "includeDeleted", r.URL.Query(), ¶ms.IncludeDeleted) + err = runtime.BindQueryParameter("form", true, false, "feature", r.URL.Query(), ¶ms.Feature) if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "includeDeleted", Err: err}) + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "feature", Err: err}) + return + } + + // ------------- Optional query parameter "subject" ------------- + + err = runtime.BindQueryParameter("form", true, false, "subject", r.URL.Query(), ¶ms.Subject) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "subject", Err: err}) return } handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListGrants(w, r, params) + siw.Handler.ListNotificationEvents(w, r, params) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -2098,18 +3338,18 @@ func (siw *ServerInterfaceWrapper) ListGrants(w http.ResponseWriter, r *http.Req handler.ServeHTTP(w, r.WithContext(ctx)) } -// VoidGrant operation middleware -func (siw *ServerInterfaceWrapper) VoidGrant(w http.ResponseWriter, r *http.Request) { +// GetNotificationEvent operation middleware +func (siw *ServerInterfaceWrapper) GetNotificationEvent(w http.ResponseWriter, r *http.Request) { ctx := r.Context() var err error - // ------------- Path parameter "grantId" ------------- - var grantId GrantId + // ------------- Path parameter "eventId" ------------- + var eventId EventId - err = runtime.BindStyledParameterWithOptions("simple", "grantId", chi.URLParam(r, "grantId"), &grantId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + err = runtime.BindStyledParameterWithOptions("simple", "eventId", chi.URLParam(r, "eventId"), &eventId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "grantId", Err: err}) + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "eventId", Err: err}) return } @@ -2118,7 +3358,7 @@ func (siw *ServerInterfaceWrapper) VoidGrant(w http.ResponseWriter, r *http.Requ ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.VoidGrant(w, r, grantId) + siw.Handler.GetNotificationEvent(w, r, eventId) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -2128,35 +3368,61 @@ func (siw *ServerInterfaceWrapper) VoidGrant(w http.ResponseWriter, r *http.Requ handler.ServeHTTP(w, r.WithContext(ctx)) } -// ListMeters operation middleware -func (siw *ServerInterfaceWrapper) ListMeters(w http.ResponseWriter, r *http.Request) { +// ListNotificationRules operation middleware +func (siw *ServerInterfaceWrapper) ListNotificationRules(w http.ResponseWriter, r *http.Request) { ctx := r.Context() + var err error + ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListMeters(w, r) - })) + // Parameter object where we will unmarshal all parameters from the context + var params ListNotificationRulesParams - for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { - handler = siw.HandlerMiddlewares[i](handler) + // ------------- Optional query parameter "limit" ------------- + + err = runtime.BindQueryParameter("form", true, false, "limit", r.URL.Query(), ¶ms.Limit) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err}) + return } - handler.ServeHTTP(w, r.WithContext(ctx)) -} + // ------------- Optional query parameter "offset" ------------- -// CreateMeter operation middleware -func (siw *ServerInterfaceWrapper) CreateMeter(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() + err = runtime.BindQueryParameter("form", true, false, "offset", r.URL.Query(), ¶ms.Offset) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "offset", Err: err}) + return + } - ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) + // ------------- Optional query parameter "orderBy" ------------- - ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) + err = runtime.BindQueryParameter("form", true, false, "orderBy", r.URL.Query(), ¶ms.OrderBy) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "orderBy", Err: err}) + return + } + + // ------------- Optional query parameter "includeDisabled" ------------- + + err = runtime.BindQueryParameter("form", true, false, "includeDisabled", r.URL.Query(), ¶ms.IncludeDisabled) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "includeDisabled", Err: err}) + return + } + + // ------------- Optional query parameter "feature" ------------- + + err = runtime.BindQueryParameter("form", true, false, "feature", r.URL.Query(), ¶ms.Feature) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "feature", Err: err}) + return + } handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.CreateMeter(w, r) + siw.Handler.ListNotificationRules(w, r, params) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -2166,27 +3432,16 @@ func (siw *ServerInterfaceWrapper) CreateMeter(w http.ResponseWriter, r *http.Re handler.ServeHTTP(w, r.WithContext(ctx)) } -// DeleteMeter operation middleware -func (siw *ServerInterfaceWrapper) DeleteMeter(w http.ResponseWriter, r *http.Request) { +// CreateNotificationRule operation middleware +func (siw *ServerInterfaceWrapper) CreateNotificationRule(w http.ResponseWriter, r *http.Request) { ctx := r.Context() - var err error - - // ------------- Path parameter "meterIdOrSlug" ------------- - var meterIdOrSlug MeterIdOrSlug - - err = runtime.BindStyledParameterWithOptions("simple", "meterIdOrSlug", chi.URLParam(r, "meterIdOrSlug"), &meterIdOrSlug, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "meterIdOrSlug", Err: err}) - return - } - ctx = context.WithValue(ctx, CloudTokenAuthScopes, []string{}) ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.DeleteMeter(w, r, meterIdOrSlug) + siw.Handler.CreateNotificationRule(w, r) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -2196,18 +3451,18 @@ func (siw *ServerInterfaceWrapper) DeleteMeter(w http.ResponseWriter, r *http.Re handler.ServeHTTP(w, r.WithContext(ctx)) } -// GetMeter operation middleware -func (siw *ServerInterfaceWrapper) GetMeter(w http.ResponseWriter, r *http.Request) { +// DeleteNotificationRule operation middleware +func (siw *ServerInterfaceWrapper) DeleteNotificationRule(w http.ResponseWriter, r *http.Request) { ctx := r.Context() var err error - // ------------- Path parameter "meterIdOrSlug" ------------- - var meterIdOrSlug MeterIdOrSlug + // ------------- Path parameter "ruleId" ------------- + var ruleId RuleId - err = runtime.BindStyledParameterWithOptions("simple", "meterIdOrSlug", chi.URLParam(r, "meterIdOrSlug"), &meterIdOrSlug, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + err = runtime.BindStyledParameterWithOptions("simple", "ruleId", chi.URLParam(r, "ruleId"), &ruleId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "meterIdOrSlug", Err: err}) + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "ruleId", Err: err}) return } @@ -2216,7 +3471,7 @@ func (siw *ServerInterfaceWrapper) GetMeter(w http.ResponseWriter, r *http.Reque ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetMeter(w, r, meterIdOrSlug) + siw.Handler.DeleteNotificationRule(w, r, ruleId) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -2226,18 +3481,18 @@ func (siw *ServerInterfaceWrapper) GetMeter(w http.ResponseWriter, r *http.Reque handler.ServeHTTP(w, r.WithContext(ctx)) } -// QueryMeter operation middleware -func (siw *ServerInterfaceWrapper) QueryMeter(w http.ResponseWriter, r *http.Request) { +// GetNotificationRule operation middleware +func (siw *ServerInterfaceWrapper) GetNotificationRule(w http.ResponseWriter, r *http.Request) { ctx := r.Context() var err error - // ------------- Path parameter "meterIdOrSlug" ------------- - var meterIdOrSlug MeterIdOrSlug + // ------------- Path parameter "ruleId" ------------- + var ruleId RuleId - err = runtime.BindStyledParameterWithOptions("simple", "meterIdOrSlug", chi.URLParam(r, "meterIdOrSlug"), &meterIdOrSlug, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + err = runtime.BindStyledParameterWithOptions("simple", "ruleId", chi.URLParam(r, "ruleId"), &ruleId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "meterIdOrSlug", Err: err}) + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "ruleId", Err: err}) return } @@ -2245,67 +3500,8 @@ func (siw *ServerInterfaceWrapper) QueryMeter(w http.ResponseWriter, r *http.Req ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) - // Parameter object where we will unmarshal all parameters from the context - var params QueryMeterParams - - // ------------- Optional query parameter "from" ------------- - - err = runtime.BindQueryParameter("form", true, false, "from", r.URL.Query(), ¶ms.From) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "from", Err: err}) - return - } - - // ------------- Optional query parameter "to" ------------- - - err = runtime.BindQueryParameter("form", true, false, "to", r.URL.Query(), ¶ms.To) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "to", Err: err}) - return - } - - // ------------- Optional query parameter "windowSize" ------------- - - err = runtime.BindQueryParameter("form", true, false, "windowSize", r.URL.Query(), ¶ms.WindowSize) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "windowSize", Err: err}) - return - } - - // ------------- Optional query parameter "windowTimeZone" ------------- - - err = runtime.BindQueryParameter("form", true, false, "windowTimeZone", r.URL.Query(), ¶ms.WindowTimeZone) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "windowTimeZone", Err: err}) - return - } - - // ------------- Optional query parameter "subject" ------------- - - err = runtime.BindQueryParameter("form", true, false, "subject", r.URL.Query(), ¶ms.Subject) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "subject", Err: err}) - return - } - - // ------------- Optional query parameter "filterGroupBy" ------------- - - err = runtime.BindQueryParameter("deepObject", true, false, "filterGroupBy", r.URL.Query(), ¶ms.FilterGroupBy) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "filterGroupBy", Err: err}) - return - } - - // ------------- Optional query parameter "groupBy" ------------- - - err = runtime.BindQueryParameter("form", true, false, "groupBy", r.URL.Query(), ¶ms.GroupBy) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "groupBy", Err: err}) - return - } - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.QueryMeter(w, r, meterIdOrSlug, params) + siw.Handler.GetNotificationRule(w, r, ruleId) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -2315,18 +3511,18 @@ func (siw *ServerInterfaceWrapper) QueryMeter(w http.ResponseWriter, r *http.Req handler.ServeHTTP(w, r.WithContext(ctx)) } -// ListMeterSubjects operation middleware -func (siw *ServerInterfaceWrapper) ListMeterSubjects(w http.ResponseWriter, r *http.Request) { +// UpdateNotificationRule operation middleware +func (siw *ServerInterfaceWrapper) UpdateNotificationRule(w http.ResponseWriter, r *http.Request) { ctx := r.Context() var err error - // ------------- Path parameter "meterIdOrSlug" ------------- - var meterIdOrSlug MeterIdOrSlug + // ------------- Path parameter "ruleId" ------------- + var ruleId RuleId - err = runtime.BindStyledParameterWithOptions("simple", "meterIdOrSlug", chi.URLParam(r, "meterIdOrSlug"), &meterIdOrSlug, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + err = runtime.BindStyledParameterWithOptions("simple", "ruleId", chi.URLParam(r, "ruleId"), &ruleId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "meterIdOrSlug", Err: err}) + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "ruleId", Err: err}) return } @@ -2335,7 +3531,7 @@ func (siw *ServerInterfaceWrapper) ListMeterSubjects(w http.ResponseWriter, r *h ctx = context.WithValue(ctx, CloudCookieAuthScopes, []string{}) handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListMeterSubjects(w, r, meterIdOrSlug) + siw.Handler.UpdateNotificationRule(w, r, ruleId) })) for i := len(siw.HandlerMiddlewares) - 1; i >= 0; i-- { @@ -3171,6 +4367,42 @@ func HandlerWithOptions(si ServerInterface, options ChiServerOptions) http.Handl r.Group(func(r chi.Router) { r.Get(options.BaseURL+"/api/v1/meters/{meterIdOrSlug}/subjects", wrapper.ListMeterSubjects) }) + r.Group(func(r chi.Router) { + r.Get(options.BaseURL+"/api/v1/notification/channels", wrapper.ListNotificationChannels) + }) + r.Group(func(r chi.Router) { + r.Post(options.BaseURL+"/api/v1/notification/channels", wrapper.CreateNotificationChannel) + }) + r.Group(func(r chi.Router) { + r.Delete(options.BaseURL+"/api/v1/notification/channels/{channelId}", wrapper.DeleteNotificationChannel) + }) + r.Group(func(r chi.Router) { + r.Get(options.BaseURL+"/api/v1/notification/channels/{channelId}", wrapper.GetNotificationChannel) + }) + r.Group(func(r chi.Router) { + r.Put(options.BaseURL+"/api/v1/notification/channels/{channelId}", wrapper.UpdateNotificationChannel) + }) + r.Group(func(r chi.Router) { + r.Get(options.BaseURL+"/api/v1/notification/events", wrapper.ListNotificationEvents) + }) + r.Group(func(r chi.Router) { + r.Get(options.BaseURL+"/api/v1/notification/events/{eventId}", wrapper.GetNotificationEvent) + }) + r.Group(func(r chi.Router) { + r.Get(options.BaseURL+"/api/v1/notification/rules", wrapper.ListNotificationRules) + }) + r.Group(func(r chi.Router) { + r.Post(options.BaseURL+"/api/v1/notification/rules", wrapper.CreateNotificationRule) + }) + r.Group(func(r chi.Router) { + r.Delete(options.BaseURL+"/api/v1/notification/rules/{ruleId}", wrapper.DeleteNotificationRule) + }) + r.Group(func(r chi.Router) { + r.Get(options.BaseURL+"/api/v1/notification/rules/{ruleId}", wrapper.GetNotificationRule) + }) + r.Group(func(r chi.Router) { + r.Put(options.BaseURL+"/api/v1/notification/rules/{ruleId}", wrapper.UpdateNotificationRule) + }) r.Group(func(r chi.Router) { r.Get(options.BaseURL+"/api/v1/portal/meters/{meterSlug}/query", wrapper.QueryPortalMeter) }) @@ -3229,228 +4461,274 @@ func HandlerWithOptions(si ServerInterface, options ChiServerOptions) http.Handl // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "ByNEt+9u/18AAAD//9aJ8j8jGAEA", + "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", + "evRqAQA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/client/go/client.gen.go b/api/client/go/client.gen.go index 66adaaeb0..3c81ef073 100644 --- a/api/client/go/client.gen.go +++ b/api/client/go/client.gen.go @@ -70,6 +70,29 @@ const ( ExpirationPeriodDurationYEAR ExpirationPeriodDuration = "YEAR" ) +// Defines values for NotificationChannelType. +const ( + WEBHOOK NotificationChannelType = "WEBHOOK" +) + +// Defines values for NotificationEventDeliveryStatusState. +const ( + FAILED NotificationEventDeliveryStatusState = "FAILED" + SENDING NotificationEventDeliveryStatusState = "SENDING" + SUCCESS NotificationEventDeliveryStatusState = "SUCCESS" +) + +// Defines values for NotificationRuleBalanceThresholdValueType. +const ( + NUMBER NotificationRuleBalanceThresholdValueType = "NUMBER" + PERCENT NotificationRuleBalanceThresholdValueType = "PERCENT" +) + +// Defines values for NotificationRuleType. +const ( + EntitlementsBalanceThreshold NotificationRuleType = "entitlements.balance.threshold" +) + // Defines values for RecurringPeriodEnum. const ( RecurringPeriodEnumDAY RecurringPeriodEnum = "DAY" @@ -98,11 +121,33 @@ const ( ListGrantsParamsOrderByUpdatedAt ListGrantsParamsOrderBy = "updatedAt" ) +// Defines values for ListNotificationChannelsParamsOrderBy. +const ( + ListNotificationChannelsParamsOrderByCreatedAt ListNotificationChannelsParamsOrderBy = "createdAt" + ListNotificationChannelsParamsOrderById ListNotificationChannelsParamsOrderBy = "id" + ListNotificationChannelsParamsOrderByType ListNotificationChannelsParamsOrderBy = "type" + ListNotificationChannelsParamsOrderByUpdatedAt ListNotificationChannelsParamsOrderBy = "updatedAt" +) + +// Defines values for ListNotificationEventsParamsOrderBy. +const ( + ListNotificationEventsParamsOrderByCreatedAt ListNotificationEventsParamsOrderBy = "createdAt" + ListNotificationEventsParamsOrderById ListNotificationEventsParamsOrderBy = "id" +) + +// Defines values for ListNotificationRulesParamsOrderBy. +const ( + ListNotificationRulesParamsOrderByCreatedAt ListNotificationRulesParamsOrderBy = "createdAt" + ListNotificationRulesParamsOrderById ListNotificationRulesParamsOrderBy = "id" + ListNotificationRulesParamsOrderByType ListNotificationRulesParamsOrderBy = "type" + ListNotificationRulesParamsOrderByUpdatedAt ListNotificationRulesParamsOrderBy = "updatedAt" +) + // Defines values for ListEntitlementGrantsParamsOrderBy. const ( - ListEntitlementGrantsParamsOrderByCreatedAt ListEntitlementGrantsParamsOrderBy = "createdAt" - ListEntitlementGrantsParamsOrderById ListEntitlementGrantsParamsOrderBy = "id" - ListEntitlementGrantsParamsOrderByUpdatedAt ListEntitlementGrantsParamsOrderBy = "updatedAt" + CreatedAt ListEntitlementGrantsParamsOrderBy = "createdAt" + Id ListEntitlementGrantsParamsOrderBy = "id" + UpdatedAt ListEntitlementGrantsParamsOrderBy = "updatedAt" ) // Defines values for GetEntitlementHistoryParamsWindowSize. @@ -616,6 +661,78 @@ type FeatureCreateInputs struct { Name string `json:"name"` } +// GenericNotificationChannel defines model for GenericNotificationChannel. +type GenericNotificationChannel struct { + // CreatedAt Timestamp when the channel was created. + CreatedAt *time.Time `json:"createdAt,omitempty"` + + // Disabled Whether the channel is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Id A unique identifier for the notification channel. + Id string `json:"id"` + + // Name User friendly name of the channel. + Name *string `json:"name,omitempty"` + + // Type The type of the notification channel. + Type NotificationChannelType `json:"type"` + + // UpdatedAt Timestamp when the channel was modified. + UpdatedAt *time.Time `json:"updatedAt,omitempty"` +} + +// GenericNotificationChannelCreateRequest defines model for GenericNotificationChannelCreateRequest. +type GenericNotificationChannelCreateRequest struct { + // Disabled Whether the channel is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Name User friendly name of the channel. + Name string `json:"name"` + + // Type The type of the notification channel. + Type NotificationChannelType `json:"type"` +} + +// GenericNotificationRule Defines the common fields of a notification rule. +type GenericNotificationRule struct { + // Channels List of notification channel identifiers the rule applies to. + Channels *[]string `json:"channels,omitempty"` + + // CreatedAt Timestamp when the rule was created. + CreatedAt *time.Time `json:"createdAt,omitempty"` + + // Disabled Whether the rule is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Id A unique identifier for the notification rule. + Id string `json:"id"` + + // Name The user friendly name of the notification rule. + Name *string `json:"name,omitempty"` + + // Type The type of the notification rule. + Type NotificationRuleType `json:"type"` + + // UpdatedAt Timestamp when the rule was modified. + UpdatedAt *time.Time `json:"updatedAt,omitempty"` +} + +// GenericNotificationRuleCreateRequest Defines the common fields of a notification rule. +type GenericNotificationRuleCreateRequest struct { + // Channels List of notification channel identifiers or names the rule applies to. + Channels []string `json:"channels"` + + // Disabled Whether the rule is disabled or not. + Disabled bool `json:"disabled"` + + // Name The user friendly name of the notification rule. + Name string `json:"name"` + + // Type The type of the notification rule. + Type NotificationRuleType `json:"type"` +} + // GrantBurnDownHistorySegment A segment of the grant burn down history. // // A given segment represents the usage of a grant between events that changed either the grant burn down priority order or the usag period. @@ -683,6 +800,216 @@ type MeterQueryResult struct { // MeterQueryRow A row in the result of a meter query. type MeterQueryRow = models.MeterQueryRow +// NotificationChannel defines model for NotificationChannel. +type NotificationChannel struct { + union json.RawMessage +} + +// NotificationChannelCreateRequest defines model for NotificationChannelCreateRequest. +type NotificationChannelCreateRequest struct { + union json.RawMessage +} + +// NotificationChannelType The type of the notification channel. +type NotificationChannelType string + +// NotificationChannelWebhook defines model for NotificationChannelWebhook. +type NotificationChannelWebhook struct { + // CreatedAt Timestamp when the channel was created. + CreatedAt *time.Time `json:"createdAt,omitempty"` + + // CustomHeaders Custom HTTP headers sent as part of the webhook request. + CustomHeaders *map[string]interface{} `json:"customHeaders"` + + // Disabled Whether the channel is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Id A unique identifier for the notification channel. + Id string `json:"id"` + + // Name User friendly name of the channel. + Name *string `json:"name,omitempty"` + + // SigningSecret Signing secret used for webhook request validation on the receiving end. + // + // Format: `base64` encoded random bytes optionally prefixed with `whsec_`. Recommended size: 24 + SigningSecret string `json:"signingSecret"` + + // Type The type of the notification channel. + Type NotificationChannelType `json:"type"` + + // UpdatedAt Timestamp when the channel was modified. + UpdatedAt *time.Time `json:"updatedAt,omitempty"` + + // Url Webhook URL where the notification is sent. + Url string `json:"url"` +} + +// NotificationChannelWebhookCreateRequest defines model for NotificationChannelWebhookCreateRequest. +type NotificationChannelWebhookCreateRequest struct { + // CustomHeaders Custom HTTP headers sent as part of the webhook request. + CustomHeaders *map[string]interface{} `json:"customHeaders"` + + // Disabled Whether the channel is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Name User friendly name of the channel. + Name string `json:"name"` + + // SigningSecret Signing secret used for webhook request validation on the receiving end. Automatically generated if not provided. + // + // Format: `base64` encoded random bytes optionally prefixed with `whsec_`. Recommended size: 24 + SigningSecret *string `json:"signingSecret"` + + // Type The type of the notification channel. + Type NotificationChannelType `json:"type"` + + // Url Webhook URL where the notification is sent. + Url string `json:"url"` +} + +// NotificationChannels defines model for NotificationChannels. +type NotificationChannels = []NotificationChannel + +// NotificationEvent Notification event generated by the system based on the criteria defined in the corresponding +// a notification rule. +// +// The `payload` field contains the actual message sent to the notification channel. +type NotificationEvent struct { + // CreatedAt Timestamp when the notification event was created. + CreatedAt time.Time `json:"createdAt"` + + // DeliveryStatus The delivery status of the notification event. + DeliveryStatus []NotificationEventDeliveryStatus `json:"deliveryStatus"` + + // FeatureId The identifier of the feature defined in notification rule triggered this event. + FeatureId *string `json:"featureId,omitempty"` + + // Id A unique identifier for the notification event. + Id string `json:"id"` + + // Payload The actual payload sent to channel as part of the notification event. + // + // The `data` field contains the information specific to the notification event + // which may vary based on the `type` of the event. + Payload NotificationEventPayload `json:"payload"` + + // RuleId The identifier of the Notification Rule which triggered this event. + RuleId string `json:"ruleId"` + + // SubjectId The identifier of the feature defined in notification rule triggered this event. + SubjectId *string `json:"subjectId,omitempty"` +} + +// NotificationEventDeliveryStatus defines model for NotificationEventDeliveryStatus. +type NotificationEventDeliveryStatus struct { + ChannelId string `json:"channelId"` + State NotificationEventDeliveryStatusState `json:"state"` + UpdatedAt time.Time `json:"updatedAt"` +} + +// NotificationEventDeliveryStatusState defines model for NotificationEventDeliveryStatus.State. +type NotificationEventDeliveryStatusState string + +// NotificationEventPayload The actual payload sent to channel as part of the notification event. +// +// The `data` field contains the information specific to the notification event +// which may vary based on the `type` of the event. +type NotificationEventPayload struct { + // Data Event type specific data. + // + // The format may vary based on the type of the event and the schema is defined for each event type separately. + Data map[string]interface{} `json:"data"` + + // Id A unique identifier for the notification event. + Id string `json:"id"` + + // Metadata Metadata information releted to the event. + Metadata *map[string]interface{} `json:"metadata"` + + // Timestamp Timestamp when the notification event was created. + Timestamp time.Time `json:"timestamp"` + + // Type The type of teh notification rule generated this event. + Type string `json:"type"` +} + +// NotificationRule defines model for NotificationRule. +type NotificationRule struct { + union json.RawMessage +} + +// NotificationRuleBalanceThreshold defines model for NotificationRuleBalanceThreshold. +type NotificationRuleBalanceThreshold struct { + // Channels List of notification channel identifiers the rule applies to. + Channels *[]string `json:"channels,omitempty"` + + // CreatedAt Timestamp when the rule was created. + CreatedAt *time.Time `json:"createdAt,omitempty"` + + // Disabled Whether the rule is disabled or not. + Disabled *bool `json:"disabled,omitempty"` + + // Features Optional field for scoping notification based by features. + Features *[]string `json:"features"` + + // Id A unique identifier for the notification rule. + Id string `json:"id"` + + // Name The user friendly name of the notification rule. + Name *string `json:"name,omitempty"` + + // Thresholds List of thresholds the rule suppose to be triggered. + Thresholds []NotificationRuleBalanceThresholdValue `json:"thresholds"` + + // Type The type of the notification rule. + Type NotificationRuleType `json:"type"` + + // UpdatedAt Timestamp when the rule was modified. + UpdatedAt *time.Time `json:"updatedAt,omitempty"` +} + +// NotificationRuleBalanceThresholdCreateRequest defines model for NotificationRuleBalanceThresholdCreateRequest. +type NotificationRuleBalanceThresholdCreateRequest struct { + // Channels List of notification channel identifiers or names the rule applies to. + Channels []string `json:"channels"` + + // Disabled Whether the rule is disabled or not. + Disabled bool `json:"disabled"` + + // Features Optional field for defining the scope of notification by feature. + Features *[]string `json:"features"` + + // Name The user friendly name of the notification rule. + Name string `json:"name"` + + // Thresholds List of thresholds the rule suppose to be triggered. + Thresholds []NotificationRuleBalanceThresholdValue `json:"thresholds"` + + // Type The type of the notification rule. + Type NotificationRuleType `json:"type"` +} + +// NotificationRuleBalanceThresholdValue Threshold value with multiple supported types. +type NotificationRuleBalanceThresholdValue struct { + Type NotificationRuleBalanceThresholdValueType `json:"type"` + Value float64 `json:"value"` +} + +// NotificationRuleBalanceThresholdValueType defines model for NotificationRuleBalanceThresholdValue.Type. +type NotificationRuleBalanceThresholdValueType string + +// NotificationRuleCreateRequest defines model for NotificationRuleCreateRequest. +type NotificationRuleCreateRequest struct { + union json.RawMessage +} + +// NotificationRuleType The type of the notification rule. +type NotificationRuleType string + +// NotificationRules defines model for NotificationRules. +type NotificationRules = []NotificationRule + // Period A time period type Period struct { // From Period start time where the amount was applied. If applicable. @@ -789,12 +1116,18 @@ type WindowedBalanceHistory struct { WindowedHistory *[]BalanceHistoryWindow `json:"windowedHistory,omitempty"` } +// ChannelId defines model for channelId. +type ChannelId = string + // EntitlementId defines model for entitlementId. type EntitlementId = string // EntitlementIdOrFeatureKey defines model for entitlementIdOrFeatureKey. type EntitlementIdOrFeatureKey = string +// EventId defines model for eventId. +type EventId = string + // FeatureId defines model for featureId. type FeatureId = string @@ -807,6 +1140,9 @@ type IncludeDeleted = bool // MeterIdOrSlug A unique identifier. type MeterIdOrSlug = IdOrSlug +// QueryFilterFeature defines model for queryFilterFeature. +type QueryFilterFeature = []string + // QueryFilterGroupBy Simple filter for group bys with exact match. // // Usage: `?filterGroupBy[type]=input&filterGroupBy[model]=gpt-4` @@ -821,6 +1157,9 @@ type QueryFrom = time.Time // QueryGroupBy defines model for queryGroupBy. type QueryGroupBy = []string +// QueryIncludeDisabled defines model for queryIncludeDisabled. +type QueryIncludeDisabled = bool + // QueryLimit defines model for queryLimit. type QueryLimit = int @@ -836,6 +1175,9 @@ type QueryWindowSize = WindowSize // QueryWindowTimeZone defines model for queryWindowTimeZone. type QueryWindowTimeZone = string +// RuleId defines model for ruleId. +type RuleId = string + // SubjectIdOrKey defines model for subjectIdOrKey. type SubjectIdOrKey = string @@ -958,6 +1300,72 @@ type QueryMeterParams struct { GroupBy *QueryGroupBy `form:"groupBy,omitempty" json:"groupBy,omitempty"` } +// ListNotificationChannelsParams defines parameters for ListNotificationChannels. +type ListNotificationChannelsParams struct { + // Limit Number of entries to return + Limit *QueryLimit `form:"limit,omitempty" json:"limit,omitempty"` + + // Offset Number of entries to skip + Offset *QueryOffset `form:"offset,omitempty" json:"offset,omitempty"` + + // OrderBy Order by field + OrderBy *ListNotificationChannelsParamsOrderBy `form:"orderBy,omitempty" json:"orderBy,omitempty"` + + // IncludeDisabled Include disabled entries. + IncludeDisabled *QueryIncludeDisabled `form:"includeDisabled,omitempty" json:"includeDisabled,omitempty"` +} + +// ListNotificationChannelsParamsOrderBy defines parameters for ListNotificationChannels. +type ListNotificationChannelsParamsOrderBy string + +// ListNotificationEventsParams defines parameters for ListNotificationEvents. +type ListNotificationEventsParams struct { + // Limit Number of entries to return + Limit *QueryLimit `form:"limit,omitempty" json:"limit,omitempty"` + + // Offset Number of entries to skip + Offset *QueryOffset `form:"offset,omitempty" json:"offset,omitempty"` + + // OrderBy Order by field + OrderBy *ListNotificationEventsParamsOrderBy `form:"orderBy,omitempty" json:"orderBy,omitempty"` + + // Feature Filtering by multiple features. + // + // Usage: `?feature=feature-1&feature=feature-2` + Feature *QueryFilterFeature `form:"feature,omitempty" json:"feature,omitempty"` + + // Subject Filtering by multiple subjects. + // + // Usage: ?subject=customer-1&subject=customer-2 + Subject *QueryFilterSubject `form:"subject,omitempty" json:"subject,omitempty"` +} + +// ListNotificationEventsParamsOrderBy defines parameters for ListNotificationEvents. +type ListNotificationEventsParamsOrderBy string + +// ListNotificationRulesParams defines parameters for ListNotificationRules. +type ListNotificationRulesParams struct { + // Limit Number of entries to return + Limit *QueryLimit `form:"limit,omitempty" json:"limit,omitempty"` + + // Offset Number of entries to skip + Offset *QueryOffset `form:"offset,omitempty" json:"offset,omitempty"` + + // OrderBy Order by field + OrderBy *ListNotificationRulesParamsOrderBy `form:"orderBy,omitempty" json:"orderBy,omitempty"` + + // IncludeDisabled Include disabled entries. + IncludeDisabled *QueryIncludeDisabled `form:"includeDisabled,omitempty" json:"includeDisabled,omitempty"` + + // Feature Filtering by multiple features. + // + // Usage: `?feature=feature-1&feature=feature-2` + Feature *QueryFilterFeature `form:"feature,omitempty" json:"feature,omitempty"` +} + +// ListNotificationRulesParamsOrderBy defines parameters for ListNotificationRules. +type ListNotificationRulesParamsOrderBy string + // QueryPortalMeterParams defines parameters for QueryPortalMeter. type QueryPortalMeterParams struct { // From Start date-time in RFC 3339 format. @@ -1068,6 +1476,18 @@ type CreateFeatureJSONRequestBody = FeatureCreateInputs // CreateMeterJSONRequestBody defines body for CreateMeter for application/json ContentType. type CreateMeterJSONRequestBody = Meter +// CreateNotificationChannelJSONRequestBody defines body for CreateNotificationChannel for application/json ContentType. +type CreateNotificationChannelJSONRequestBody = NotificationChannelCreateRequest + +// UpdateNotificationChannelJSONRequestBody defines body for UpdateNotificationChannel for application/json ContentType. +type UpdateNotificationChannelJSONRequestBody = NotificationChannelCreateRequest + +// CreateNotificationRuleJSONRequestBody defines body for CreateNotificationRule for application/json ContentType. +type CreateNotificationRuleJSONRequestBody = NotificationRuleCreateRequest + +// UpdateNotificationRuleJSONRequestBody defines body for UpdateNotificationRule for application/json ContentType. +type UpdateNotificationRuleJSONRequestBody = NotificationRuleCreateRequest + // CreatePortalTokenJSONRequestBody defines body for CreatePortalToken for application/json ContentType. type CreatePortalTokenJSONRequestBody = PortalToken @@ -1459,65 +1879,301 @@ func (t *EntitlementCreateInputs) UnmarshalJSON(b []byte) error { return err } -// RequestEditorFn is the function signature for the RequestEditor callback function -type RequestEditorFn func(ctx context.Context, req *http.Request) error - -// Doer performs HTTP requests. -// -// The standard http.Client implements this interface. -type HttpRequestDoer interface { - Do(req *http.Request) (*http.Response, error) +// AsNotificationChannelWebhook returns the union data inside the NotificationChannel as a NotificationChannelWebhook +func (t NotificationChannel) AsNotificationChannelWebhook() (NotificationChannelWebhook, error) { + var body NotificationChannelWebhook + err := json.Unmarshal(t.union, &body) + return body, err } -// Client which conforms to the OpenAPI3 specification for this service. -type Client struct { - // The endpoint of the server conforming to this interface, with scheme, - // https://api.deepmap.com for example. This can contain a path relative - // to the server, such as https://api.deepmap.com/dev-test, and all the - // paths in the swagger spec will be appended to the server. - Server string +// FromNotificationChannelWebhook overwrites any union data inside the NotificationChannel as the provided NotificationChannelWebhook +func (t *NotificationChannel) FromNotificationChannelWebhook(v NotificationChannelWebhook) error { + v.Type = "WEBHOOK" + b, err := json.Marshal(v) + t.union = b + return err +} - // Doer for performing requests, typically a *http.Client with any - // customized settings, such as certificate chains. - Client HttpRequestDoer +// MergeNotificationChannelWebhook performs a merge with any union data inside the NotificationChannel, using the provided NotificationChannelWebhook +func (t *NotificationChannel) MergeNotificationChannelWebhook(v NotificationChannelWebhook) error { + v.Type = "WEBHOOK" + b, err := json.Marshal(v) + if err != nil { + return err + } - // A list of callbacks for modifying requests which are generated before sending over - // the network. - RequestEditors []RequestEditorFn + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err } -// ClientOption allows setting custom parameters during construction -type ClientOption func(*Client) error - -// Creates a new Client, with reasonable defaults -func NewClient(server string, opts ...ClientOption) (*Client, error) { - // create a client with sane default values - client := Client{ - Server: server, - } - // mutate client and add all optional params - for _, o := range opts { - if err := o(&client); err != nil { - return nil, err - } +func (t NotificationChannel) Discriminator() (string, error) { + var discriminator struct { + Discriminator string `json:"type"` } - // ensure the server URL always has a trailing slash - if !strings.HasSuffix(client.Server, "/") { - client.Server += "/" + err := json.Unmarshal(t.union, &discriminator) + return discriminator.Discriminator, err +} + +func (t NotificationChannel) ValueByDiscriminator() (interface{}, error) { + discriminator, err := t.Discriminator() + if err != nil { + return nil, err } - // create httpClient, if not already present - if client.Client == nil { - client.Client = &http.Client{} + switch discriminator { + case "WEBHOOK": + return t.AsNotificationChannelWebhook() + default: + return nil, errors.New("unknown discriminator value: " + discriminator) } - return &client, nil } -// WithHTTPClient allows overriding the default Doer, which is -// automatically created using http.Client. This is useful for tests. -func WithHTTPClient(doer HttpRequestDoer) ClientOption { - return func(c *Client) error { - c.Client = doer - return nil +func (t NotificationChannel) MarshalJSON() ([]byte, error) { + b, err := t.union.MarshalJSON() + return b, err +} + +func (t *NotificationChannel) UnmarshalJSON(b []byte) error { + err := t.union.UnmarshalJSON(b) + return err +} + +// AsNotificationChannelWebhookCreateRequest returns the union data inside the NotificationChannelCreateRequest as a NotificationChannelWebhookCreateRequest +func (t NotificationChannelCreateRequest) AsNotificationChannelWebhookCreateRequest() (NotificationChannelWebhookCreateRequest, error) { + var body NotificationChannelWebhookCreateRequest + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromNotificationChannelWebhookCreateRequest overwrites any union data inside the NotificationChannelCreateRequest as the provided NotificationChannelWebhookCreateRequest +func (t *NotificationChannelCreateRequest) FromNotificationChannelWebhookCreateRequest(v NotificationChannelWebhookCreateRequest) error { + v.Type = "WEBHOOK" + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeNotificationChannelWebhookCreateRequest performs a merge with any union data inside the NotificationChannelCreateRequest, using the provided NotificationChannelWebhookCreateRequest +func (t *NotificationChannelCreateRequest) MergeNotificationChannelWebhookCreateRequest(v NotificationChannelWebhookCreateRequest) error { + v.Type = "WEBHOOK" + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +func (t NotificationChannelCreateRequest) Discriminator() (string, error) { + var discriminator struct { + Discriminator string `json:"type"` + } + err := json.Unmarshal(t.union, &discriminator) + return discriminator.Discriminator, err +} + +func (t NotificationChannelCreateRequest) ValueByDiscriminator() (interface{}, error) { + discriminator, err := t.Discriminator() + if err != nil { + return nil, err + } + switch discriminator { + case "WEBHOOK": + return t.AsNotificationChannelWebhookCreateRequest() + default: + return nil, errors.New("unknown discriminator value: " + discriminator) + } +} + +func (t NotificationChannelCreateRequest) MarshalJSON() ([]byte, error) { + b, err := t.union.MarshalJSON() + return b, err +} + +func (t *NotificationChannelCreateRequest) UnmarshalJSON(b []byte) error { + err := t.union.UnmarshalJSON(b) + return err +} + +// AsNotificationRuleBalanceThreshold returns the union data inside the NotificationRule as a NotificationRuleBalanceThreshold +func (t NotificationRule) AsNotificationRuleBalanceThreshold() (NotificationRuleBalanceThreshold, error) { + var body NotificationRuleBalanceThreshold + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromNotificationRuleBalanceThreshold overwrites any union data inside the NotificationRule as the provided NotificationRuleBalanceThreshold +func (t *NotificationRule) FromNotificationRuleBalanceThreshold(v NotificationRuleBalanceThreshold) error { + v.Type = "entitlements.balance.threshold" + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeNotificationRuleBalanceThreshold performs a merge with any union data inside the NotificationRule, using the provided NotificationRuleBalanceThreshold +func (t *NotificationRule) MergeNotificationRuleBalanceThreshold(v NotificationRuleBalanceThreshold) error { + v.Type = "entitlements.balance.threshold" + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +func (t NotificationRule) Discriminator() (string, error) { + var discriminator struct { + Discriminator string `json:"type"` + } + err := json.Unmarshal(t.union, &discriminator) + return discriminator.Discriminator, err +} + +func (t NotificationRule) ValueByDiscriminator() (interface{}, error) { + discriminator, err := t.Discriminator() + if err != nil { + return nil, err + } + switch discriminator { + case "entitlements.balance.threshold": + return t.AsNotificationRuleBalanceThreshold() + default: + return nil, errors.New("unknown discriminator value: " + discriminator) + } +} + +func (t NotificationRule) MarshalJSON() ([]byte, error) { + b, err := t.union.MarshalJSON() + return b, err +} + +func (t *NotificationRule) UnmarshalJSON(b []byte) error { + err := t.union.UnmarshalJSON(b) + return err +} + +// AsNotificationRuleBalanceThresholdCreateRequest returns the union data inside the NotificationRuleCreateRequest as a NotificationRuleBalanceThresholdCreateRequest +func (t NotificationRuleCreateRequest) AsNotificationRuleBalanceThresholdCreateRequest() (NotificationRuleBalanceThresholdCreateRequest, error) { + var body NotificationRuleBalanceThresholdCreateRequest + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromNotificationRuleBalanceThresholdCreateRequest overwrites any union data inside the NotificationRuleCreateRequest as the provided NotificationRuleBalanceThresholdCreateRequest +func (t *NotificationRuleCreateRequest) FromNotificationRuleBalanceThresholdCreateRequest(v NotificationRuleBalanceThresholdCreateRequest) error { + v.Type = "entitlements.balance.threshold" + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeNotificationRuleBalanceThresholdCreateRequest performs a merge with any union data inside the NotificationRuleCreateRequest, using the provided NotificationRuleBalanceThresholdCreateRequest +func (t *NotificationRuleCreateRequest) MergeNotificationRuleBalanceThresholdCreateRequest(v NotificationRuleBalanceThresholdCreateRequest) error { + v.Type = "entitlements.balance.threshold" + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +func (t NotificationRuleCreateRequest) Discriminator() (string, error) { + var discriminator struct { + Discriminator string `json:"type"` + } + err := json.Unmarshal(t.union, &discriminator) + return discriminator.Discriminator, err +} + +func (t NotificationRuleCreateRequest) ValueByDiscriminator() (interface{}, error) { + discriminator, err := t.Discriminator() + if err != nil { + return nil, err + } + switch discriminator { + case "entitlements.balance.threshold": + return t.AsNotificationRuleBalanceThresholdCreateRequest() + default: + return nil, errors.New("unknown discriminator value: " + discriminator) + } +} + +func (t NotificationRuleCreateRequest) MarshalJSON() ([]byte, error) { + b, err := t.union.MarshalJSON() + return b, err +} + +func (t *NotificationRuleCreateRequest) UnmarshalJSON(b []byte) error { + err := t.union.UnmarshalJSON(b) + return err +} + +// RequestEditorFn is the function signature for the RequestEditor callback function +type RequestEditorFn func(ctx context.Context, req *http.Request) error + +// Doer performs HTTP requests. +// +// The standard http.Client implements this interface. +type HttpRequestDoer interface { + Do(req *http.Request) (*http.Response, error) +} + +// Client which conforms to the OpenAPI3 specification for this service. +type Client struct { + // The endpoint of the server conforming to this interface, with scheme, + // https://api.deepmap.com for example. This can contain a path relative + // to the server, such as https://api.deepmap.com/dev-test, and all the + // paths in the swagger spec will be appended to the server. + Server string + + // Doer for performing requests, typically a *http.Client with any + // customized settings, such as certificate chains. + Client HttpRequestDoer + + // A list of callbacks for modifying requests which are generated before sending over + // the network. + RequestEditors []RequestEditorFn +} + +// ClientOption allows setting custom parameters during construction +type ClientOption func(*Client) error + +// Creates a new Client, with reasonable defaults +func NewClient(server string, opts ...ClientOption) (*Client, error) { + // create a client with sane default values + client := Client{ + Server: server, + } + // mutate client and add all optional params + for _, o := range opts { + if err := o(&client); err != nil { + return nil, err + } + } + // ensure the server URL always has a trailing slash + if !strings.HasSuffix(client.Server, "/") { + client.Server += "/" + } + // create httpClient, if not already present + if client.Client == nil { + client.Client = &http.Client{} + } + return &client, nil +} + +// WithHTTPClient allows overriding the default Doer, which is +// automatically created using http.Client. This is useful for tests. +func WithHTTPClient(doer HttpRequestDoer) ClientOption { + return func(c *Client) error { + c.Client = doer + return nil } } @@ -1588,6 +2244,50 @@ type ClientInterface interface { // ListMeterSubjects request ListMeterSubjects(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListNotificationChannels request + ListNotificationChannels(ctx context.Context, params *ListNotificationChannelsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // CreateNotificationChannelWithBody request with any body + CreateNotificationChannelWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + CreateNotificationChannel(ctx context.Context, body CreateNotificationChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // DeleteNotificationChannel request + DeleteNotificationChannel(ctx context.Context, channelId ChannelId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetNotificationChannel request + GetNotificationChannel(ctx context.Context, channelId ChannelId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // UpdateNotificationChannelWithBody request with any body + UpdateNotificationChannelWithBody(ctx context.Context, channelId ChannelId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + UpdateNotificationChannel(ctx context.Context, channelId ChannelId, body UpdateNotificationChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // ListNotificationEvents request + ListNotificationEvents(ctx context.Context, params *ListNotificationEventsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetNotificationEvent request + GetNotificationEvent(ctx context.Context, eventId EventId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // ListNotificationRules request + ListNotificationRules(ctx context.Context, params *ListNotificationRulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // CreateNotificationRuleWithBody request with any body + CreateNotificationRuleWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + CreateNotificationRule(ctx context.Context, body CreateNotificationRuleJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // DeleteNotificationRule request + DeleteNotificationRule(ctx context.Context, ruleId RuleId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetNotificationRule request + GetNotificationRule(ctx context.Context, ruleId RuleId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // UpdateNotificationRuleWithBody request with any body + UpdateNotificationRuleWithBody(ctx context.Context, ruleId RuleId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + UpdateNotificationRule(ctx context.Context, ruleId RuleId, body UpdateNotificationRuleJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // QueryPortalMeter request QueryPortalMeter(ctx context.Context, meterSlug string, params *QueryPortalMeterParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -1892,8 +2592,8 @@ func (c *Client) ListMeterSubjects(ctx context.Context, meterIdOrSlug MeterIdOrS return c.Client.Do(req) } -func (c *Client) QueryPortalMeter(ctx context.Context, meterSlug string, params *QueryPortalMeterParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewQueryPortalMeterRequest(c.Server, meterSlug, params) +func (c *Client) ListNotificationChannels(ctx context.Context, params *ListNotificationChannelsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListNotificationChannelsRequest(c.Server, params) if err != nil { return nil, err } @@ -1904,8 +2604,8 @@ func (c *Client) QueryPortalMeter(ctx context.Context, meterSlug string, params return c.Client.Do(req) } -func (c *Client) ListPortalTokens(ctx context.Context, params *ListPortalTokensParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListPortalTokensRequest(c.Server, params) +func (c *Client) CreateNotificationChannelWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateNotificationChannelRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -1916,8 +2616,8 @@ func (c *Client) ListPortalTokens(ctx context.Context, params *ListPortalTokensP return c.Client.Do(req) } -func (c *Client) CreatePortalTokenWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreatePortalTokenRequestWithBody(c.Server, contentType, body) +func (c *Client) CreateNotificationChannel(ctx context.Context, body CreateNotificationChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateNotificationChannelRequest(c.Server, body) if err != nil { return nil, err } @@ -1928,8 +2628,8 @@ func (c *Client) CreatePortalTokenWithBody(ctx context.Context, contentType stri return c.Client.Do(req) } -func (c *Client) CreatePortalToken(ctx context.Context, body CreatePortalTokenJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreatePortalTokenRequest(c.Server, body) +func (c *Client) DeleteNotificationChannel(ctx context.Context, channelId ChannelId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteNotificationChannelRequest(c.Server, channelId) if err != nil { return nil, err } @@ -1940,8 +2640,8 @@ func (c *Client) CreatePortalToken(ctx context.Context, body CreatePortalTokenJS return c.Client.Do(req) } -func (c *Client) InvalidatePortalTokensWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewInvalidatePortalTokensRequestWithBody(c.Server, contentType, body) +func (c *Client) GetNotificationChannel(ctx context.Context, channelId ChannelId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetNotificationChannelRequest(c.Server, channelId) if err != nil { return nil, err } @@ -1952,8 +2652,8 @@ func (c *Client) InvalidatePortalTokensWithBody(ctx context.Context, contentType return c.Client.Do(req) } -func (c *Client) InvalidatePortalTokens(ctx context.Context, body InvalidatePortalTokensJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewInvalidatePortalTokensRequest(c.Server, body) +func (c *Client) UpdateNotificationChannelWithBody(ctx context.Context, channelId ChannelId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateNotificationChannelRequestWithBody(c.Server, channelId, contentType, body) if err != nil { return nil, err } @@ -1964,8 +2664,8 @@ func (c *Client) InvalidatePortalTokens(ctx context.Context, body InvalidatePort return c.Client.Do(req) } -func (c *Client) ListSubjects(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListSubjectsRequest(c.Server) +func (c *Client) UpdateNotificationChannel(ctx context.Context, channelId ChannelId, body UpdateNotificationChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateNotificationChannelRequest(c.Server, channelId, body) if err != nil { return nil, err } @@ -1976,8 +2676,8 @@ func (c *Client) ListSubjects(ctx context.Context, reqEditors ...RequestEditorFn return c.Client.Do(req) } -func (c *Client) UpsertSubjectWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewUpsertSubjectRequestWithBody(c.Server, contentType, body) +func (c *Client) ListNotificationEvents(ctx context.Context, params *ListNotificationEventsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListNotificationEventsRequest(c.Server, params) if err != nil { return nil, err } @@ -1988,8 +2688,8 @@ func (c *Client) UpsertSubjectWithBody(ctx context.Context, contentType string, return c.Client.Do(req) } -func (c *Client) UpsertSubject(ctx context.Context, body UpsertSubjectJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewUpsertSubjectRequest(c.Server, body) +func (c *Client) GetNotificationEvent(ctx context.Context, eventId EventId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetNotificationEventRequest(c.Server, eventId) if err != nil { return nil, err } @@ -2000,8 +2700,8 @@ func (c *Client) UpsertSubject(ctx context.Context, body UpsertSubjectJSONReques return c.Client.Do(req) } -func (c *Client) DeleteSubject(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewDeleteSubjectRequest(c.Server, subjectIdOrKey) +func (c *Client) ListNotificationRules(ctx context.Context, params *ListNotificationRulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListNotificationRulesRequest(c.Server, params) if err != nil { return nil, err } @@ -2012,8 +2712,8 @@ func (c *Client) DeleteSubject(ctx context.Context, subjectIdOrKey SubjectIdOrKe return c.Client.Do(req) } -func (c *Client) GetSubject(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetSubjectRequest(c.Server, subjectIdOrKey) +func (c *Client) CreateNotificationRuleWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateNotificationRuleRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -2024,8 +2724,8 @@ func (c *Client) GetSubject(ctx context.Context, subjectIdOrKey SubjectIdOrKey, return c.Client.Do(req) } -func (c *Client) ListSubjectEntitlements(ctx context.Context, subjectIdOrKey SubjectIdOrKey, params *ListSubjectEntitlementsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListSubjectEntitlementsRequest(c.Server, subjectIdOrKey, params) +func (c *Client) CreateNotificationRule(ctx context.Context, body CreateNotificationRuleJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateNotificationRuleRequest(c.Server, body) if err != nil { return nil, err } @@ -2036,8 +2736,8 @@ func (c *Client) ListSubjectEntitlements(ctx context.Context, subjectIdOrKey Sub return c.Client.Do(req) } -func (c *Client) CreateEntitlementWithBody(ctx context.Context, subjectIdOrKey SubjectIdOrKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateEntitlementRequestWithBody(c.Server, subjectIdOrKey, contentType, body) +func (c *Client) DeleteNotificationRule(ctx context.Context, ruleId RuleId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteNotificationRuleRequest(c.Server, ruleId) if err != nil { return nil, err } @@ -2048,8 +2748,8 @@ func (c *Client) CreateEntitlementWithBody(ctx context.Context, subjectIdOrKey S return c.Client.Do(req) } -func (c *Client) CreateEntitlement(ctx context.Context, subjectIdOrKey SubjectIdOrKey, body CreateEntitlementJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateEntitlementRequest(c.Server, subjectIdOrKey, body) +func (c *Client) GetNotificationRule(ctx context.Context, ruleId RuleId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetNotificationRuleRequest(c.Server, ruleId) if err != nil { return nil, err } @@ -2060,8 +2760,8 @@ func (c *Client) CreateEntitlement(ctx context.Context, subjectIdOrKey SubjectId return c.Client.Do(req) } -func (c *Client) ListEntitlementGrants(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *ListEntitlementGrantsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListEntitlementGrantsRequest(c.Server, subjectIdOrKey, entitlementIdOrFeatureKey, params) +func (c *Client) UpdateNotificationRuleWithBody(ctx context.Context, ruleId RuleId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateNotificationRuleRequestWithBody(c.Server, ruleId, contentType, body) if err != nil { return nil, err } @@ -2072,8 +2772,8 @@ func (c *Client) ListEntitlementGrants(ctx context.Context, subjectIdOrKey Subje return c.Client.Do(req) } -func (c *Client) CreateGrantWithBody(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateGrantRequestWithBody(c.Server, subjectIdOrKey, entitlementIdOrFeatureKey, contentType, body) +func (c *Client) UpdateNotificationRule(ctx context.Context, ruleId RuleId, body UpdateNotificationRuleJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateNotificationRuleRequest(c.Server, ruleId, body) if err != nil { return nil, err } @@ -2084,8 +2784,8 @@ func (c *Client) CreateGrantWithBody(ctx context.Context, subjectIdOrKey Subject return c.Client.Do(req) } -func (c *Client) CreateGrant(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, body CreateGrantJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateGrantRequest(c.Server, subjectIdOrKey, entitlementIdOrFeatureKey, body) +func (c *Client) QueryPortalMeter(ctx context.Context, meterSlug string, params *QueryPortalMeterParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewQueryPortalMeterRequest(c.Server, meterSlug, params) if err != nil { return nil, err } @@ -2096,8 +2796,8 @@ func (c *Client) CreateGrant(ctx context.Context, subjectIdOrKey SubjectIdOrKey, return c.Client.Do(req) } -func (c *Client) GetEntitlementValue(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *GetEntitlementValueParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetEntitlementValueRequest(c.Server, subjectIdOrKey, entitlementIdOrFeatureKey, params) +func (c *Client) ListPortalTokens(ctx context.Context, params *ListPortalTokensParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListPortalTokensRequest(c.Server, params) if err != nil { return nil, err } @@ -2108,7 +2808,199 @@ func (c *Client) GetEntitlementValue(ctx context.Context, subjectIdOrKey Subject return c.Client.Do(req) } -func (c *Client) DeleteEntitlement(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, reqEditors ...RequestEditorFn) (*http.Response, error) { +func (c *Client) CreatePortalTokenWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreatePortalTokenRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CreatePortalToken(ctx context.Context, body CreatePortalTokenJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreatePortalTokenRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) InvalidatePortalTokensWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewInvalidatePortalTokensRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) InvalidatePortalTokens(ctx context.Context, body InvalidatePortalTokensJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewInvalidatePortalTokensRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) ListSubjects(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListSubjectsRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) UpsertSubjectWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpsertSubjectRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) UpsertSubject(ctx context.Context, body UpsertSubjectJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpsertSubjectRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) DeleteSubject(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteSubjectRequest(c.Server, subjectIdOrKey) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GetSubject(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetSubjectRequest(c.Server, subjectIdOrKey) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) ListSubjectEntitlements(ctx context.Context, subjectIdOrKey SubjectIdOrKey, params *ListSubjectEntitlementsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListSubjectEntitlementsRequest(c.Server, subjectIdOrKey, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CreateEntitlementWithBody(ctx context.Context, subjectIdOrKey SubjectIdOrKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateEntitlementRequestWithBody(c.Server, subjectIdOrKey, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CreateEntitlement(ctx context.Context, subjectIdOrKey SubjectIdOrKey, body CreateEntitlementJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateEntitlementRequest(c.Server, subjectIdOrKey, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) ListEntitlementGrants(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *ListEntitlementGrantsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListEntitlementGrantsRequest(c.Server, subjectIdOrKey, entitlementIdOrFeatureKey, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CreateGrantWithBody(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateGrantRequestWithBody(c.Server, subjectIdOrKey, entitlementIdOrFeatureKey, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CreateGrant(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, body CreateGrantJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateGrantRequest(c.Server, subjectIdOrKey, entitlementIdOrFeatureKey, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GetEntitlementValue(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *GetEntitlementValueParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetEntitlementValueRequest(c.Server, subjectIdOrKey, entitlementIdOrFeatureKey, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) DeleteEntitlement(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewDeleteEntitlementRequest(c.Server, subjectIdOrKey, entitlementId) if err != nil { return nil, err @@ -3065,23 +3957,16 @@ func NewListMeterSubjectsRequest(server string, meterIdOrSlug MeterIdOrSlug) (*h return req, nil } -// NewQueryPortalMeterRequest generates requests for QueryPortalMeter -func NewQueryPortalMeterRequest(server string, meterSlug string, params *QueryPortalMeterParams) (*http.Request, error) { +// NewListNotificationChannelsRequest generates requests for ListNotificationChannels +func NewListNotificationChannelsRequest(server string, params *ListNotificationChannelsParams) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "meterSlug", runtime.ParamLocationPath, meterSlug) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/v1/portal/meters/%s/query", pathParam0) + operationPath := fmt.Sprintf("/api/v1/notification/channels") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3094,41 +3979,9 @@ func NewQueryPortalMeterRequest(server string, meterSlug string, params *QueryPo if params != nil { queryValues := queryURL.Query() - if params.From != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "from", runtime.ParamLocationQuery, *params.From); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.To != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "to", runtime.ParamLocationQuery, *params.To); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.WindowSize != nil { + if params.Limit != nil { - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "windowSize", runtime.ParamLocationQuery, *params.WindowSize); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -3142,9 +3995,9 @@ func NewQueryPortalMeterRequest(server string, meterSlug string, params *QueryPo } - if params.WindowTimeZone != nil { + if params.Offset != nil { - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "windowTimeZone", runtime.ParamLocationQuery, *params.WindowTimeZone); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -3158,9 +4011,9 @@ func NewQueryPortalMeterRequest(server string, meterSlug string, params *QueryPo } - if params.FilterGroupBy != nil { + if params.OrderBy != nil { - if queryFrag, err := runtime.StyleParamWithLocation("deepObject", true, "filterGroupBy", runtime.ParamLocationQuery, *params.FilterGroupBy); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orderBy", runtime.ParamLocationQuery, *params.OrderBy); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -3174,9 +4027,9 @@ func NewQueryPortalMeterRequest(server string, meterSlug string, params *QueryPo } - if params.GroupBy != nil { + if params.IncludeDisabled != nil { - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "groupBy", runtime.ParamLocationQuery, *params.GroupBy); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "includeDisabled", runtime.ParamLocationQuery, *params.IncludeDisabled); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -3201,68 +4054,19 @@ func NewQueryPortalMeterRequest(server string, meterSlug string, params *QueryPo return req, nil } -// NewListPortalTokensRequest generates requests for ListPortalTokens -func NewListPortalTokensRequest(server string, params *ListPortalTokensParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/v1/portal/tokens") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - if params != nil { - queryValues := queryURL.Query() - - if params.Limit != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewCreatePortalTokenRequest calls the generic CreatePortalToken builder with application/json body -func NewCreatePortalTokenRequest(server string, body CreatePortalTokenJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) +// NewCreateNotificationChannelRequest calls the generic CreateNotificationChannel builder with application/json body +func NewCreateNotificationChannelRequest(server string, body CreateNotificationChannelJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewCreatePortalTokenRequestWithBody(server, "application/json", bodyReader) + return NewCreateNotificationChannelRequestWithBody(server, "application/json", bodyReader) } -// NewCreatePortalTokenRequestWithBody generates requests for CreatePortalToken with any type of body -func NewCreatePortalTokenRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewCreateNotificationChannelRequestWithBody generates requests for CreateNotificationChannel with any type of body +func NewCreateNotificationChannelRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -3270,7 +4074,7 @@ func NewCreatePortalTokenRequestWithBody(server string, contentType string, body return nil, err } - operationPath := fmt.Sprintf("/api/v1/portal/tokens") + operationPath := fmt.Sprintf("/api/v1/notification/channels") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3290,27 +4094,23 @@ func NewCreatePortalTokenRequestWithBody(server string, contentType string, body return req, nil } -// NewInvalidatePortalTokensRequest calls the generic InvalidatePortalTokens builder with application/json body -func NewInvalidatePortalTokensRequest(server string, body InvalidatePortalTokensJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) +// NewDeleteNotificationChannelRequest generates requests for DeleteNotificationChannel +func NewDeleteNotificationChannelRequest(server string, channelId ChannelId) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "channelId", runtime.ParamLocationPath, channelId) if err != nil { return nil, err } - bodyReader = bytes.NewReader(buf) - return NewInvalidatePortalTokensRequestWithBody(server, "application/json", bodyReader) -} - -// NewInvalidatePortalTokensRequestWithBody generates requests for InvalidatePortalTokens with any type of body -func NewInvalidatePortalTokensRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/v1/portal/tokens/invalidate") + operationPath := fmt.Sprintf("/api/v1/notification/channels/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3320,26 +4120,31 @@ func NewInvalidatePortalTokensRequestWithBody(server string, contentType string, return nil, err } - req, err := http.NewRequest("POST", queryURL.String(), body) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -// NewListSubjectsRequest generates requests for ListSubjects -func NewListSubjectsRequest(server string) (*http.Request, error) { +// NewGetNotificationChannelRequest generates requests for GetNotificationChannel +func NewGetNotificationChannelRequest(server string, channelId ChannelId) (*http.Request, error) { var err error + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "channelId", runtime.ParamLocationPath, channelId) + if err != nil { + return nil, err + } + serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects") + operationPath := fmt.Sprintf("/api/v1/notification/channels/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3357,53 +4162,24 @@ func NewListSubjectsRequest(server string) (*http.Request, error) { return req, nil } -// NewUpsertSubjectRequest calls the generic UpsertSubject builder with application/json body -func NewUpsertSubjectRequest(server string, body UpsertSubjectJSONRequestBody) (*http.Request, error) { +// NewUpdateNotificationChannelRequest calls the generic UpdateNotificationChannel builder with application/json body +func NewUpdateNotificationChannelRequest(server string, channelId ChannelId, body UpdateNotificationChannelJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewUpsertSubjectRequestWithBody(server, "application/json", bodyReader) -} - -// NewUpsertSubjectRequestWithBody generates requests for UpsertSubject with any type of body -func NewUpsertSubjectRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/v1/subjects") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil + return NewUpdateNotificationChannelRequestWithBody(server, channelId, "application/json", bodyReader) } -// NewDeleteSubjectRequest generates requests for DeleteSubject -func NewDeleteSubjectRequest(server string, subjectIdOrKey SubjectIdOrKey) (*http.Request, error) { +// NewUpdateNotificationChannelRequestWithBody generates requests for UpdateNotificationChannel with any type of body +func NewUpdateNotificationChannelRequestWithBody(server string, channelId ChannelId, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "channelId", runtime.ParamLocationPath, channelId) if err != nil { return nil, err } @@ -3413,7 +4189,7 @@ func NewDeleteSubjectRequest(server string, subjectIdOrKey SubjectIdOrKey) (*htt return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects/%s", pathParam0) + operationPath := fmt.Sprintf("/api/v1/notification/channels/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3423,31 +4199,26 @@ func NewDeleteSubjectRequest(server string, subjectIdOrKey SubjectIdOrKey) (*htt return nil, err } - req, err := http.NewRequest("DELETE", queryURL.String(), nil) + req, err := http.NewRequest("PUT", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewGetSubjectRequest generates requests for GetSubject -func NewGetSubjectRequest(server string, subjectIdOrKey SubjectIdOrKey) (*http.Request, error) { +// NewListNotificationEventsRequest generates requests for ListNotificationEvents +func NewListNotificationEventsRequest(server string, params *ListNotificationEventsParams) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects/%s", pathParam0) + operationPath := fmt.Sprintf("/api/v1/notification/events") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3457,46 +4228,76 @@ func NewGetSubjectRequest(server string, subjectIdOrKey SubjectIdOrKey) (*http.R return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } + if params != nil { + queryValues := queryURL.Query() - return req, nil -} + if params.Limit != nil { -// NewListSubjectEntitlementsRequest generates requests for ListSubjectEntitlements -func NewListSubjectEntitlementsRequest(server string, subjectIdOrKey SubjectIdOrKey, params *ListSubjectEntitlementsParams) (*http.Request, error) { - var err error + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - var pathParam0 string + } - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) - if err != nil { - return nil, err - } + if params.Offset != nil { - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + } - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } + if params.OrderBy != nil { - if params != nil { - queryValues := queryURL.Query() + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orderBy", runtime.ParamLocationQuery, *params.OrderBy); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - if params.IncludeDeleted != nil { + } - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "includeDeleted", runtime.ParamLocationQuery, *params.IncludeDeleted); err != nil { + if params.Feature != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "feature", runtime.ParamLocationQuery, *params.Feature); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Subject != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "subject", runtime.ParamLocationQuery, *params.Subject); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -3521,24 +4322,13 @@ func NewListSubjectEntitlementsRequest(server string, subjectIdOrKey SubjectIdOr return req, nil } -// NewCreateEntitlementRequest calls the generic CreateEntitlement builder with application/json body -func NewCreateEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, body CreateEntitlementJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewCreateEntitlementRequestWithBody(server, subjectIdOrKey, "application/json", bodyReader) -} - -// NewCreateEntitlementRequestWithBody generates requests for CreateEntitlement with any type of body -func NewCreateEntitlementRequestWithBody(server string, subjectIdOrKey SubjectIdOrKey, contentType string, body io.Reader) (*http.Request, error) { +// NewGetNotificationEventRequest generates requests for GetNotificationEvent +func NewGetNotificationEventRequest(server string, eventId EventId) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "eventId", runtime.ParamLocationPath, eventId) if err != nil { return nil, err } @@ -3548,7 +4338,7 @@ func NewCreateEntitlementRequestWithBody(server string, subjectIdOrKey SubjectId return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements", pathParam0) + operationPath := fmt.Sprintf("/api/v1/notification/events/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3558,40 +4348,24 @@ func NewCreateEntitlementRequestWithBody(server string, subjectIdOrKey SubjectId return nil, err } - req, err := http.NewRequest("POST", queryURL.String(), body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -// NewListEntitlementGrantsRequest generates requests for ListEntitlementGrants -func NewListEntitlementGrantsRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *ListEntitlementGrantsParams) (*http.Request, error) { +// NewListNotificationRulesRequest generates requests for ListNotificationRules +func NewListNotificationRulesRequest(server string, params *ListNotificationRulesParams) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementIdOrFeatureKey", runtime.ParamLocationPath, entitlementIdOrFeatureKey) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s/grants", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/api/v1/notification/rules") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3604,9 +4378,25 @@ func NewListEntitlementGrantsRequest(server string, subjectIdOrKey SubjectIdOrKe if params != nil { queryValues := queryURL.Query() - if params.IncludeDeleted != nil { + if params.Limit != nil { - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "includeDeleted", runtime.ParamLocationQuery, *params.IncludeDeleted); err != nil { + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Offset != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -3636,6 +4426,38 @@ func NewListEntitlementGrantsRequest(server string, subjectIdOrKey SubjectIdOrKe } + if params.IncludeDisabled != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "includeDisabled", runtime.ParamLocationQuery, *params.IncludeDisabled); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Feature != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "feature", runtime.ParamLocationQuery, *params.Feature); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + queryURL.RawQuery = queryValues.Encode() } @@ -3647,41 +4469,27 @@ func NewListEntitlementGrantsRequest(server string, subjectIdOrKey SubjectIdOrKe return req, nil } -// NewCreateGrantRequest calls the generic CreateGrant builder with application/json body -func NewCreateGrantRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, body CreateGrantJSONRequestBody) (*http.Request, error) { +// NewCreateNotificationRuleRequest calls the generic CreateNotificationRule builder with application/json body +func NewCreateNotificationRuleRequest(server string, body CreateNotificationRuleJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewCreateGrantRequestWithBody(server, subjectIdOrKey, entitlementIdOrFeatureKey, "application/json", bodyReader) + return NewCreateNotificationRuleRequestWithBody(server, "application/json", bodyReader) } -// NewCreateGrantRequestWithBody generates requests for CreateGrant with any type of body -func NewCreateGrantRequestWithBody(server string, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, contentType string, body io.Reader) (*http.Request, error) { +// NewCreateNotificationRuleRequestWithBody generates requests for CreateNotificationRule with any type of body +func NewCreateNotificationRuleRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementIdOrFeatureKey", runtime.ParamLocationPath, entitlementIdOrFeatureKey) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s/grants", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/api/v1/notification/rules") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3701,20 +4509,13 @@ func NewCreateGrantRequestWithBody(server string, subjectIdOrKey SubjectIdOrKey, return req, nil } -// NewGetEntitlementValueRequest generates requests for GetEntitlementValue -func NewGetEntitlementValueRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *GetEntitlementValueParams) (*http.Request, error) { +// NewDeleteNotificationRuleRequest generates requests for DeleteNotificationRule +func NewDeleteNotificationRuleRequest(server string, ruleId RuleId) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementIdOrFeatureKey", runtime.ParamLocationPath, entitlementIdOrFeatureKey) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleId", runtime.ParamLocationPath, ruleId) if err != nil { return nil, err } @@ -3724,7 +4525,7 @@ func NewGetEntitlementValueRequest(server string, subjectIdOrKey SubjectIdOrKey, return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s/value", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/api/v1/notification/rules/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3734,29 +4535,7 @@ func NewGetEntitlementValueRequest(server string, subjectIdOrKey SubjectIdOrKey, return nil, err } - if params != nil { - queryValues := queryURL.Query() - - if params.Time != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "time", runtime.ParamLocationQuery, *params.Time); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) if err != nil { return nil, err } @@ -3764,20 +4543,13 @@ func NewGetEntitlementValueRequest(server string, subjectIdOrKey SubjectIdOrKey, return req, nil } -// NewDeleteEntitlementRequest generates requests for DeleteEntitlement -func NewDeleteEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId) (*http.Request, error) { +// NewGetNotificationRuleRequest generates requests for GetNotificationRule +func NewGetNotificationRuleRequest(server string, ruleId RuleId) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementId", runtime.ParamLocationPath, entitlementId) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleId", runtime.ParamLocationPath, ruleId) if err != nil { return nil, err } @@ -3787,7 +4559,7 @@ func NewDeleteEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, e return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/api/v1/notification/rules/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3797,7 +4569,7 @@ func NewDeleteEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, e return nil, err } - req, err := http.NewRequest("DELETE", queryURL.String(), nil) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } @@ -3805,20 +4577,24 @@ func NewDeleteEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, e return req, nil } -// NewGetEntitlementRequest generates requests for GetEntitlement -func NewGetEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) +// NewUpdateNotificationRuleRequest calls the generic UpdateNotificationRule builder with application/json body +func NewUpdateNotificationRuleRequest(server string, ruleId RuleId, body UpdateNotificationRuleJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) + return NewUpdateNotificationRuleRequestWithBody(server, ruleId, "application/json", bodyReader) +} - var pathParam1 string +// NewUpdateNotificationRuleRequestWithBody generates requests for UpdateNotificationRule with any type of body +func NewUpdateNotificationRuleRequestWithBody(server string, ruleId RuleId, contentType string, body io.Reader) (*http.Request, error) { + var err error - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementId", runtime.ParamLocationPath, entitlementId) + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "ruleId", runtime.ParamLocationPath, ruleId) if err != nil { return nil, err } @@ -3828,7 +4604,7 @@ func NewGetEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, enti return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/api/v1/notification/rules/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3838,28 +4614,23 @@ func NewGetEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, enti return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("PUT", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewGetEntitlementHistoryRequest generates requests for GetEntitlementHistory -func NewGetEntitlementHistoryRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, params *GetEntitlementHistoryParams) (*http.Request, error) { +// NewQueryPortalMeterRequest generates requests for QueryPortalMeter +func NewQueryPortalMeterRequest(server string, meterSlug string, params *QueryPortalMeterParams) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementId", runtime.ParamLocationPath, entitlementId) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "meterSlug", runtime.ParamLocationPath, meterSlug) if err != nil { return nil, err } @@ -3869,7 +4640,7 @@ func NewGetEntitlementHistoryRequest(server string, subjectIdOrKey SubjectIdOrKe return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s/history", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/api/v1/portal/meters/%s/query", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3914,16 +4685,20 @@ func NewGetEntitlementHistoryRequest(server string, subjectIdOrKey SubjectIdOrKe } - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "windowSize", runtime.ParamLocationQuery, params.WindowSize); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) + if params.WindowSize != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "windowSize", runtime.ParamLocationQuery, *params.WindowSize); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } } } + } if params.WindowTimeZone != nil { @@ -3942,6 +4717,38 @@ func NewGetEntitlementHistoryRequest(server string, subjectIdOrKey SubjectIdOrKe } + if params.FilterGroupBy != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("deepObject", true, "filterGroupBy", runtime.ParamLocationQuery, *params.FilterGroupBy); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.GroupBy != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "groupBy", runtime.ParamLocationQuery, *params.GroupBy); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + queryURL.RawQuery = queryValues.Encode() } @@ -3953,41 +4760,16 @@ func NewGetEntitlementHistoryRequest(server string, subjectIdOrKey SubjectIdOrKe return req, nil } -// NewResetEntitlementUsageRequest calls the generic ResetEntitlementUsage builder with application/json body -func NewResetEntitlementUsageRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, body ResetEntitlementUsageJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewResetEntitlementUsageRequestWithBody(server, subjectIdOrKey, entitlementId, "application/json", bodyReader) -} - -// NewResetEntitlementUsageRequestWithBody generates requests for ResetEntitlementUsage with any type of body -func NewResetEntitlementUsageRequestWithBody(server string, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, contentType string, body io.Reader) (*http.Request, error) { +// NewListPortalTokensRequest generates requests for ListPortalTokens +func NewListPortalTokensRequest(server string, params *ListPortalTokensParams) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementId", runtime.ParamLocationPath, entitlementId) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s/reset", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/api/v1/portal/tokens") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -3997,386 +4779,1582 @@ func NewResetEntitlementUsageRequestWithBody(server string, subjectIdOrKey Subje return nil, err } - req, err := http.NewRequest("POST", queryURL.String(), body) + if params != nil { + queryValues := queryURL.Query() + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error { - for _, r := range c.RequestEditors { - if err := r(ctx, req); err != nil { - return err - } - } - for _, r := range additionalEditors { - if err := r(ctx, req); err != nil { - return err - } +// NewCreatePortalTokenRequest calls the generic CreatePortalToken builder with application/json body +func NewCreatePortalTokenRequest(server string, body CreatePortalTokenJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err } - return nil + bodyReader = bytes.NewReader(buf) + return NewCreatePortalTokenRequestWithBody(server, "application/json", bodyReader) } -// ClientWithResponses builds on ClientInterface to offer response payloads -type ClientWithResponses struct { - ClientInterface -} +// NewCreatePortalTokenRequestWithBody generates requests for CreatePortalToken with any type of body +func NewCreatePortalTokenRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error -// NewClientWithResponses creates a new ClientWithResponses, which wraps -// Client with return type handling -func NewClientWithResponses(server string, opts ...ClientOption) (*ClientWithResponses, error) { - client, err := NewClient(server, opts...) + serverURL, err := url.Parse(server) if err != nil { return nil, err } - return &ClientWithResponses{client}, nil -} -// WithBaseURL overrides the baseURL. -func WithBaseURL(baseURL string) ClientOption { - return func(c *Client) error { - newBaseURL, err := url.Parse(baseURL) - if err != nil { - return err - } - c.Server = newBaseURL.String() - return nil + operationPath := fmt.Sprintf("/api/v1/portal/tokens") + if operationPath[0] == '/' { + operationPath = "." + operationPath } -} -// ClientWithResponsesInterface is the interface specification for the client with responses above. -type ClientWithResponsesInterface interface { - // GetDebugMetricsWithResponse request - GetDebugMetricsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetDebugMetricsResponse, error) - - // ListEntitlementsWithResponse request - ListEntitlementsWithResponse(ctx context.Context, params *ListEntitlementsParams, reqEditors ...RequestEditorFn) (*ListEntitlementsResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // ListEventsWithResponse request - ListEventsWithResponse(ctx context.Context, params *ListEventsParams, reqEditors ...RequestEditorFn) (*ListEventsResponse, error) + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } - // IngestEventsWithBodyWithResponse request with any body - IngestEventsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) + req.Header.Add("Content-Type", contentType) - IngestEventsWithApplicationCloudeventsPlusJSONBodyWithResponse(ctx context.Context, body IngestEventsApplicationCloudeventsPlusJSONRequestBody, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) + return req, nil +} - IngestEventsWithApplicationCloudeventsBatchPlusJSONBodyWithResponse(ctx context.Context, body IngestEventsApplicationCloudeventsBatchPlusJSONRequestBody, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) +// NewInvalidatePortalTokensRequest calls the generic InvalidatePortalTokens builder with application/json body +func NewInvalidatePortalTokensRequest(server string, body InvalidatePortalTokensJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewInvalidatePortalTokensRequestWithBody(server, "application/json", bodyReader) +} - // ListFeaturesWithResponse request - ListFeaturesWithResponse(ctx context.Context, params *ListFeaturesParams, reqEditors ...RequestEditorFn) (*ListFeaturesResponse, error) +// NewInvalidatePortalTokensRequestWithBody generates requests for InvalidatePortalTokens with any type of body +func NewInvalidatePortalTokensRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error - // CreateFeatureWithBodyWithResponse request with any body - CreateFeatureWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateFeatureResponse, error) + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - CreateFeatureWithResponse(ctx context.Context, body CreateFeatureJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateFeatureResponse, error) + operationPath := fmt.Sprintf("/api/v1/portal/tokens/invalidate") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - // DeleteFeatureWithResponse request - DeleteFeatureWithResponse(ctx context.Context, featureId FeatureId, reqEditors ...RequestEditorFn) (*DeleteFeatureResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // GetFeatureWithResponse request - GetFeatureWithResponse(ctx context.Context, featureId FeatureId, reqEditors ...RequestEditorFn) (*GetFeatureResponse, error) + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } - // ListGrantsWithResponse request - ListGrantsWithResponse(ctx context.Context, params *ListGrantsParams, reqEditors ...RequestEditorFn) (*ListGrantsResponse, error) + req.Header.Add("Content-Type", contentType) - // VoidGrantWithResponse request - VoidGrantWithResponse(ctx context.Context, grantId GrantId, reqEditors ...RequestEditorFn) (*VoidGrantResponse, error) + return req, nil +} - // ListMetersWithResponse request - ListMetersWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListMetersResponse, error) +// NewListSubjectsRequest generates requests for ListSubjects +func NewListSubjectsRequest(server string) (*http.Request, error) { + var err error - // CreateMeterWithBodyWithResponse request with any body - CreateMeterWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateMeterResponse, error) + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - CreateMeterWithResponse(ctx context.Context, body CreateMeterJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateMeterResponse, error) + operationPath := fmt.Sprintf("/api/v1/subjects") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - // DeleteMeterWithResponse request - DeleteMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*DeleteMeterResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // GetMeterWithResponse request - GetMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*GetMeterResponse, error) + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - // QueryMeterWithResponse request - QueryMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, params *QueryMeterParams, reqEditors ...RequestEditorFn) (*QueryMeterResponse, error) + return req, nil +} - // ListMeterSubjectsWithResponse request - ListMeterSubjectsWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*ListMeterSubjectsResponse, error) +// NewUpsertSubjectRequest calls the generic UpsertSubject builder with application/json body +func NewUpsertSubjectRequest(server string, body UpsertSubjectJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpsertSubjectRequestWithBody(server, "application/json", bodyReader) +} - // QueryPortalMeterWithResponse request - QueryPortalMeterWithResponse(ctx context.Context, meterSlug string, params *QueryPortalMeterParams, reqEditors ...RequestEditorFn) (*QueryPortalMeterResponse, error) +// NewUpsertSubjectRequestWithBody generates requests for UpsertSubject with any type of body +func NewUpsertSubjectRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error - // ListPortalTokensWithResponse request - ListPortalTokensWithResponse(ctx context.Context, params *ListPortalTokensParams, reqEditors ...RequestEditorFn) (*ListPortalTokensResponse, error) + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - // CreatePortalTokenWithBodyWithResponse request with any body - CreatePortalTokenWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreatePortalTokenResponse, error) + operationPath := fmt.Sprintf("/api/v1/subjects") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - CreatePortalTokenWithResponse(ctx context.Context, body CreatePortalTokenJSONRequestBody, reqEditors ...RequestEditorFn) (*CreatePortalTokenResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // InvalidatePortalTokensWithBodyWithResponse request with any body - InvalidatePortalTokensWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*InvalidatePortalTokensResponse, error) + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } - InvalidatePortalTokensWithResponse(ctx context.Context, body InvalidatePortalTokensJSONRequestBody, reqEditors ...RequestEditorFn) (*InvalidatePortalTokensResponse, error) + req.Header.Add("Content-Type", contentType) - // ListSubjectsWithResponse request - ListSubjectsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListSubjectsResponse, error) + return req, nil +} - // UpsertSubjectWithBodyWithResponse request with any body - UpsertSubjectWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpsertSubjectResponse, error) +// NewDeleteSubjectRequest generates requests for DeleteSubject +func NewDeleteSubjectRequest(server string, subjectIdOrKey SubjectIdOrKey) (*http.Request, error) { + var err error - UpsertSubjectWithResponse(ctx context.Context, body UpsertSubjectJSONRequestBody, reqEditors ...RequestEditorFn) (*UpsertSubjectResponse, error) + var pathParam0 string - // DeleteSubjectWithResponse request - DeleteSubjectWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*DeleteSubjectResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err + } - // GetSubjectWithResponse request - GetSubjectWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*GetSubjectResponse, error) + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - // ListSubjectEntitlementsWithResponse request - ListSubjectEntitlementsWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, params *ListSubjectEntitlementsParams, reqEditors ...RequestEditorFn) (*ListSubjectEntitlementsResponse, error) + operationPath := fmt.Sprintf("/api/v1/subjects/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - // CreateEntitlementWithBodyWithResponse request with any body - CreateEntitlementWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateEntitlementResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - CreateEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, body CreateEntitlementJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateEntitlementResponse, error) + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return nil, err + } - // ListEntitlementGrantsWithResponse request - ListEntitlementGrantsWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *ListEntitlementGrantsParams, reqEditors ...RequestEditorFn) (*ListEntitlementGrantsResponse, error) + return req, nil +} - // CreateGrantWithBodyWithResponse request with any body - CreateGrantWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateGrantResponse, error) +// NewGetSubjectRequest generates requests for GetSubject +func NewGetSubjectRequest(server string, subjectIdOrKey SubjectIdOrKey) (*http.Request, error) { + var err error - CreateGrantWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, body CreateGrantJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateGrantResponse, error) + var pathParam0 string - // GetEntitlementValueWithResponse request - GetEntitlementValueWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *GetEntitlementValueParams, reqEditors ...RequestEditorFn) (*GetEntitlementValueResponse, error) + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err + } - // DeleteEntitlementWithResponse request - DeleteEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, reqEditors ...RequestEditorFn) (*DeleteEntitlementResponse, error) + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - // GetEntitlementWithResponse request - GetEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, reqEditors ...RequestEditorFn) (*GetEntitlementResponse, error) + operationPath := fmt.Sprintf("/api/v1/subjects/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - // GetEntitlementHistoryWithResponse request - GetEntitlementHistoryWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, params *GetEntitlementHistoryParams, reqEditors ...RequestEditorFn) (*GetEntitlementHistoryResponse, error) + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - // ResetEntitlementUsageWithBodyWithResponse request with any body - ResetEntitlementUsageWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*ResetEntitlementUsageResponse, error) + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - ResetEntitlementUsageWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, body ResetEntitlementUsageJSONRequestBody, reqEditors ...RequestEditorFn) (*ResetEntitlementUsageResponse, error) + return req, nil } -type GetDebugMetricsResponse struct { - Body []byte - HTTPResponse *http.Response - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse -} +// NewListSubjectEntitlementsRequest generates requests for ListSubjectEntitlements +func NewListSubjectEntitlementsRequest(server string, subjectIdOrKey SubjectIdOrKey, params *ListSubjectEntitlementsParams) (*http.Request, error) { + var err error -// Status returns HTTPResponse.Status -func (r GetDebugMetricsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + var pathParam0 string -// StatusCode returns HTTPResponse.StatusCode -func (r GetDebugMetricsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err } - return 0 -} -type ListEntitlementsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *[]Entitlement - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse -} + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } -// Status returns HTTPResponse.Status -func (r ListEntitlementsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r ListEntitlementsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return 0 -} -type ListEventsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *[]IngestedEvent - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse -} + if params != nil { + queryValues := queryURL.Query() -// Status returns HTTPResponse.Status -func (r ListEventsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} + if params.IncludeDeleted != nil { -// StatusCode returns HTTPResponse.StatusCode -func (r ListEventsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "includeDeleted", runtime.ParamLocationQuery, *params.IncludeDeleted); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -type IngestEventsResponse struct { - Body []byte - HTTPResponse *http.Response - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse -} + } -// Status returns HTTPResponse.Status -func (r IngestEventsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL.RawQuery = queryValues.Encode() } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r IngestEventsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err } - return 0 -} -type ListFeaturesResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *[]Feature - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse + return req, nil } -// Status returns HTTPResponse.Status -func (r ListFeaturesResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// NewCreateEntitlementRequest calls the generic CreateEntitlement builder with application/json body +func NewCreateEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, body CreateEntitlementJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err } - return http.StatusText(0) + bodyReader = bytes.NewReader(buf) + return NewCreateEntitlementRequestWithBody(server, subjectIdOrKey, "application/json", bodyReader) } -// StatusCode returns HTTPResponse.StatusCode -func (r ListFeaturesResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} +// NewCreateEntitlementRequestWithBody generates requests for CreateEntitlement with any type of body +func NewCreateEntitlementRequestWithBody(server string, subjectIdOrKey SubjectIdOrKey, contentType string, body io.Reader) (*http.Request, error) { + var err error -type CreateFeatureResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Feature - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON501 *NotImplementedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse -} + var pathParam0 string -// Status returns HTTPResponse.Status -func (r CreateFeatureResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r CreateFeatureResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + serverURL, err := url.Parse(server) + if err != nil { + return nil, err } - return 0 -} -type DeleteFeatureResponse struct { - Body []byte - HTTPResponse *http.Response - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON404 *NotFoundProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse -} + operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } -// Status returns HTTPResponse.Status -func (r DeleteFeatureResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - return http.StatusText(0) -} -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteFeatureResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err } - return 0 -} -type GetFeatureResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Feature - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON404 *NotFoundProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse -} + req.Header.Add("Content-Type", contentType) -// Status returns HTTPResponse.Status -func (r GetFeatureResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) + return req, nil } -// StatusCode returns HTTPResponse.StatusCode -func (r GetFeatureResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} +// NewListEntitlementGrantsRequest generates requests for ListEntitlementGrants +func NewListEntitlementGrantsRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *ListEntitlementGrantsParams) (*http.Request, error) { + var err error -type ListGrantsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *[]EntitlementGrant - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse -} + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementIdOrFeatureKey", runtime.ParamLocationPath, entitlementIdOrFeatureKey) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s/grants", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() + + if params.IncludeDeleted != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "includeDeleted", runtime.ParamLocationQuery, *params.IncludeDeleted); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.OrderBy != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "orderBy", runtime.ParamLocationQuery, *params.OrderBy); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateGrantRequest calls the generic CreateGrant builder with application/json body +func NewCreateGrantRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, body CreateGrantJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateGrantRequestWithBody(server, subjectIdOrKey, entitlementIdOrFeatureKey, "application/json", bodyReader) +} + +// NewCreateGrantRequestWithBody generates requests for CreateGrant with any type of body +func NewCreateGrantRequestWithBody(server string, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementIdOrFeatureKey", runtime.ParamLocationPath, entitlementIdOrFeatureKey) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s/grants", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewGetEntitlementValueRequest generates requests for GetEntitlementValue +func NewGetEntitlementValueRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *GetEntitlementValueParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementIdOrFeatureKey", runtime.ParamLocationPath, entitlementIdOrFeatureKey) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s/value", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() + + if params.Time != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "time", runtime.ParamLocationQuery, *params.Time); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewDeleteEntitlementRequest generates requests for DeleteEntitlement +func NewDeleteEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementId", runtime.ParamLocationPath, entitlementId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetEntitlementRequest generates requests for GetEntitlement +func NewGetEntitlementRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementId", runtime.ParamLocationPath, entitlementId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetEntitlementHistoryRequest generates requests for GetEntitlementHistory +func NewGetEntitlementHistoryRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, params *GetEntitlementHistoryParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementId", runtime.ParamLocationPath, entitlementId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s/history", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() + + if params.From != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "from", runtime.ParamLocationQuery, *params.From); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.To != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "to", runtime.ParamLocationQuery, *params.To); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "windowSize", runtime.ParamLocationQuery, params.WindowSize); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + if params.WindowTimeZone != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "windowTimeZone", runtime.ParamLocationQuery, *params.WindowTimeZone); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewResetEntitlementUsageRequest calls the generic ResetEntitlementUsage builder with application/json body +func NewResetEntitlementUsageRequest(server string, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, body ResetEntitlementUsageJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewResetEntitlementUsageRequestWithBody(server, subjectIdOrKey, entitlementId, "application/json", bodyReader) +} + +// NewResetEntitlementUsageRequestWithBody generates requests for ResetEntitlementUsage with any type of body +func NewResetEntitlementUsageRequestWithBody(server string, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "subjectIdOrKey", runtime.ParamLocationPath, subjectIdOrKey) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "entitlementId", runtime.ParamLocationPath, entitlementId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/v1/subjects/%s/entitlements/%s/reset", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error { + for _, r := range c.RequestEditors { + if err := r(ctx, req); err != nil { + return err + } + } + for _, r := range additionalEditors { + if err := r(ctx, req); err != nil { + return err + } + } + return nil +} + +// ClientWithResponses builds on ClientInterface to offer response payloads +type ClientWithResponses struct { + ClientInterface +} + +// NewClientWithResponses creates a new ClientWithResponses, which wraps +// Client with return type handling +func NewClientWithResponses(server string, opts ...ClientOption) (*ClientWithResponses, error) { + client, err := NewClient(server, opts...) + if err != nil { + return nil, err + } + return &ClientWithResponses{client}, nil +} + +// WithBaseURL overrides the baseURL. +func WithBaseURL(baseURL string) ClientOption { + return func(c *Client) error { + newBaseURL, err := url.Parse(baseURL) + if err != nil { + return err + } + c.Server = newBaseURL.String() + return nil + } +} + +// ClientWithResponsesInterface is the interface specification for the client with responses above. +type ClientWithResponsesInterface interface { + // GetDebugMetricsWithResponse request + GetDebugMetricsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetDebugMetricsResponse, error) + + // ListEntitlementsWithResponse request + ListEntitlementsWithResponse(ctx context.Context, params *ListEntitlementsParams, reqEditors ...RequestEditorFn) (*ListEntitlementsResponse, error) + + // ListEventsWithResponse request + ListEventsWithResponse(ctx context.Context, params *ListEventsParams, reqEditors ...RequestEditorFn) (*ListEventsResponse, error) + + // IngestEventsWithBodyWithResponse request with any body + IngestEventsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) + + IngestEventsWithApplicationCloudeventsPlusJSONBodyWithResponse(ctx context.Context, body IngestEventsApplicationCloudeventsPlusJSONRequestBody, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) + + IngestEventsWithApplicationCloudeventsBatchPlusJSONBodyWithResponse(ctx context.Context, body IngestEventsApplicationCloudeventsBatchPlusJSONRequestBody, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) + + // ListFeaturesWithResponse request + ListFeaturesWithResponse(ctx context.Context, params *ListFeaturesParams, reqEditors ...RequestEditorFn) (*ListFeaturesResponse, error) + + // CreateFeatureWithBodyWithResponse request with any body + CreateFeatureWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateFeatureResponse, error) + + CreateFeatureWithResponse(ctx context.Context, body CreateFeatureJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateFeatureResponse, error) + + // DeleteFeatureWithResponse request + DeleteFeatureWithResponse(ctx context.Context, featureId FeatureId, reqEditors ...RequestEditorFn) (*DeleteFeatureResponse, error) + + // GetFeatureWithResponse request + GetFeatureWithResponse(ctx context.Context, featureId FeatureId, reqEditors ...RequestEditorFn) (*GetFeatureResponse, error) + + // ListGrantsWithResponse request + ListGrantsWithResponse(ctx context.Context, params *ListGrantsParams, reqEditors ...RequestEditorFn) (*ListGrantsResponse, error) + + // VoidGrantWithResponse request + VoidGrantWithResponse(ctx context.Context, grantId GrantId, reqEditors ...RequestEditorFn) (*VoidGrantResponse, error) + + // ListMetersWithResponse request + ListMetersWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListMetersResponse, error) + + // CreateMeterWithBodyWithResponse request with any body + CreateMeterWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateMeterResponse, error) + + CreateMeterWithResponse(ctx context.Context, body CreateMeterJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateMeterResponse, error) + + // DeleteMeterWithResponse request + DeleteMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*DeleteMeterResponse, error) + + // GetMeterWithResponse request + GetMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*GetMeterResponse, error) + + // QueryMeterWithResponse request + QueryMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, params *QueryMeterParams, reqEditors ...RequestEditorFn) (*QueryMeterResponse, error) + + // ListMeterSubjectsWithResponse request + ListMeterSubjectsWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*ListMeterSubjectsResponse, error) + + // ListNotificationChannelsWithResponse request + ListNotificationChannelsWithResponse(ctx context.Context, params *ListNotificationChannelsParams, reqEditors ...RequestEditorFn) (*ListNotificationChannelsResponse, error) + + // CreateNotificationChannelWithBodyWithResponse request with any body + CreateNotificationChannelWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateNotificationChannelResponse, error) + + CreateNotificationChannelWithResponse(ctx context.Context, body CreateNotificationChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateNotificationChannelResponse, error) + + // DeleteNotificationChannelWithResponse request + DeleteNotificationChannelWithResponse(ctx context.Context, channelId ChannelId, reqEditors ...RequestEditorFn) (*DeleteNotificationChannelResponse, error) + + // GetNotificationChannelWithResponse request + GetNotificationChannelWithResponse(ctx context.Context, channelId ChannelId, reqEditors ...RequestEditorFn) (*GetNotificationChannelResponse, error) + + // UpdateNotificationChannelWithBodyWithResponse request with any body + UpdateNotificationChannelWithBodyWithResponse(ctx context.Context, channelId ChannelId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateNotificationChannelResponse, error) + + UpdateNotificationChannelWithResponse(ctx context.Context, channelId ChannelId, body UpdateNotificationChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateNotificationChannelResponse, error) + + // ListNotificationEventsWithResponse request + ListNotificationEventsWithResponse(ctx context.Context, params *ListNotificationEventsParams, reqEditors ...RequestEditorFn) (*ListNotificationEventsResponse, error) + + // GetNotificationEventWithResponse request + GetNotificationEventWithResponse(ctx context.Context, eventId EventId, reqEditors ...RequestEditorFn) (*GetNotificationEventResponse, error) + + // ListNotificationRulesWithResponse request + ListNotificationRulesWithResponse(ctx context.Context, params *ListNotificationRulesParams, reqEditors ...RequestEditorFn) (*ListNotificationRulesResponse, error) + + // CreateNotificationRuleWithBodyWithResponse request with any body + CreateNotificationRuleWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateNotificationRuleResponse, error) + + CreateNotificationRuleWithResponse(ctx context.Context, body CreateNotificationRuleJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateNotificationRuleResponse, error) + + // DeleteNotificationRuleWithResponse request + DeleteNotificationRuleWithResponse(ctx context.Context, ruleId RuleId, reqEditors ...RequestEditorFn) (*DeleteNotificationRuleResponse, error) + + // GetNotificationRuleWithResponse request + GetNotificationRuleWithResponse(ctx context.Context, ruleId RuleId, reqEditors ...RequestEditorFn) (*GetNotificationRuleResponse, error) + + // UpdateNotificationRuleWithBodyWithResponse request with any body + UpdateNotificationRuleWithBodyWithResponse(ctx context.Context, ruleId RuleId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateNotificationRuleResponse, error) + + UpdateNotificationRuleWithResponse(ctx context.Context, ruleId RuleId, body UpdateNotificationRuleJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateNotificationRuleResponse, error) + + // QueryPortalMeterWithResponse request + QueryPortalMeterWithResponse(ctx context.Context, meterSlug string, params *QueryPortalMeterParams, reqEditors ...RequestEditorFn) (*QueryPortalMeterResponse, error) + + // ListPortalTokensWithResponse request + ListPortalTokensWithResponse(ctx context.Context, params *ListPortalTokensParams, reqEditors ...RequestEditorFn) (*ListPortalTokensResponse, error) + + // CreatePortalTokenWithBodyWithResponse request with any body + CreatePortalTokenWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreatePortalTokenResponse, error) + + CreatePortalTokenWithResponse(ctx context.Context, body CreatePortalTokenJSONRequestBody, reqEditors ...RequestEditorFn) (*CreatePortalTokenResponse, error) + + // InvalidatePortalTokensWithBodyWithResponse request with any body + InvalidatePortalTokensWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*InvalidatePortalTokensResponse, error) + + InvalidatePortalTokensWithResponse(ctx context.Context, body InvalidatePortalTokensJSONRequestBody, reqEditors ...RequestEditorFn) (*InvalidatePortalTokensResponse, error) + + // ListSubjectsWithResponse request + ListSubjectsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListSubjectsResponse, error) + + // UpsertSubjectWithBodyWithResponse request with any body + UpsertSubjectWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpsertSubjectResponse, error) + + UpsertSubjectWithResponse(ctx context.Context, body UpsertSubjectJSONRequestBody, reqEditors ...RequestEditorFn) (*UpsertSubjectResponse, error) + + // DeleteSubjectWithResponse request + DeleteSubjectWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*DeleteSubjectResponse, error) + + // GetSubjectWithResponse request + GetSubjectWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*GetSubjectResponse, error) + + // ListSubjectEntitlementsWithResponse request + ListSubjectEntitlementsWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, params *ListSubjectEntitlementsParams, reqEditors ...RequestEditorFn) (*ListSubjectEntitlementsResponse, error) + + // CreateEntitlementWithBodyWithResponse request with any body + CreateEntitlementWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateEntitlementResponse, error) + + CreateEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, body CreateEntitlementJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateEntitlementResponse, error) + + // ListEntitlementGrantsWithResponse request + ListEntitlementGrantsWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *ListEntitlementGrantsParams, reqEditors ...RequestEditorFn) (*ListEntitlementGrantsResponse, error) + + // CreateGrantWithBodyWithResponse request with any body + CreateGrantWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateGrantResponse, error) + + CreateGrantWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, body CreateGrantJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateGrantResponse, error) + + // GetEntitlementValueWithResponse request + GetEntitlementValueWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *GetEntitlementValueParams, reqEditors ...RequestEditorFn) (*GetEntitlementValueResponse, error) + + // DeleteEntitlementWithResponse request + DeleteEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, reqEditors ...RequestEditorFn) (*DeleteEntitlementResponse, error) + + // GetEntitlementWithResponse request + GetEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, reqEditors ...RequestEditorFn) (*GetEntitlementResponse, error) + + // GetEntitlementHistoryWithResponse request + GetEntitlementHistoryWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, params *GetEntitlementHistoryParams, reqEditors ...RequestEditorFn) (*GetEntitlementHistoryResponse, error) + + // ResetEntitlementUsageWithBodyWithResponse request with any body + ResetEntitlementUsageWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*ResetEntitlementUsageResponse, error) + + ResetEntitlementUsageWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, body ResetEntitlementUsageJSONRequestBody, reqEditors ...RequestEditorFn) (*ResetEntitlementUsageResponse, error) +} + +type GetDebugMetricsResponse struct { + Body []byte + HTTPResponse *http.Response + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r GetDebugMetricsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetDebugMetricsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListEntitlementsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]Entitlement + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r ListEntitlementsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListEntitlementsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListEventsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]IngestedEvent + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r ListEventsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListEventsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type IngestEventsResponse struct { + Body []byte + HTTPResponse *http.Response + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r IngestEventsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r IngestEventsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListFeaturesResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]Feature + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r ListFeaturesResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListFeaturesResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateFeatureResponse struct { + Body []byte + HTTPResponse *http.Response + JSON201 *Feature + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON501 *NotImplementedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r CreateFeatureResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateFeatureResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteFeatureResponse struct { + Body []byte + HTTPResponse *http.Response + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r DeleteFeatureResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteFeatureResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetFeatureResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Feature + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r GetFeatureResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetFeatureResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListGrantsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]EntitlementGrant + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r ListGrantsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListGrantsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type VoidGrantResponse struct { + Body []byte + HTTPResponse *http.Response + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSON409 *ConflictProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r VoidGrantResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r VoidGrantResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListMetersResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]Meter + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r ListMetersResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListMetersResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateMeterResponse struct { + Body []byte + HTTPResponse *http.Response + JSON201 *Meter + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON501 *NotImplementedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r CreateMeterResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateMeterResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteMeterResponse struct { + Body []byte + HTTPResponse *http.Response + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSON501 *NotImplementedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r DeleteMeterResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteMeterResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetMeterResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Meter + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r GetMeterResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetMeterResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type QueryMeterResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *MeterQueryResult + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r QueryMeterResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r QueryMeterResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListMeterSubjectsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]string + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r ListMeterSubjectsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListMeterSubjectsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListNotificationChannelsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *NotificationChannels + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r ListNotificationChannelsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListNotificationChannelsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateNotificationChannelResponse struct { + Body []byte + HTTPResponse *http.Response + JSON201 *NotificationChannel + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON409 *ConflictProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r CreateNotificationChannelResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateNotificationChannelResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteNotificationChannelResponse struct { + Body []byte + HTTPResponse *http.Response + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r DeleteNotificationChannelResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteNotificationChannelResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetNotificationChannelResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *NotificationChannel + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r GetNotificationChannelResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetNotificationChannelResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdateNotificationChannelResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *NotificationChannel + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r UpdateNotificationChannelResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateNotificationChannelResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListNotificationEventsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]NotificationEvent + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r ListNotificationEventsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListNotificationEventsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetNotificationEventResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + union json.RawMessage + } + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r GetNotificationEventResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetNotificationEventResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListNotificationRulesResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *NotificationRules + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} // Status returns HTTPResponse.Status -func (r ListGrantsResponse) Status() string { +func (r ListNotificationRulesResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4384,25 +6362,25 @@ func (r ListGrantsResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListGrantsResponse) StatusCode() int { +func (r ListNotificationRulesResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type VoidGrantResponse struct { +type CreateNotificationRuleResponse struct { Body []byte HTTPResponse *http.Response + JSON201 *NotificationRule ApplicationproblemJSON400 *BadRequestProblemResponse ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON404 *NotFoundProblemResponse ApplicationproblemJSON409 *ConflictProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r VoidGrantResponse) Status() string { +func (r CreateNotificationRuleResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4410,23 +6388,23 @@ func (r VoidGrantResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r VoidGrantResponse) StatusCode() int { +func (r CreateNotificationRuleResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListMetersResponse struct { +type DeleteNotificationRuleResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *[]Meter ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r ListMetersResponse) Status() string { +func (r DeleteNotificationRuleResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4434,17 +6412,92 @@ func (r ListMetersResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListMetersResponse) StatusCode() int { +func (r DeleteNotificationRuleResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type CreateMeterResponse struct { +type GetNotificationRuleResponse struct { Body []byte HTTPResponse *http.Response - JSON201 *Meter + JSON200 *NotificationRule + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r GetNotificationRuleResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetNotificationRuleResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdateNotificationRuleResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *NotificationRule + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r UpdateNotificationRuleResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateNotificationRuleResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type QueryPortalMeterResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *MeterQueryResult + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r QueryPortalMeterResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r QueryPortalMeterResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListPortalTokensResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]PortalToken ApplicationproblemJSON400 *BadRequestProblemResponse ApplicationproblemJSON401 *UnauthorizedProblemResponse ApplicationproblemJSON501 *NotImplementedProblemResponse @@ -4452,7 +6505,7 @@ type CreateMeterResponse struct { } // Status returns HTTPResponse.Status -func (r CreateMeterResponse) Status() string { +func (r ListPortalTokensResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4460,23 +6513,125 @@ func (r CreateMeterResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r CreateMeterResponse) StatusCode() int { +func (r ListPortalTokensResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type DeleteMeterResponse struct { +type CreatePortalTokenResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *PortalToken + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r CreatePortalTokenResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreatePortalTokenResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type InvalidatePortalTokensResponse struct { + Body []byte + HTTPResponse *http.Response + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON501 *NotImplementedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r InvalidatePortalTokensResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r InvalidatePortalTokensResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListSubjectsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]Subject + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r ListSubjectsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListSubjectsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpsertSubjectResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]Subject + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON501 *NotImplementedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r UpsertSubjectResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpsertSubjectResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteSubjectResponse struct { Body []byte HTTPResponse *http.Response + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse ApplicationproblemJSON404 *NotFoundProblemResponse ApplicationproblemJSON501 *NotImplementedProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r DeleteMeterResponse) Status() string { +func (r DeleteSubjectResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4484,23 +6639,75 @@ func (r DeleteMeterResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r DeleteMeterResponse) StatusCode() int { +func (r DeleteSubjectResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetMeterResponse struct { +type GetSubjectResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *Meter + JSON200 *Subject + ApplicationproblemJSON401 *UnauthorizedProblemResponse ApplicationproblemJSON404 *NotFoundProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r GetMeterResponse) Status() string { +func (r GetSubjectResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetSubjectResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListSubjectEntitlementsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]Entitlement + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r ListSubjectEntitlementsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListSubjectEntitlementsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateEntitlementResponse struct { + Body []byte + HTTPResponse *http.Response + JSON201 *Entitlement + ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON409 *ConflictProblemResponse + ApplicationproblemJSON501 *NotImplementedProblemResponse + ApplicationproblemJSONDefault *UnexpectedProblemResponse +} + +// Status returns HTTPResponse.Status +func (r CreateEntitlementResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4508,24 +6715,23 @@ func (r GetMeterResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetMeterResponse) StatusCode() int { +func (r CreateEntitlementResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type QueryMeterResponse struct { +type ListEntitlementGrantsResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *MeterQueryResult - ApplicationproblemJSON400 *BadRequestProblemResponse + JSON200 *[]EntitlementGrant ApplicationproblemJSON401 *UnauthorizedProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r QueryMeterResponse) Status() string { +func (r ListEntitlementGrantsResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4533,23 +6739,25 @@ func (r QueryMeterResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r QueryMeterResponse) StatusCode() int { +func (r ListEntitlementGrantsResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListMeterSubjectsResponse struct { +type CreateGrantResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *[]string + JSON201 *EntitlementGrant ApplicationproblemJSON400 *BadRequestProblemResponse + ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON501 *NotImplementedProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r ListMeterSubjectsResponse) Status() string { +func (r CreateGrantResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4557,24 +6765,25 @@ func (r ListMeterSubjectsResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListMeterSubjectsResponse) StatusCode() int { +func (r CreateGrantResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type QueryPortalMeterResponse struct { +type GetEntitlementValueResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *MeterQueryResult + JSON200 *EntitlementValue ApplicationproblemJSON400 *BadRequestProblemResponse ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r QueryPortalMeterResponse) Status() string { +func (r GetEntitlementValueResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4582,25 +6791,23 @@ func (r QueryPortalMeterResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r QueryPortalMeterResponse) StatusCode() int { +func (r GetEntitlementValueResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListPortalTokensResponse struct { +type DeleteEntitlementResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *[]PortalToken - ApplicationproblemJSON400 *BadRequestProblemResponse ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON501 *NotImplementedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r ListPortalTokensResponse) Status() string { +func (r DeleteEntitlementResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4608,24 +6815,28 @@ func (r ListPortalTokensResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListPortalTokensResponse) StatusCode() int { +func (r DeleteEntitlementResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type CreatePortalTokenResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *PortalToken - ApplicationproblemJSON400 *BadRequestProblemResponse +type GetEntitlementResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + // LastReset The last time usage was reset. + LastReset *time.Time `json:"lastReset,omitempty"` + union json.RawMessage + } ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r CreatePortalTokenResponse) Status() string { +func (r GetEntitlementResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4633,24 +6844,25 @@ func (r CreatePortalTokenResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r CreatePortalTokenResponse) StatusCode() int { +func (r GetEntitlementResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type InvalidatePortalTokensResponse struct { +type GetEntitlementHistoryResponse struct { Body []byte HTTPResponse *http.Response + JSON200 *WindowedBalanceHistory ApplicationproblemJSON400 *BadRequestProblemResponse ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON501 *NotImplementedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r InvalidatePortalTokensResponse) Status() string { +func (r GetEntitlementHistoryResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4658,23 +6870,24 @@ func (r InvalidatePortalTokensResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r InvalidatePortalTokensResponse) StatusCode() int { +func (r GetEntitlementHistoryResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListSubjectsResponse struct { +type ResetEntitlementUsageResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *[]Subject + ApplicationproblemJSON400 *BadRequestProblemResponse ApplicationproblemJSON401 *UnauthorizedProblemResponse + ApplicationproblemJSON404 *NotFoundProblemResponse ApplicationproblemJSONDefault *UnexpectedProblemResponse } // Status returns HTTPResponse.Status -func (r ListSubjectsResponse) Status() string { +func (r ResetEntitlementUsageResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -4682,718 +6895,1100 @@ func (r ListSubjectsResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListSubjectsResponse) StatusCode() int { +func (r ResetEntitlementUsageResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type UpsertSubjectResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *[]Subject - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON501 *NotImplementedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +// GetDebugMetricsWithResponse request returning *GetDebugMetricsResponse +func (c *ClientWithResponses) GetDebugMetricsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetDebugMetricsResponse, error) { + rsp, err := c.GetDebugMetrics(ctx, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetDebugMetricsResponse(rsp) } -// Status returns HTTPResponse.Status -func (r UpsertSubjectResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// ListEntitlementsWithResponse request returning *ListEntitlementsResponse +func (c *ClientWithResponses) ListEntitlementsWithResponse(ctx context.Context, params *ListEntitlementsParams, reqEditors ...RequestEditorFn) (*ListEntitlementsResponse, error) { + rsp, err := c.ListEntitlements(ctx, params, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseListEntitlementsResponse(rsp) +} + +// ListEventsWithResponse request returning *ListEventsResponse +func (c *ClientWithResponses) ListEventsWithResponse(ctx context.Context, params *ListEventsParams, reqEditors ...RequestEditorFn) (*ListEventsResponse, error) { + rsp, err := c.ListEvents(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListEventsResponse(rsp) +} + +// IngestEventsWithBodyWithResponse request with arbitrary body returning *IngestEventsResponse +func (c *ClientWithResponses) IngestEventsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) { + rsp, err := c.IngestEventsWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseIngestEventsResponse(rsp) +} + +func (c *ClientWithResponses) IngestEventsWithApplicationCloudeventsPlusJSONBodyWithResponse(ctx context.Context, body IngestEventsApplicationCloudeventsPlusJSONRequestBody, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) { + rsp, err := c.IngestEventsWithApplicationCloudeventsPlusJSONBody(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseIngestEventsResponse(rsp) +} + +func (c *ClientWithResponses) IngestEventsWithApplicationCloudeventsBatchPlusJSONBodyWithResponse(ctx context.Context, body IngestEventsApplicationCloudeventsBatchPlusJSONRequestBody, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) { + rsp, err := c.IngestEventsWithApplicationCloudeventsBatchPlusJSONBody(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseIngestEventsResponse(rsp) +} + +// ListFeaturesWithResponse request returning *ListFeaturesResponse +func (c *ClientWithResponses) ListFeaturesWithResponse(ctx context.Context, params *ListFeaturesParams, reqEditors ...RequestEditorFn) (*ListFeaturesResponse, error) { + rsp, err := c.ListFeatures(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListFeaturesResponse(rsp) +} + +// CreateFeatureWithBodyWithResponse request with arbitrary body returning *CreateFeatureResponse +func (c *ClientWithResponses) CreateFeatureWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateFeatureResponse, error) { + rsp, err := c.CreateFeatureWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateFeatureResponse(rsp) +} + +func (c *ClientWithResponses) CreateFeatureWithResponse(ctx context.Context, body CreateFeatureJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateFeatureResponse, error) { + rsp, err := c.CreateFeature(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateFeatureResponse(rsp) +} + +// DeleteFeatureWithResponse request returning *DeleteFeatureResponse +func (c *ClientWithResponses) DeleteFeatureWithResponse(ctx context.Context, featureId FeatureId, reqEditors ...RequestEditorFn) (*DeleteFeatureResponse, error) { + rsp, err := c.DeleteFeature(ctx, featureId, reqEditors...) + if err != nil { + return nil, err + } + return ParseDeleteFeatureResponse(rsp) +} + +// GetFeatureWithResponse request returning *GetFeatureResponse +func (c *ClientWithResponses) GetFeatureWithResponse(ctx context.Context, featureId FeatureId, reqEditors ...RequestEditorFn) (*GetFeatureResponse, error) { + rsp, err := c.GetFeature(ctx, featureId, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetFeatureResponse(rsp) +} + +// ListGrantsWithResponse request returning *ListGrantsResponse +func (c *ClientWithResponses) ListGrantsWithResponse(ctx context.Context, params *ListGrantsParams, reqEditors ...RequestEditorFn) (*ListGrantsResponse, error) { + rsp, err := c.ListGrants(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListGrantsResponse(rsp) +} + +// VoidGrantWithResponse request returning *VoidGrantResponse +func (c *ClientWithResponses) VoidGrantWithResponse(ctx context.Context, grantId GrantId, reqEditors ...RequestEditorFn) (*VoidGrantResponse, error) { + rsp, err := c.VoidGrant(ctx, grantId, reqEditors...) + if err != nil { + return nil, err + } + return ParseVoidGrantResponse(rsp) +} + +// ListMetersWithResponse request returning *ListMetersResponse +func (c *ClientWithResponses) ListMetersWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListMetersResponse, error) { + rsp, err := c.ListMeters(ctx, reqEditors...) + if err != nil { + return nil, err + } + return ParseListMetersResponse(rsp) +} + +// CreateMeterWithBodyWithResponse request with arbitrary body returning *CreateMeterResponse +func (c *ClientWithResponses) CreateMeterWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateMeterResponse, error) { + rsp, err := c.CreateMeterWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateMeterResponse(rsp) +} + +func (c *ClientWithResponses) CreateMeterWithResponse(ctx context.Context, body CreateMeterJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateMeterResponse, error) { + rsp, err := c.CreateMeter(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateMeterResponse(rsp) +} + +// DeleteMeterWithResponse request returning *DeleteMeterResponse +func (c *ClientWithResponses) DeleteMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*DeleteMeterResponse, error) { + rsp, err := c.DeleteMeter(ctx, meterIdOrSlug, reqEditors...) + if err != nil { + return nil, err + } + return ParseDeleteMeterResponse(rsp) +} + +// GetMeterWithResponse request returning *GetMeterResponse +func (c *ClientWithResponses) GetMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*GetMeterResponse, error) { + rsp, err := c.GetMeter(ctx, meterIdOrSlug, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetMeterResponse(rsp) +} + +// QueryMeterWithResponse request returning *QueryMeterResponse +func (c *ClientWithResponses) QueryMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, params *QueryMeterParams, reqEditors ...RequestEditorFn) (*QueryMeterResponse, error) { + rsp, err := c.QueryMeter(ctx, meterIdOrSlug, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseQueryMeterResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r UpsertSubjectResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// ListMeterSubjectsWithResponse request returning *ListMeterSubjectsResponse +func (c *ClientWithResponses) ListMeterSubjectsWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*ListMeterSubjectsResponse, error) { + rsp, err := c.ListMeterSubjects(ctx, meterIdOrSlug, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseListMeterSubjectsResponse(rsp) } -type DeleteSubjectResponse struct { - Body []byte - HTTPResponse *http.Response - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON404 *NotFoundProblemResponse - ApplicationproblemJSON501 *NotImplementedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +// ListNotificationChannelsWithResponse request returning *ListNotificationChannelsResponse +func (c *ClientWithResponses) ListNotificationChannelsWithResponse(ctx context.Context, params *ListNotificationChannelsParams, reqEditors ...RequestEditorFn) (*ListNotificationChannelsResponse, error) { + rsp, err := c.ListNotificationChannels(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListNotificationChannelsResponse(rsp) } -// Status returns HTTPResponse.Status -func (r DeleteSubjectResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// CreateNotificationChannelWithBodyWithResponse request with arbitrary body returning *CreateNotificationChannelResponse +func (c *ClientWithResponses) CreateNotificationChannelWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateNotificationChannelResponse, error) { + rsp, err := c.CreateNotificationChannelWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseCreateNotificationChannelResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteSubjectResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +func (c *ClientWithResponses) CreateNotificationChannelWithResponse(ctx context.Context, body CreateNotificationChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateNotificationChannelResponse, error) { + rsp, err := c.CreateNotificationChannel(ctx, body, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseCreateNotificationChannelResponse(rsp) } -type GetSubjectResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *Subject - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON404 *NotFoundProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +// DeleteNotificationChannelWithResponse request returning *DeleteNotificationChannelResponse +func (c *ClientWithResponses) DeleteNotificationChannelWithResponse(ctx context.Context, channelId ChannelId, reqEditors ...RequestEditorFn) (*DeleteNotificationChannelResponse, error) { + rsp, err := c.DeleteNotificationChannel(ctx, channelId, reqEditors...) + if err != nil { + return nil, err + } + return ParseDeleteNotificationChannelResponse(rsp) } -// Status returns HTTPResponse.Status -func (r GetSubjectResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// GetNotificationChannelWithResponse request returning *GetNotificationChannelResponse +func (c *ClientWithResponses) GetNotificationChannelWithResponse(ctx context.Context, channelId ChannelId, reqEditors ...RequestEditorFn) (*GetNotificationChannelResponse, error) { + rsp, err := c.GetNotificationChannel(ctx, channelId, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseGetNotificationChannelResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r GetSubjectResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// UpdateNotificationChannelWithBodyWithResponse request with arbitrary body returning *UpdateNotificationChannelResponse +func (c *ClientWithResponses) UpdateNotificationChannelWithBodyWithResponse(ctx context.Context, channelId ChannelId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateNotificationChannelResponse, error) { + rsp, err := c.UpdateNotificationChannelWithBody(ctx, channelId, contentType, body, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseUpdateNotificationChannelResponse(rsp) } -type ListSubjectEntitlementsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *[]Entitlement - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +func (c *ClientWithResponses) UpdateNotificationChannelWithResponse(ctx context.Context, channelId ChannelId, body UpdateNotificationChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateNotificationChannelResponse, error) { + rsp, err := c.UpdateNotificationChannel(ctx, channelId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseUpdateNotificationChannelResponse(rsp) } -// Status returns HTTPResponse.Status -func (r ListSubjectEntitlementsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// ListNotificationEventsWithResponse request returning *ListNotificationEventsResponse +func (c *ClientWithResponses) ListNotificationEventsWithResponse(ctx context.Context, params *ListNotificationEventsParams, reqEditors ...RequestEditorFn) (*ListNotificationEventsResponse, error) { + rsp, err := c.ListNotificationEvents(ctx, params, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseListNotificationEventsResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r ListSubjectEntitlementsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// GetNotificationEventWithResponse request returning *GetNotificationEventResponse +func (c *ClientWithResponses) GetNotificationEventWithResponse(ctx context.Context, eventId EventId, reqEditors ...RequestEditorFn) (*GetNotificationEventResponse, error) { + rsp, err := c.GetNotificationEvent(ctx, eventId, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseGetNotificationEventResponse(rsp) } -type CreateEntitlementResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *Entitlement - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON409 *ConflictProblemResponse - ApplicationproblemJSON501 *NotImplementedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +// ListNotificationRulesWithResponse request returning *ListNotificationRulesResponse +func (c *ClientWithResponses) ListNotificationRulesWithResponse(ctx context.Context, params *ListNotificationRulesParams, reqEditors ...RequestEditorFn) (*ListNotificationRulesResponse, error) { + rsp, err := c.ListNotificationRules(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListNotificationRulesResponse(rsp) } -// Status returns HTTPResponse.Status -func (r CreateEntitlementResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// CreateNotificationRuleWithBodyWithResponse request with arbitrary body returning *CreateNotificationRuleResponse +func (c *ClientWithResponses) CreateNotificationRuleWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateNotificationRuleResponse, error) { + rsp, err := c.CreateNotificationRuleWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseCreateNotificationRuleResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r CreateEntitlementResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +func (c *ClientWithResponses) CreateNotificationRuleWithResponse(ctx context.Context, body CreateNotificationRuleJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateNotificationRuleResponse, error) { + rsp, err := c.CreateNotificationRule(ctx, body, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseCreateNotificationRuleResponse(rsp) } -type ListEntitlementGrantsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *[]EntitlementGrant - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +// DeleteNotificationRuleWithResponse request returning *DeleteNotificationRuleResponse +func (c *ClientWithResponses) DeleteNotificationRuleWithResponse(ctx context.Context, ruleId RuleId, reqEditors ...RequestEditorFn) (*DeleteNotificationRuleResponse, error) { + rsp, err := c.DeleteNotificationRule(ctx, ruleId, reqEditors...) + if err != nil { + return nil, err + } + return ParseDeleteNotificationRuleResponse(rsp) } -// Status returns HTTPResponse.Status -func (r ListEntitlementGrantsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// GetNotificationRuleWithResponse request returning *GetNotificationRuleResponse +func (c *ClientWithResponses) GetNotificationRuleWithResponse(ctx context.Context, ruleId RuleId, reqEditors ...RequestEditorFn) (*GetNotificationRuleResponse, error) { + rsp, err := c.GetNotificationRule(ctx, ruleId, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseGetNotificationRuleResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r ListEntitlementGrantsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// UpdateNotificationRuleWithBodyWithResponse request with arbitrary body returning *UpdateNotificationRuleResponse +func (c *ClientWithResponses) UpdateNotificationRuleWithBodyWithResponse(ctx context.Context, ruleId RuleId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateNotificationRuleResponse, error) { + rsp, err := c.UpdateNotificationRuleWithBody(ctx, ruleId, contentType, body, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseUpdateNotificationRuleResponse(rsp) } -type CreateGrantResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *EntitlementGrant - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON501 *NotImplementedProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +func (c *ClientWithResponses) UpdateNotificationRuleWithResponse(ctx context.Context, ruleId RuleId, body UpdateNotificationRuleJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateNotificationRuleResponse, error) { + rsp, err := c.UpdateNotificationRule(ctx, ruleId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseUpdateNotificationRuleResponse(rsp) } -// Status returns HTTPResponse.Status -func (r CreateGrantResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// QueryPortalMeterWithResponse request returning *QueryPortalMeterResponse +func (c *ClientWithResponses) QueryPortalMeterWithResponse(ctx context.Context, meterSlug string, params *QueryPortalMeterParams, reqEditors ...RequestEditorFn) (*QueryPortalMeterResponse, error) { + rsp, err := c.QueryPortalMeter(ctx, meterSlug, params, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseQueryPortalMeterResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r CreateGrantResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// ListPortalTokensWithResponse request returning *ListPortalTokensResponse +func (c *ClientWithResponses) ListPortalTokensWithResponse(ctx context.Context, params *ListPortalTokensParams, reqEditors ...RequestEditorFn) (*ListPortalTokensResponse, error) { + rsp, err := c.ListPortalTokens(ctx, params, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseListPortalTokensResponse(rsp) } -type GetEntitlementValueResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *EntitlementValue - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON404 *NotFoundProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +// CreatePortalTokenWithBodyWithResponse request with arbitrary body returning *CreatePortalTokenResponse +func (c *ClientWithResponses) CreatePortalTokenWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreatePortalTokenResponse, error) { + rsp, err := c.CreatePortalTokenWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreatePortalTokenResponse(rsp) } -// Status returns HTTPResponse.Status -func (r GetEntitlementValueResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +func (c *ClientWithResponses) CreatePortalTokenWithResponse(ctx context.Context, body CreatePortalTokenJSONRequestBody, reqEditors ...RequestEditorFn) (*CreatePortalTokenResponse, error) { + rsp, err := c.CreatePortalToken(ctx, body, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseCreatePortalTokenResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r GetEntitlementValueResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// InvalidatePortalTokensWithBodyWithResponse request with arbitrary body returning *InvalidatePortalTokensResponse +func (c *ClientWithResponses) InvalidatePortalTokensWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*InvalidatePortalTokensResponse, error) { + rsp, err := c.InvalidatePortalTokensWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseInvalidatePortalTokensResponse(rsp) } -type DeleteEntitlementResponse struct { - Body []byte - HTTPResponse *http.Response - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON404 *NotFoundProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +func (c *ClientWithResponses) InvalidatePortalTokensWithResponse(ctx context.Context, body InvalidatePortalTokensJSONRequestBody, reqEditors ...RequestEditorFn) (*InvalidatePortalTokensResponse, error) { + rsp, err := c.InvalidatePortalTokens(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseInvalidatePortalTokensResponse(rsp) } -// Status returns HTTPResponse.Status -func (r DeleteEntitlementResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// ListSubjectsWithResponse request returning *ListSubjectsResponse +func (c *ClientWithResponses) ListSubjectsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListSubjectsResponse, error) { + rsp, err := c.ListSubjects(ctx, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseListSubjectsResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r DeleteEntitlementResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// UpsertSubjectWithBodyWithResponse request with arbitrary body returning *UpsertSubjectResponse +func (c *ClientWithResponses) UpsertSubjectWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpsertSubjectResponse, error) { + rsp, err := c.UpsertSubjectWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseUpsertSubjectResponse(rsp) } -type GetEntitlementResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *struct { - // LastReset The last time usage was reset. - LastReset *time.Time `json:"lastReset,omitempty"` - union json.RawMessage +func (c *ClientWithResponses) UpsertSubjectWithResponse(ctx context.Context, body UpsertSubjectJSONRequestBody, reqEditors ...RequestEditorFn) (*UpsertSubjectResponse, error) { + rsp, err := c.UpsertSubject(ctx, body, reqEditors...) + if err != nil { + return nil, err } - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON404 *NotFoundProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse + return ParseUpsertSubjectResponse(rsp) } - -// Status returns HTTPResponse.Status -func (r GetEntitlementResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status + +// DeleteSubjectWithResponse request returning *DeleteSubjectResponse +func (c *ClientWithResponses) DeleteSubjectWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*DeleteSubjectResponse, error) { + rsp, err := c.DeleteSubject(ctx, subjectIdOrKey, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseDeleteSubjectResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r GetEntitlementResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +// GetSubjectWithResponse request returning *GetSubjectResponse +func (c *ClientWithResponses) GetSubjectWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*GetSubjectResponse, error) { + rsp, err := c.GetSubject(ctx, subjectIdOrKey, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseGetSubjectResponse(rsp) } -type GetEntitlementHistoryResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *WindowedBalanceHistory - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON404 *NotFoundProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +// ListSubjectEntitlementsWithResponse request returning *ListSubjectEntitlementsResponse +func (c *ClientWithResponses) ListSubjectEntitlementsWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, params *ListSubjectEntitlementsParams, reqEditors ...RequestEditorFn) (*ListSubjectEntitlementsResponse, error) { + rsp, err := c.ListSubjectEntitlements(ctx, subjectIdOrKey, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListSubjectEntitlementsResponse(rsp) } -// Status returns HTTPResponse.Status -func (r GetEntitlementHistoryResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// CreateEntitlementWithBodyWithResponse request with arbitrary body returning *CreateEntitlementResponse +func (c *ClientWithResponses) CreateEntitlementWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateEntitlementResponse, error) { + rsp, err := c.CreateEntitlementWithBody(ctx, subjectIdOrKey, contentType, body, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseCreateEntitlementResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r GetEntitlementHistoryResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +func (c *ClientWithResponses) CreateEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, body CreateEntitlementJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateEntitlementResponse, error) { + rsp, err := c.CreateEntitlement(ctx, subjectIdOrKey, body, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseCreateEntitlementResponse(rsp) } -type ResetEntitlementUsageResponse struct { - Body []byte - HTTPResponse *http.Response - ApplicationproblemJSON400 *BadRequestProblemResponse - ApplicationproblemJSON401 *UnauthorizedProblemResponse - ApplicationproblemJSON404 *NotFoundProblemResponse - ApplicationproblemJSONDefault *UnexpectedProblemResponse +// ListEntitlementGrantsWithResponse request returning *ListEntitlementGrantsResponse +func (c *ClientWithResponses) ListEntitlementGrantsWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *ListEntitlementGrantsParams, reqEditors ...RequestEditorFn) (*ListEntitlementGrantsResponse, error) { + rsp, err := c.ListEntitlementGrants(ctx, subjectIdOrKey, entitlementIdOrFeatureKey, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListEntitlementGrantsResponse(rsp) } -// Status returns HTTPResponse.Status -func (r ResetEntitlementUsageResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// CreateGrantWithBodyWithResponse request with arbitrary body returning *CreateGrantResponse +func (c *ClientWithResponses) CreateGrantWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateGrantResponse, error) { + rsp, err := c.CreateGrantWithBody(ctx, subjectIdOrKey, entitlementIdOrFeatureKey, contentType, body, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseCreateGrantResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r ResetEntitlementUsageResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +func (c *ClientWithResponses) CreateGrantWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, body CreateGrantJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateGrantResponse, error) { + rsp, err := c.CreateGrant(ctx, subjectIdOrKey, entitlementIdOrFeatureKey, body, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseCreateGrantResponse(rsp) } -// GetDebugMetricsWithResponse request returning *GetDebugMetricsResponse -func (c *ClientWithResponses) GetDebugMetricsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetDebugMetricsResponse, error) { - rsp, err := c.GetDebugMetrics(ctx, reqEditors...) +// GetEntitlementValueWithResponse request returning *GetEntitlementValueResponse +func (c *ClientWithResponses) GetEntitlementValueWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *GetEntitlementValueParams, reqEditors ...RequestEditorFn) (*GetEntitlementValueResponse, error) { + rsp, err := c.GetEntitlementValue(ctx, subjectIdOrKey, entitlementIdOrFeatureKey, params, reqEditors...) if err != nil { return nil, err } - return ParseGetDebugMetricsResponse(rsp) + return ParseGetEntitlementValueResponse(rsp) } -// ListEntitlementsWithResponse request returning *ListEntitlementsResponse -func (c *ClientWithResponses) ListEntitlementsWithResponse(ctx context.Context, params *ListEntitlementsParams, reqEditors ...RequestEditorFn) (*ListEntitlementsResponse, error) { - rsp, err := c.ListEntitlements(ctx, params, reqEditors...) +// DeleteEntitlementWithResponse request returning *DeleteEntitlementResponse +func (c *ClientWithResponses) DeleteEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, reqEditors ...RequestEditorFn) (*DeleteEntitlementResponse, error) { + rsp, err := c.DeleteEntitlement(ctx, subjectIdOrKey, entitlementId, reqEditors...) if err != nil { return nil, err } - return ParseListEntitlementsResponse(rsp) + return ParseDeleteEntitlementResponse(rsp) } -// ListEventsWithResponse request returning *ListEventsResponse -func (c *ClientWithResponses) ListEventsWithResponse(ctx context.Context, params *ListEventsParams, reqEditors ...RequestEditorFn) (*ListEventsResponse, error) { - rsp, err := c.ListEvents(ctx, params, reqEditors...) +// GetEntitlementWithResponse request returning *GetEntitlementResponse +func (c *ClientWithResponses) GetEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, reqEditors ...RequestEditorFn) (*GetEntitlementResponse, error) { + rsp, err := c.GetEntitlement(ctx, subjectIdOrKey, entitlementId, reqEditors...) if err != nil { return nil, err } - return ParseListEventsResponse(rsp) + return ParseGetEntitlementResponse(rsp) } -// IngestEventsWithBodyWithResponse request with arbitrary body returning *IngestEventsResponse -func (c *ClientWithResponses) IngestEventsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) { - rsp, err := c.IngestEventsWithBody(ctx, contentType, body, reqEditors...) +// GetEntitlementHistoryWithResponse request returning *GetEntitlementHistoryResponse +func (c *ClientWithResponses) GetEntitlementHistoryWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, params *GetEntitlementHistoryParams, reqEditors ...RequestEditorFn) (*GetEntitlementHistoryResponse, error) { + rsp, err := c.GetEntitlementHistory(ctx, subjectIdOrKey, entitlementId, params, reqEditors...) if err != nil { return nil, err } - return ParseIngestEventsResponse(rsp) + return ParseGetEntitlementHistoryResponse(rsp) } -func (c *ClientWithResponses) IngestEventsWithApplicationCloudeventsPlusJSONBodyWithResponse(ctx context.Context, body IngestEventsApplicationCloudeventsPlusJSONRequestBody, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) { - rsp, err := c.IngestEventsWithApplicationCloudeventsPlusJSONBody(ctx, body, reqEditors...) +// ResetEntitlementUsageWithBodyWithResponse request with arbitrary body returning *ResetEntitlementUsageResponse +func (c *ClientWithResponses) ResetEntitlementUsageWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*ResetEntitlementUsageResponse, error) { + rsp, err := c.ResetEntitlementUsageWithBody(ctx, subjectIdOrKey, entitlementId, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseIngestEventsResponse(rsp) + return ParseResetEntitlementUsageResponse(rsp) } -func (c *ClientWithResponses) IngestEventsWithApplicationCloudeventsBatchPlusJSONBodyWithResponse(ctx context.Context, body IngestEventsApplicationCloudeventsBatchPlusJSONRequestBody, reqEditors ...RequestEditorFn) (*IngestEventsResponse, error) { - rsp, err := c.IngestEventsWithApplicationCloudeventsBatchPlusJSONBody(ctx, body, reqEditors...) +func (c *ClientWithResponses) ResetEntitlementUsageWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, body ResetEntitlementUsageJSONRequestBody, reqEditors ...RequestEditorFn) (*ResetEntitlementUsageResponse, error) { + rsp, err := c.ResetEntitlementUsage(ctx, subjectIdOrKey, entitlementId, body, reqEditors...) if err != nil { return nil, err } - return ParseIngestEventsResponse(rsp) + return ParseResetEntitlementUsageResponse(rsp) } -// ListFeaturesWithResponse request returning *ListFeaturesResponse -func (c *ClientWithResponses) ListFeaturesWithResponse(ctx context.Context, params *ListFeaturesParams, reqEditors ...RequestEditorFn) (*ListFeaturesResponse, error) { - rsp, err := c.ListFeatures(ctx, params, reqEditors...) +// ParseGetDebugMetricsResponse parses an HTTP response from a GetDebugMetricsWithResponse call +func ParseGetDebugMetricsResponse(rsp *http.Response) (*GetDebugMetricsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseListFeaturesResponse(rsp) + + response := &GetDebugMetricsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest + + } + + return response, nil } -// CreateFeatureWithBodyWithResponse request with arbitrary body returning *CreateFeatureResponse -func (c *ClientWithResponses) CreateFeatureWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateFeatureResponse, error) { - rsp, err := c.CreateFeatureWithBody(ctx, contentType, body, reqEditors...) +// ParseListEntitlementsResponse parses an HTTP response from a ListEntitlementsWithResponse call +func ParseListEntitlementsResponse(rsp *http.Response) (*ListEntitlementsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseCreateFeatureResponse(rsp) + + response := &ListEntitlementsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []Entitlement + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest BadRequestProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest + + } + + return response, nil } -func (c *ClientWithResponses) CreateFeatureWithResponse(ctx context.Context, body CreateFeatureJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateFeatureResponse, error) { - rsp, err := c.CreateFeature(ctx, body, reqEditors...) +// ParseListEventsResponse parses an HTTP response from a ListEventsWithResponse call +func ParseListEventsResponse(rsp *http.Response) (*ListEventsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseCreateFeatureResponse(rsp) + + response := &ListEventsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []IngestedEvent + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest BadRequestProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest + + } + + return response, nil } -// DeleteFeatureWithResponse request returning *DeleteFeatureResponse -func (c *ClientWithResponses) DeleteFeatureWithResponse(ctx context.Context, featureId FeatureId, reqEditors ...RequestEditorFn) (*DeleteFeatureResponse, error) { - rsp, err := c.DeleteFeature(ctx, featureId, reqEditors...) +// ParseIngestEventsResponse parses an HTTP response from a IngestEventsWithResponse call +func ParseIngestEventsResponse(rsp *http.Response) (*IngestEventsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseDeleteFeatureResponse(rsp) -} -// GetFeatureWithResponse request returning *GetFeatureResponse -func (c *ClientWithResponses) GetFeatureWithResponse(ctx context.Context, featureId FeatureId, reqEditors ...RequestEditorFn) (*GetFeatureResponse, error) { - rsp, err := c.GetFeature(ctx, featureId, reqEditors...) - if err != nil { - return nil, err + response := &IngestEventsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } - return ParseGetFeatureResponse(rsp) -} -// ListGrantsWithResponse request returning *ListGrantsResponse -func (c *ClientWithResponses) ListGrantsWithResponse(ctx context.Context, params *ListGrantsParams, reqEditors ...RequestEditorFn) (*ListGrantsResponse, error) { - rsp, err := c.ListGrants(ctx, params, reqEditors...) - if err != nil { - return nil, err + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest BadRequestProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest + } - return ParseListGrantsResponse(rsp) + + return response, nil } -// VoidGrantWithResponse request returning *VoidGrantResponse -func (c *ClientWithResponses) VoidGrantWithResponse(ctx context.Context, grantId GrantId, reqEditors ...RequestEditorFn) (*VoidGrantResponse, error) { - rsp, err := c.VoidGrant(ctx, grantId, reqEditors...) +// ParseListFeaturesResponse parses an HTTP response from a ListFeaturesWithResponse call +func ParseListFeaturesResponse(rsp *http.Response) (*ListFeaturesResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseVoidGrantResponse(rsp) -} -// ListMetersWithResponse request returning *ListMetersResponse -func (c *ClientWithResponses) ListMetersWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListMetersResponse, error) { - rsp, err := c.ListMeters(ctx, reqEditors...) - if err != nil { - return nil, err + response := &ListFeaturesResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } - return ParseListMetersResponse(rsp) -} -// CreateMeterWithBodyWithResponse request with arbitrary body returning *CreateMeterResponse -func (c *ClientWithResponses) CreateMeterWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateMeterResponse, error) { - rsp, err := c.CreateMeterWithBody(ctx, contentType, body, reqEditors...) - if err != nil { - return nil, err + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []Feature + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest BadRequestProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest + } - return ParseCreateMeterResponse(rsp) + + return response, nil } -func (c *ClientWithResponses) CreateMeterWithResponse(ctx context.Context, body CreateMeterJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateMeterResponse, error) { - rsp, err := c.CreateMeter(ctx, body, reqEditors...) +// ParseCreateFeatureResponse parses an HTTP response from a CreateFeatureWithResponse call +func ParseCreateFeatureResponse(rsp *http.Response) (*CreateFeatureResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseCreateMeterResponse(rsp) -} -// DeleteMeterWithResponse request returning *DeleteMeterResponse -func (c *ClientWithResponses) DeleteMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*DeleteMeterResponse, error) { - rsp, err := c.DeleteMeter(ctx, meterIdOrSlug, reqEditors...) - if err != nil { - return nil, err + response := &CreateFeatureResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } - return ParseDeleteMeterResponse(rsp) -} -// GetMeterWithResponse request returning *GetMeterResponse -func (c *ClientWithResponses) GetMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*GetMeterResponse, error) { - rsp, err := c.GetMeter(ctx, meterIdOrSlug, reqEditors...) - if err != nil { - return nil, err + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest Feature + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON201 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest BadRequestProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 501: + var dest NotImplementedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON501 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest + } - return ParseGetMeterResponse(rsp) + + return response, nil } -// QueryMeterWithResponse request returning *QueryMeterResponse -func (c *ClientWithResponses) QueryMeterWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, params *QueryMeterParams, reqEditors ...RequestEditorFn) (*QueryMeterResponse, error) { - rsp, err := c.QueryMeter(ctx, meterIdOrSlug, params, reqEditors...) +// ParseDeleteFeatureResponse parses an HTTP response from a DeleteFeatureWithResponse call +func ParseDeleteFeatureResponse(rsp *http.Response) (*DeleteFeatureResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseQueryMeterResponse(rsp) -} -// ListMeterSubjectsWithResponse request returning *ListMeterSubjectsResponse -func (c *ClientWithResponses) ListMeterSubjectsWithResponse(ctx context.Context, meterIdOrSlug MeterIdOrSlug, reqEditors ...RequestEditorFn) (*ListMeterSubjectsResponse, error) { - rsp, err := c.ListMeterSubjects(ctx, meterIdOrSlug, reqEditors...) - if err != nil { - return nil, err + response := &DeleteFeatureResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } - return ParseListMeterSubjectsResponse(rsp) -} -// QueryPortalMeterWithResponse request returning *QueryPortalMeterResponse -func (c *ClientWithResponses) QueryPortalMeterWithResponse(ctx context.Context, meterSlug string, params *QueryPortalMeterParams, reqEditors ...RequestEditorFn) (*QueryPortalMeterResponse, error) { - rsp, err := c.QueryPortalMeter(ctx, meterSlug, params, reqEditors...) - if err != nil { - return nil, err + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest NotFoundProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest + } - return ParseQueryPortalMeterResponse(rsp) + + return response, nil } -// ListPortalTokensWithResponse request returning *ListPortalTokensResponse -func (c *ClientWithResponses) ListPortalTokensWithResponse(ctx context.Context, params *ListPortalTokensParams, reqEditors ...RequestEditorFn) (*ListPortalTokensResponse, error) { - rsp, err := c.ListPortalTokens(ctx, params, reqEditors...) +// ParseGetFeatureResponse parses an HTTP response from a GetFeatureWithResponse call +func ParseGetFeatureResponse(rsp *http.Response) (*GetFeatureResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseListPortalTokensResponse(rsp) -} -// CreatePortalTokenWithBodyWithResponse request with arbitrary body returning *CreatePortalTokenResponse -func (c *ClientWithResponses) CreatePortalTokenWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreatePortalTokenResponse, error) { - rsp, err := c.CreatePortalTokenWithBody(ctx, contentType, body, reqEditors...) - if err != nil { - return nil, err + response := &GetFeatureResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Feature + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest NotFoundProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest + } - return ParseCreatePortalTokenResponse(rsp) -} -func (c *ClientWithResponses) CreatePortalTokenWithResponse(ctx context.Context, body CreatePortalTokenJSONRequestBody, reqEditors ...RequestEditorFn) (*CreatePortalTokenResponse, error) { - rsp, err := c.CreatePortalToken(ctx, body, reqEditors...) - if err != nil { - return nil, err - } - return ParseCreatePortalTokenResponse(rsp) + return response, nil } -// InvalidatePortalTokensWithBodyWithResponse request with arbitrary body returning *InvalidatePortalTokensResponse -func (c *ClientWithResponses) InvalidatePortalTokensWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*InvalidatePortalTokensResponse, error) { - rsp, err := c.InvalidatePortalTokensWithBody(ctx, contentType, body, reqEditors...) +// ParseListGrantsResponse parses an HTTP response from a ListGrantsWithResponse call +func ParseListGrantsResponse(rsp *http.Response) (*ListGrantsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseInvalidatePortalTokensResponse(rsp) -} -func (c *ClientWithResponses) InvalidatePortalTokensWithResponse(ctx context.Context, body InvalidatePortalTokensJSONRequestBody, reqEditors ...RequestEditorFn) (*InvalidatePortalTokensResponse, error) { - rsp, err := c.InvalidatePortalTokens(ctx, body, reqEditors...) - if err != nil { - return nil, err + response := &ListGrantsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } - return ParseInvalidatePortalTokensResponse(rsp) -} -// ListSubjectsWithResponse request returning *ListSubjectsResponse -func (c *ClientWithResponses) ListSubjectsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListSubjectsResponse, error) { - rsp, err := c.ListSubjects(ctx, reqEditors...) - if err != nil { - return nil, err - } - return ParseListSubjectsResponse(rsp) -} + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []EntitlementGrant + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest -// UpsertSubjectWithBodyWithResponse request with arbitrary body returning *UpsertSubjectResponse -func (c *ClientWithResponses) UpsertSubjectWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpsertSubjectResponse, error) { - rsp, err := c.UpsertSubjectWithBody(ctx, contentType, body, reqEditors...) - if err != nil { - return nil, err - } - return ParseUpsertSubjectResponse(rsp) -} + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest -func (c *ClientWithResponses) UpsertSubjectWithResponse(ctx context.Context, body UpsertSubjectJSONRequestBody, reqEditors ...RequestEditorFn) (*UpsertSubjectResponse, error) { - rsp, err := c.UpsertSubject(ctx, body, reqEditors...) - if err != nil { - return nil, err - } - return ParseUpsertSubjectResponse(rsp) -} + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest -// DeleteSubjectWithResponse request returning *DeleteSubjectResponse -func (c *ClientWithResponses) DeleteSubjectWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*DeleteSubjectResponse, error) { - rsp, err := c.DeleteSubject(ctx, subjectIdOrKey, reqEditors...) - if err != nil { - return nil, err } - return ParseDeleteSubjectResponse(rsp) -} -// GetSubjectWithResponse request returning *GetSubjectResponse -func (c *ClientWithResponses) GetSubjectWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, reqEditors ...RequestEditorFn) (*GetSubjectResponse, error) { - rsp, err := c.GetSubject(ctx, subjectIdOrKey, reqEditors...) - if err != nil { - return nil, err - } - return ParseGetSubjectResponse(rsp) + return response, nil } -// ListSubjectEntitlementsWithResponse request returning *ListSubjectEntitlementsResponse -func (c *ClientWithResponses) ListSubjectEntitlementsWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, params *ListSubjectEntitlementsParams, reqEditors ...RequestEditorFn) (*ListSubjectEntitlementsResponse, error) { - rsp, err := c.ListSubjectEntitlements(ctx, subjectIdOrKey, params, reqEditors...) +// ParseVoidGrantResponse parses an HTTP response from a VoidGrantWithResponse call +func ParseVoidGrantResponse(rsp *http.Response) (*VoidGrantResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseListSubjectEntitlementsResponse(rsp) -} -// CreateEntitlementWithBodyWithResponse request with arbitrary body returning *CreateEntitlementResponse -func (c *ClientWithResponses) CreateEntitlementWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateEntitlementResponse, error) { - rsp, err := c.CreateEntitlementWithBody(ctx, subjectIdOrKey, contentType, body, reqEditors...) - if err != nil { - return nil, err + response := &VoidGrantResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } - return ParseCreateEntitlementResponse(rsp) -} -func (c *ClientWithResponses) CreateEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, body CreateEntitlementJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateEntitlementResponse, error) { - rsp, err := c.CreateEntitlement(ctx, subjectIdOrKey, body, reqEditors...) - if err != nil { - return nil, err - } - return ParseCreateEntitlementResponse(rsp) -} + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest BadRequestProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest NotFoundProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest ConflictProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON409 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest -// ListEntitlementGrantsWithResponse request returning *ListEntitlementGrantsResponse -func (c *ClientWithResponses) ListEntitlementGrantsWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *ListEntitlementGrantsParams, reqEditors ...RequestEditorFn) (*ListEntitlementGrantsResponse, error) { - rsp, err := c.ListEntitlementGrants(ctx, subjectIdOrKey, entitlementIdOrFeatureKey, params, reqEditors...) - if err != nil { - return nil, err } - return ParseListEntitlementGrantsResponse(rsp) + + return response, nil } -// CreateGrantWithBodyWithResponse request with arbitrary body returning *CreateGrantResponse -func (c *ClientWithResponses) CreateGrantWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateGrantResponse, error) { - rsp, err := c.CreateGrantWithBody(ctx, subjectIdOrKey, entitlementIdOrFeatureKey, contentType, body, reqEditors...) +// ParseListMetersResponse parses an HTTP response from a ListMetersWithResponse call +func ParseListMetersResponse(rsp *http.Response) (*ListMetersResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseCreateGrantResponse(rsp) -} -func (c *ClientWithResponses) CreateGrantWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, body CreateGrantJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateGrantResponse, error) { - rsp, err := c.CreateGrant(ctx, subjectIdOrKey, entitlementIdOrFeatureKey, body, reqEditors...) - if err != nil { - return nil, err + response := &ListMetersResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } - return ParseCreateGrantResponse(rsp) -} -// GetEntitlementValueWithResponse request returning *GetEntitlementValueResponse -func (c *ClientWithResponses) GetEntitlementValueWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementIdOrFeatureKey EntitlementIdOrFeatureKey, params *GetEntitlementValueParams, reqEditors ...RequestEditorFn) (*GetEntitlementValueResponse, error) { - rsp, err := c.GetEntitlementValue(ctx, subjectIdOrKey, entitlementIdOrFeatureKey, params, reqEditors...) - if err != nil { - return nil, err + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []Meter + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest + } - return ParseGetEntitlementValueResponse(rsp) + + return response, nil } -// DeleteEntitlementWithResponse request returning *DeleteEntitlementResponse -func (c *ClientWithResponses) DeleteEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, reqEditors ...RequestEditorFn) (*DeleteEntitlementResponse, error) { - rsp, err := c.DeleteEntitlement(ctx, subjectIdOrKey, entitlementId, reqEditors...) +// ParseCreateMeterResponse parses an HTTP response from a CreateMeterWithResponse call +func ParseCreateMeterResponse(rsp *http.Response) (*CreateMeterResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseDeleteEntitlementResponse(rsp) -} -// GetEntitlementWithResponse request returning *GetEntitlementResponse -func (c *ClientWithResponses) GetEntitlementWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, reqEditors ...RequestEditorFn) (*GetEntitlementResponse, error) { - rsp, err := c.GetEntitlement(ctx, subjectIdOrKey, entitlementId, reqEditors...) - if err != nil { - return nil, err + response := &CreateMeterResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } - return ParseGetEntitlementResponse(rsp) -} -// GetEntitlementHistoryWithResponse request returning *GetEntitlementHistoryResponse -func (c *ClientWithResponses) GetEntitlementHistoryWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, params *GetEntitlementHistoryParams, reqEditors ...RequestEditorFn) (*GetEntitlementHistoryResponse, error) { - rsp, err := c.GetEntitlementHistory(ctx, subjectIdOrKey, entitlementId, params, reqEditors...) - if err != nil { - return nil, err - } - return ParseGetEntitlementHistoryResponse(rsp) -} + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest Meter + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON201 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest BadRequestProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 501: + var dest NotImplementedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON501 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest UnexpectedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSONDefault = &dest -// ResetEntitlementUsageWithBodyWithResponse request with arbitrary body returning *ResetEntitlementUsageResponse -func (c *ClientWithResponses) ResetEntitlementUsageWithBodyWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*ResetEntitlementUsageResponse, error) { - rsp, err := c.ResetEntitlementUsageWithBody(ctx, subjectIdOrKey, entitlementId, contentType, body, reqEditors...) - if err != nil { - return nil, err } - return ParseResetEntitlementUsageResponse(rsp) -} -func (c *ClientWithResponses) ResetEntitlementUsageWithResponse(ctx context.Context, subjectIdOrKey SubjectIdOrKey, entitlementId EntitlementId, body ResetEntitlementUsageJSONRequestBody, reqEditors ...RequestEditorFn) (*ResetEntitlementUsageResponse, error) { - rsp, err := c.ResetEntitlementUsage(ctx, subjectIdOrKey, entitlementId, body, reqEditors...) - if err != nil { - return nil, err - } - return ParseResetEntitlementUsageResponse(rsp) + return response, nil } -// ParseGetDebugMetricsResponse parses an HTTP response from a GetDebugMetricsWithResponse call -func ParseGetDebugMetricsResponse(rsp *http.Response) (*GetDebugMetricsResponse, error) { +// ParseDeleteMeterResponse parses an HTTP response from a DeleteMeterWithResponse call +func ParseDeleteMeterResponse(rsp *http.Response) (*DeleteMeterResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetDebugMetricsResponse{ + response := &DeleteMeterResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedProblemResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest NotFoundProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.ApplicationproblemJSON401 = &dest + response.ApplicationproblemJSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 501: + var dest NotImplementedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON501 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse @@ -5407,40 +8002,33 @@ func ParseGetDebugMetricsResponse(rsp *http.Response) (*GetDebugMetricsResponse, return response, nil } -// ParseListEntitlementsResponse parses an HTTP response from a ListEntitlementsWithResponse call -func ParseListEntitlementsResponse(rsp *http.Response) (*ListEntitlementsResponse, error) { +// ParseGetMeterResponse parses an HTTP response from a GetMeterWithResponse call +func ParseGetMeterResponse(rsp *http.Response) (*GetMeterResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListEntitlementsResponse{ + response := &GetMeterResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest []Entitlement + var dest Meter if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest BadRequestProblemResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.ApplicationproblemJSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedProblemResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest NotFoundProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.ApplicationproblemJSON401 = &dest + response.ApplicationproblemJSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse @@ -5454,22 +8042,22 @@ func ParseListEntitlementsResponse(rsp *http.Response) (*ListEntitlementsRespons return response, nil } -// ParseListEventsResponse parses an HTTP response from a ListEventsWithResponse call -func ParseListEventsResponse(rsp *http.Response) (*ListEventsResponse, error) { +// ParseQueryMeterResponse parses an HTTP response from a QueryMeterWithResponse call +func ParseQueryMeterResponse(rsp *http.Response) (*QueryMeterResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListEventsResponse{ + response := &QueryMeterResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest []IngestedEvent + var dest MeterQueryResult if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -5496,38 +8084,41 @@ func ParseListEventsResponse(rsp *http.Response) (*ListEventsResponse, error) { } response.ApplicationproblemJSONDefault = &dest + case rsp.StatusCode == 200: + // Content-type (text/csv) unsupported + } return response, nil } -// ParseIngestEventsResponse parses an HTTP response from a IngestEventsWithResponse call -func ParseIngestEventsResponse(rsp *http.Response) (*IngestEventsResponse, error) { +// ParseListMeterSubjectsResponse parses an HTTP response from a ListMeterSubjectsWithResponse call +func ParseListMeterSubjectsResponse(rsp *http.Response) (*ListMeterSubjectsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &IngestEventsResponse{ + response := &ListMeterSubjectsResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest BadRequestProblemResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []string if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.ApplicationproblemJSON400 = &dest + response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedProblemResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest BadRequestProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.ApplicationproblemJSON401 = &dest + response.ApplicationproblemJSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse @@ -5541,22 +8132,22 @@ func ParseIngestEventsResponse(rsp *http.Response) (*IngestEventsResponse, error return response, nil } -// ParseListFeaturesResponse parses an HTTP response from a ListFeaturesWithResponse call -func ParseListFeaturesResponse(rsp *http.Response) (*ListFeaturesResponse, error) { +// ParseListNotificationChannelsResponse parses an HTTP response from a ListNotificationChannelsWithResponse call +func ParseListNotificationChannelsResponse(rsp *http.Response) (*ListNotificationChannelsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListFeaturesResponse{ + response := &ListNotificationChannelsResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest []Feature + var dest NotificationChannels if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -5588,22 +8179,22 @@ func ParseListFeaturesResponse(rsp *http.Response) (*ListFeaturesResponse, error return response, nil } -// ParseCreateFeatureResponse parses an HTTP response from a CreateFeatureWithResponse call -func ParseCreateFeatureResponse(rsp *http.Response) (*CreateFeatureResponse, error) { +// ParseCreateNotificationChannelResponse parses an HTTP response from a CreateNotificationChannelWithResponse call +func ParseCreateNotificationChannelResponse(rsp *http.Response) (*CreateNotificationChannelResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateFeatureResponse{ + response := &CreateNotificationChannelResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Feature + var dest NotificationChannel if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -5623,12 +8214,12 @@ func ParseCreateFeatureResponse(rsp *http.Response) (*CreateFeatureResponse, err } response.ApplicationproblemJSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 501: - var dest NotImplementedProblemResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest ConflictProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.ApplicationproblemJSON501 = &dest + response.ApplicationproblemJSON409 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse @@ -5642,15 +8233,15 @@ func ParseCreateFeatureResponse(rsp *http.Response) (*CreateFeatureResponse, err return response, nil } -// ParseDeleteFeatureResponse parses an HTTP response from a DeleteFeatureWithResponse call -func ParseDeleteFeatureResponse(rsp *http.Response) (*DeleteFeatureResponse, error) { +// ParseDeleteNotificationChannelResponse parses an HTTP response from a DeleteNotificationChannelWithResponse call +func ParseDeleteNotificationChannelResponse(rsp *http.Response) (*DeleteNotificationChannelResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteFeatureResponse{ + response := &DeleteNotificationChannelResponse{ Body: bodyBytes, HTTPResponse: rsp, } @@ -5682,22 +8273,22 @@ func ParseDeleteFeatureResponse(rsp *http.Response) (*DeleteFeatureResponse, err return response, nil } -// ParseGetFeatureResponse parses an HTTP response from a GetFeatureWithResponse call -func ParseGetFeatureResponse(rsp *http.Response) (*GetFeatureResponse, error) { +// ParseGetNotificationChannelResponse parses an HTTP response from a GetNotificationChannelWithResponse call +func ParseGetNotificationChannelResponse(rsp *http.Response) (*GetNotificationChannelResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetFeatureResponse{ + response := &GetNotificationChannelResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Feature + var dest NotificationChannel if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -5729,22 +8320,22 @@ func ParseGetFeatureResponse(rsp *http.Response) (*GetFeatureResponse, error) { return response, nil } -// ParseListGrantsResponse parses an HTTP response from a ListGrantsWithResponse call -func ParseListGrantsResponse(rsp *http.Response) (*ListGrantsResponse, error) { +// ParseUpdateNotificationChannelResponse parses an HTTP response from a UpdateNotificationChannelWithResponse call +func ParseUpdateNotificationChannelResponse(rsp *http.Response) (*UpdateNotificationChannelResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListGrantsResponse{ + response := &UpdateNotificationChannelResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest []EntitlementGrant + var dest NotificationChannel if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -5757,6 +8348,13 @@ func ParseListGrantsResponse(rsp *http.Response) (*ListGrantsResponse, error) { } response.ApplicationproblemJSON401 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest NotFoundProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON404 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -5769,20 +8367,27 @@ func ParseListGrantsResponse(rsp *http.Response) (*ListGrantsResponse, error) { return response, nil } -// ParseVoidGrantResponse parses an HTTP response from a VoidGrantWithResponse call -func ParseVoidGrantResponse(rsp *http.Response) (*VoidGrantResponse, error) { +// ParseListNotificationEventsResponse parses an HTTP response from a ListNotificationEventsWithResponse call +func ParseListNotificationEventsResponse(rsp *http.Response) (*ListNotificationEventsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &VoidGrantResponse{ + response := &ListNotificationEventsResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []NotificationEvent + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest BadRequestProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -5797,20 +8402,6 @@ func ParseVoidGrantResponse(rsp *http.Response) (*VoidGrantResponse, error) { } response.ApplicationproblemJSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest NotFoundProblemResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.ApplicationproblemJSON404 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: - var dest ConflictProblemResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.ApplicationproblemJSON409 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -5823,22 +8414,24 @@ func ParseVoidGrantResponse(rsp *http.Response) (*VoidGrantResponse, error) { return response, nil } -// ParseListMetersResponse parses an HTTP response from a ListMetersWithResponse call -func ParseListMetersResponse(rsp *http.Response) (*ListMetersResponse, error) { +// ParseGetNotificationEventResponse parses an HTTP response from a GetNotificationEventWithResponse call +func ParseGetNotificationEventResponse(rsp *http.Response) (*GetNotificationEventResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListMetersResponse{ + response := &GetNotificationEventResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest []Meter + var dest struct { + union json.RawMessage + } if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -5851,6 +8444,13 @@ func ParseListMetersResponse(rsp *http.Response) (*ListMetersResponse, error) { } response.ApplicationproblemJSON401 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest NotFoundProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON404 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -5863,26 +8463,26 @@ func ParseListMetersResponse(rsp *http.Response) (*ListMetersResponse, error) { return response, nil } -// ParseCreateMeterResponse parses an HTTP response from a CreateMeterWithResponse call -func ParseCreateMeterResponse(rsp *http.Response) (*CreateMeterResponse, error) { +// ParseListNotificationRulesResponse parses an HTTP response from a ListNotificationRulesWithResponse call +func ParseListNotificationRulesResponse(rsp *http.Response) (*ListNotificationRulesResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateMeterResponse{ + response := &ListNotificationRulesResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Meter + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest NotificationRules if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON201 = &dest + response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest BadRequestProblemResponse @@ -5898,13 +8498,6 @@ func ParseCreateMeterResponse(rsp *http.Response) (*CreateMeterResponse, error) } response.ApplicationproblemJSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 501: - var dest NotImplementedProblemResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.ApplicationproblemJSON501 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -5917,33 +8510,47 @@ func ParseCreateMeterResponse(rsp *http.Response) (*CreateMeterResponse, error) return response, nil } -// ParseDeleteMeterResponse parses an HTTP response from a DeleteMeterWithResponse call -func ParseDeleteMeterResponse(rsp *http.Response) (*DeleteMeterResponse, error) { +// ParseCreateNotificationRuleResponse parses an HTTP response from a CreateNotificationRuleWithResponse call +func ParseCreateNotificationRuleResponse(rsp *http.Response) (*CreateNotificationRuleResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteMeterResponse{ + response := &CreateNotificationRuleResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest NotFoundProblemResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest NotificationRule if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.ApplicationproblemJSON404 = &dest + response.JSON201 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 501: - var dest NotImplementedProblemResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest BadRequestProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.ApplicationproblemJSON501 = &dest + response.ApplicationproblemJSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest ConflictProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON409 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse @@ -5957,26 +8564,26 @@ func ParseDeleteMeterResponse(rsp *http.Response) (*DeleteMeterResponse, error) return response, nil } -// ParseGetMeterResponse parses an HTTP response from a GetMeterWithResponse call -func ParseGetMeterResponse(rsp *http.Response) (*GetMeterResponse, error) { +// ParseDeleteNotificationRuleResponse parses an HTTP response from a DeleteNotificationRuleWithResponse call +func ParseDeleteNotificationRuleResponse(rsp *http.Response) (*DeleteNotificationRuleResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetMeterResponse{ + response := &DeleteNotificationRuleResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Meter + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON200 = &dest + response.ApplicationproblemJSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest NotFoundProblemResponse @@ -5997,40 +8604,40 @@ func ParseGetMeterResponse(rsp *http.Response) (*GetMeterResponse, error) { return response, nil } -// ParseQueryMeterResponse parses an HTTP response from a QueryMeterWithResponse call -func ParseQueryMeterResponse(rsp *http.Response) (*QueryMeterResponse, error) { +// ParseGetNotificationRuleResponse parses an HTTP response from a GetNotificationRuleWithResponse call +func ParseGetNotificationRuleResponse(rsp *http.Response) (*GetNotificationRuleResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &QueryMeterResponse{ + response := &GetNotificationRuleResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest MeterQueryResult + var dest NotificationRule if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest BadRequestProblemResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.ApplicationproblemJSON400 = &dest + response.ApplicationproblemJSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedProblemResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest NotFoundProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.ApplicationproblemJSON401 = &dest + response.ApplicationproblemJSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse @@ -6039,41 +8646,45 @@ func ParseQueryMeterResponse(rsp *http.Response) (*QueryMeterResponse, error) { } response.ApplicationproblemJSONDefault = &dest - case rsp.StatusCode == 200: - // Content-type (text/csv) unsupported - } return response, nil } -// ParseListMeterSubjectsResponse parses an HTTP response from a ListMeterSubjectsWithResponse call -func ParseListMeterSubjectsResponse(rsp *http.Response) (*ListMeterSubjectsResponse, error) { +// ParseUpdateNotificationRuleResponse parses an HTTP response from a UpdateNotificationRuleWithResponse call +func ParseUpdateNotificationRuleResponse(rsp *http.Response) (*UpdateNotificationRuleResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListMeterSubjectsResponse{ + response := &UpdateNotificationRuleResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest []string + var dest NotificationRule if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest BadRequestProblemResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest UnauthorizedProblemResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.ApplicationproblemJSON400 = &dest + response.ApplicationproblemJSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest NotFoundProblemResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.ApplicationproblemJSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: var dest UnexpectedProblemResponse @@ -6924,228 +9535,274 @@ func ParseResetEntitlementUsageResponse(rsp *http.Response) (*ResetEntitlementUs // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "ByNEt+9u/18AAAD//9aJ8j8jGAEA", + "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", + "evRqAQA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/openapi.yaml b/api/openapi.yaml index f9685a6c6..8354240e8 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -42,6 +42,12 @@ tags: - name: Debug description: | Debugging endpoints. Useful for debugging and testing. + - name: Notification (Experimental) + description: | + Endpoints related to notification API which allows users to define rules based on system events to send notifications + to various channels (webhook, slack, etc). + + [Learn more](https://openmeter.io/docs/getting-started/notification/overview) paths: /api/v1/events: get: @@ -1213,6 +1219,353 @@ paths: default: $ref: "#/components/responses/UnexpectedProblemResponse" + # Notification - Channels + + /api/v1/notification/channels: + get: + operationId: listNotificationChannels + summary: List notification channels + description: | + List all notification channels. + tags: + - Notification (Experimental) + parameters: + - $ref: "#/components/parameters/queryLimit" + - $ref: "#/components/parameters/queryOffset" + - name: orderBy + in: query + required: false + description: Order by field + schema: + type: string + enum: + - id + - type + - createdAt + - updatedAt + default: id + - $ref: "#/components/parameters/queryIncludeDisabled" + responses: + "200": + description: List of notification channels. + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationChannels" + "400": + $ref: "#/components/responses/BadRequestProblemResponse" + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + post: + operationId: createNotificationChannel + summary: Create a notification channel + description: | + Create a new notification channel. + tags: + - Notification (Experimental) + requestBody: + description: The notification channel to create. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationChannelCreateRequest" + responses: + "201": + description: Notification channel created. + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationChannel" + "400": + $ref: "#/components/responses/BadRequestProblemResponse" + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + "409": + $ref: "#/components/responses/ConflictProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + + /api/v1/notification/channels/{channelId}: + get: + operationId: getNotificationChannel + summary: Get notification channel + description: | + Get a notification channel by id. + tags: + - Notification (Experimental) + parameters: + - $ref: "#/components/parameters/channelId" + responses: + "200": + description: Notification channel found. + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationChannel" + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + "404": + $ref: "#/components/responses/NotFoundProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + delete: + operationId: deleteNotificationChannel + summary: Delete a notification channel + description: | + Delete notification channel by id. + tags: + - Notification (Experimental) + parameters: + - $ref: "#/components/parameters/channelId" + responses: + "204": + description: Notification channel deleted. + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + "404": + $ref: "#/components/responses/NotFoundProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + put: + operationId: updateNotificationChannel + summary: Update notification channel + description: | + Update a notification channel by id. + tags: + - Notification (Experimental) + parameters: + - $ref: "#/components/parameters/channelId" + requestBody: + description: The notification channel to update. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationChannelCreateRequest" + responses: + "200": + description: Notification channel updated. + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationChannel" + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + "404": + $ref: "#/components/responses/NotFoundProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + + # Notification - Rules + + /api/v1/notification/rules: + get: + operationId: listNotificationRules + summary: List notification rules + description: | + List all notification rules. + tags: + - Notification (Experimental) + parameters: + - $ref: "#/components/parameters/queryLimit" + - $ref: "#/components/parameters/queryOffset" + - name: orderBy + in: query + required: false + description: Order by field + schema: + type: string + enum: + - id + - type + - createdAt + - updatedAt + default: id + - $ref: "#/components/parameters/queryIncludeDisabled" + - $ref: "#/components/parameters/queryFilterFeature" + responses: + "200": + description: List of notification rules. + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRules" + "400": + $ref: "#/components/responses/BadRequestProblemResponse" + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + post: + operationId: createNotificationRule + summary: Create a notification rule + description: | + Create a new notification rule. + tags: + - Notification (Experimental) + requestBody: + description: The notification rule to create. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRuleCreateRequest" + responses: + "201": + description: Notification rule created. + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + "400": + $ref: "#/components/responses/BadRequestProblemResponse" + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + "409": + $ref: "#/components/responses/ConflictProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + + /api/v1/notification/rules/{ruleId}: + get: + operationId: getNotificationRule + summary: Get notification rule + description: | + Get a notification rule by id. + tags: + - Notification (Experimental) + parameters: + - $ref: "#/components/parameters/ruleId" + responses: + "200": + description: Rule found. + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + "404": + $ref: "#/components/responses/NotFoundProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + delete: + operationId: deleteNotificationRule + summary: Delete a notification rule + description: | + Delete notification rule by id. + tags: + - Notification (Experimental) + parameters: + - $ref: "#/components/parameters/ruleId" + responses: + "204": + description: Notification rule deleted. + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + "404": + $ref: "#/components/responses/NotFoundProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + put: + operationId: updateNotificationRule + summary: Update a notification rule + description: | + Update a notification rule by id. + tags: + - Notification (Experimental) + parameters: + - $ref: "#/components/parameters/ruleId" + requestBody: + description: The notification rule to update. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRuleCreateRequest" + responses: + "200": + description: Notification Rule updated. + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationRule" + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + "404": + $ref: "#/components/responses/NotFoundProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + + # Notifications - Events + + /api/v1/notification/events: + get: + operationId: listNotificationEvents + summary: List notification evens + description: | + List all notification events. + tags: + - Notification (Experimental) + parameters: + - $ref: "#/components/parameters/queryLimit" + - $ref: "#/components/parameters/queryOffset" + - name: orderBy + in: query + required: false + description: Order by field + schema: + type: string + enum: + - id + - createdAt + default: id + - $ref: "#/components/parameters/queryFilterFeature" + - $ref: "#/components/parameters/queryFilterSubject" + responses: + "200": + description: List of notification events. + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/NotificationEvent" + "400": + $ref: "#/components/responses/BadRequestProblemResponse" + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + + /api/v1/notification/events/{eventId}: + get: + operationId: getNotificationEvent + summary: Get notification event + description: | + Get a notification event by id. + tags: + - Notification (Experimental) + parameters: + - $ref: "#/components/parameters/eventId" + responses: + "200": + description: Notification event found. + content: + application/json: + schema: + oneOf: + - $ref: "#/components/schemas/NotificationEvent" + "401": + $ref: "#/components/responses/UnauthorizedProblemResponse" + "404": + $ref: "#/components/responses/NotFoundProblemResponse" + default: + $ref: "#/components/responses/UnexpectedProblemResponse" + components: schemas: SharedMetaFields: @@ -2342,6 +2695,442 @@ components: example: "tokens_total" example: "tokens_total" + NotificationChannelCreateRequest: + oneOf: + - $ref: "#/components/schemas/NotificationChannelWebhookCreateRequest" + discriminator: + propertyName: type + mapping: + WEBHOOK: "#/components/schemas/NotificationChannelWebhookCreateRequest" + + NotificationChannel: + oneOf: + - $ref: "#/components/schemas/NotificationChannelWebhook" + discriminator: + propertyName: type + mapping: + WEBHOOK: "#/components/schemas/NotificationChannelWebhook" + + NotificationChannels: + type: array + items: + $ref: "#/components/schemas/NotificationChannel" + + NotificationChannelWebhookCreateRequest: + allOf: + - $ref: "#/components/schemas/GenericNotificationChannelCreateRequest" + - type: object + description: "Request for updating existing webhook notification channel." + required: + - url + properties: + url: + description: Webhook URL where the notification is sent. + type: string + example: "https://example.com/webhook" + customHeaders: + description: Custom HTTP headers sent as part of the webhook request. + type: object + additionalProperties: true + nullable: true + example: + X-CUSTOM-HEADER: "value" + signingSecret: + description: | + Signing secret used for webhook request validation on the receiving end. Automatically generated if not provided. + + Format: `base64` encoded random bytes optionally prefixed with `whsec_`. Recommended size: 24 + type: string + pattern: "^(whsec_)?[a-zA-Z0-9+/=]{32,100}$" + nullable: true + example: "whsec_S6g2HLnTwd9AhHwUIMFggVS9OfoPafN8" + + NotificationChannelWebhook: + allOf: + - $ref: "#/components/schemas/GenericNotificationChannel" + - type: object + description: "Webhook type of notification channel" + required: + - url + - signingSecret + properties: + url: + description: Webhook URL where the notification is sent. + type: string + example: "https://example.com/webhook" + customHeaders: + description: Custom HTTP headers sent as part of the webhook request. + type: object + additionalProperties: true + nullable: true + example: + X-CUSTOM-HEADER: "value" + signingSecret: + description: | + Signing secret used for webhook request validation on the receiving end. + + Format: `base64` encoded random bytes optionally prefixed with `whsec_`. Recommended size: 24 + type: string + pattern: "^(whsec_)?[a-zA-Z0-9+/=]{32,100}$" + example: "whsec_S6g2HLnTwd9AhHwUIMFggVS9OfoPafN8" + + NotificationChannelType: + description: The type of the notification channel. + type: string + enum: + - WEBHOOK + example: WEBHOOK + + GenericNotificationChannelCreateRequest: + type: object + required: + - name + - type + properties: + name: + description: User friendly name of the channel. + type: string + example: "customer-webhook" + disabled: + description: Whether the channel is disabled or not. + type: boolean + default: false + example: false + type: + $ref: "#/components/schemas/NotificationChannelType" + + GenericNotificationChannel: + type: object + required: + - id + - type + properties: + id: + description: A unique identifier for the notification channel. + type: string + example: "01J2KNP1YTXQRXHTDJ4KPR7PZ0" + type: + $ref: "#/components/schemas/NotificationChannelType" + name: + description: User friendly name of the channel. + type: string + example: "customer-webhook" + createdAt: + description: Timestamp when the channel was created. + type: string + format: date-time + example: "2023-01-01T00:00:00Z" + updatedAt: + description: Timestamp when the channel was modified. + type: string + format: date-time + readOnly: true + example: "2023-01-02T00:00:00Z" + disabled: + description: Whether the channel is disabled or not. + type: boolean + default: false + example: false + + NotificationRuleCreateRequest: + oneOf: + - $ref: "#/components/schemas/NotificationRuleBalanceThresholdCreateRequest" + discriminator: + propertyName: type + mapping: + entitlements.balance.threshold: "#/components/schemas/NotificationRuleBalanceThresholdCreateRequest" + + NotificationRule: + oneOf: + - $ref: "#/components/schemas/NotificationRuleBalanceThreshold" + discriminator: + propertyName: type + mapping: + entitlements.balance.threshold: "#/components/schemas/NotificationRuleBalanceThreshold" + + NotificationRules: + type: array + items: + $ref: "#/components/schemas/NotificationRule" + + NotificationRuleBalanceThresholdCreateRequest: + allOf: + - $ref: "#/components/schemas/GenericNotificationRuleCreateRequest" + - type: object + required: + - thresholds + properties: + thresholds: + description: List of thresholds the rule suppose to be triggered. + type: array + items: + $ref: "#/components/schemas/NotificationRuleBalanceThresholdValue" + minItems: 1 + maxItems: 10 + example: + - value: 100 + type: PERCENT + - value: 10000 + type: NUMBER + features: + description: Optional field for defining the scope of notification by feature. + type: array + uniqueItems: true + nullable: true + items: + type: string + example: + - gpt4_tokens + + NotificationRuleBalanceThresholdValue: + description: Threshold value with multiple supported types. + type: object + required: + - value + - type + properties: + value: + type: number + format: double + type: + type: string + enum: + - NUMBER + - PERCENT + + NotificationRuleBalanceThreshold: + allOf: + - $ref: "#/components/schemas/GenericNotificationRule" + - type: object + description: Defines notification rule base on balance thresholds. + required: + - thresholds + properties: + thresholds: + description: List of thresholds the rule suppose to be triggered. + type: array + items: + $ref: "#/components/schemas/NotificationRuleBalanceThresholdValue" + example: + - value: 100 + type: PERCENT + - value: 10000 + type: NUMBER + features: + description: Optional field for scoping notification based by features. + type: array + uniqueItems: true + nullable: true + items: + type: string + example: + - gpt4_tokens + + NotificationRuleType: + description: The type of the notification rule. + type: string + enum: + - "entitlements.balance.threshold" + example: "entitlements.balance.threshold" + + GenericNotificationRuleCreateRequest: + type: object + description: Defines the common fields of a notification rule. + required: + - type + - name + - channels + - disabled + properties: + type: + $ref: "#/components/schemas/NotificationRuleType" + name: + type: string + description: The user friendly name of the notification rule. + example: "Balance threshold reached" + channels: + description: List of notification channel identifiers or names the rule applies to. + type: array + items: + type: string + minItems: 1 + maxItems: 5 + example: + - "01G65Z755AFWAKHE12NY0CQ9FH" + disabled: + description: Whether the rule is disabled or not. + type: boolean + default: false + example: false + + GenericNotificationRule: + type: object + description: Defines the common fields of a notification rule. + required: + - id + - type + properties: + id: + description: A unique identifier for the notification rule. + type: string + example: "01J2KNP1YTXQRXHTDJ4KPR7PZ0" + type: + $ref: "#/components/schemas/NotificationRuleType" + name: + type: string + description: The user friendly name of the notification rule. + example: "Balance threshold reached" + channels: + description: List of notification channel identifiers the rule applies to. + type: array + items: + type: string + example: + - "01G65Z755AFWAKHE12NY0CQ9FH" + createdAt: + description: Timestamp when the rule was created. + type: string + format: date-time + example: "2023-01-01T00:00:00Z" + updatedAt: + description: Timestamp when the rule was modified. + type: string + format: date-time + example: "2023-01-02T00:00:00Z" + disabled: + description: Whether the rule is disabled or not. + type: boolean + default: false + example: false + + NotificationEvent: + type: object + description: | + Notification event generated by the system based on the criteria defined in the corresponding + a notification rule. + + The `payload` field contains the actual message sent to the notification channel. + required: + - id + - createdAt + - ruleId + - deliveryStatus + - payload + properties: + id: + description: A unique identifier for the notification event. + type: string + example: "01J2KNP1YTXQRXHTDJ4KPR7PZ0" + createdAt: + description: Timestamp when the notification event was created. + type: string + format: date-time + example: "2023-01-01T00:00:00Z" + ruleId: + description: The identifier of the Notification Rule which triggered this event. + type: string + example: "01J2KNP1YTXQRXHTDJ4KPR7PZ0" + featureId: + description: The identifier of the feature defined in notification rule triggered this event. + type: string + example: "01ARZ3NDEKTSV4RRFFQ69G5FAV" + subjectId: + description: The identifier of the feature defined in notification rule triggered this event. + type: string + example: "01G65Z755AFWAKHE12NY0CQ9FH" + deliveryStatus: + description: The delivery status of the notification event. + type: array + items: + $ref: "#/components/schemas/NotificationEventDeliveryStatus" + payload: + $ref: "#/components/schemas/NotificationEventPayload" + + NotificationEventPayload: + description: | + The actual payload sent to channel as part of the notification event. + + The `data` field contains the information specific to the notification event + which may vary based on the `type` of the event. + type: object + required: + - id + - type + - timestamp + - data + properties: + id: + description: A unique identifier for the notification event. + type: string + example: "01J34ZDJC70G3NP8TK1ZY6A297" + type: + description: The type of teh notification rule generated this event. + type: string + example: "entitlements.balance.threshold" + metadata: + description: Metadata information releted to the event. + type: object + additionalProperties: true + nullable: true + timestamp: + description: Timestamp when the notification event was created. + type: string + format: date-time + example: "2023-01-01T00:00:00Z" + data: + description: | + Event type specific data. + + The format may vary based on the type of the event and the schema is defined for each event type separately. + type: object + additionalProperties: true + example: + currentBalance: 10000 + threshold: "120%" + feature: + archivedAt: "2023-01-01T00:00:00Z" + key: "gpt4_tokens" + name: "AI Tokens" + metadata: + additionalProp1: "value1" + meterSlug: "tokens_total" + meterGroupByFilters: + model: "gpt-4" + id: "01ARZ3NDEKTSV4RRFFQ69G5FAV" + createdAt: "2023-01-01T00:00:00Z" + updatedAt: "2023-01-01T00:00:00Z" + subject: + id: "01G65Z755AFWAKHE12NY0CQ9FH" + key: "customer-id" + displayName: "Customer Name" + metadata: + hubspotId: "123456" + currentPeriodStart: "2023-01-01T00:00:00Z" + currentPeriodEnd: "2023-02-01T00:00:00Z" + + NotificationEventDeliveryStatus: + type: object + required: + - channelId + - state + - updatedAt + properties: + channelId: + type: string + state: + type: string + enum: + - SUCCESS + - FAILED + - SENDING + updatedAt: + type: string + format: date-time + example: + channelId: "01J2ZS1ZSXZ61G5C2CZRK4GQKK" + state: "SUCCESS" + updatedAt: "2023-01-01T00:00:00Z" + parameters: meterIdOrSlug: name: meterIdOrSlug @@ -2473,6 +3262,18 @@ components: type: array items: type: string + queryFilterFeature: + name: feature + description: | + Filtering by multiple features. + + Usage: `?feature=feature-1&feature=feature-2` + in: query + required: false + schema: + type: array + items: + type: string queryFilterGroupBy: name: filterGroupBy in: query @@ -2503,10 +3304,43 @@ components: example: - model - type + channelId: + name: channelId + description: A unique ULID identifier for a notification channel. + in: path + required: true + schema: + type: string + example: 01ARZ3NDEKTSV4RRFFQ69G5FAV + ruleId: + name: ruleId + description: A unique ULID identifier for a notification rule. + in: path + required: true + schema: + type: string + example: 01J2XYZEPMCKMBKAHXJZF8S3YQ + eventId: + name: eventId + description: A unique ULID identifier for a notification event. + in: path + required: true + schema: + type: string + example: 01J2XYZEPMCKMBKAHXJZF8S3YQ + queryIncludeDisabled: + name: includeDisabled + in: query + required: false + description: Include disabled entries. + schema: + type: boolean + default: false + example: true responses: ConflictProblemResponse: - description: Ledger Exists + description: Conflict content: application/problem+json: schema: diff --git a/internal/server/router/notification.go b/internal/server/router/notification.go new file mode 100644 index 000000000..39fe0aa54 --- /dev/null +++ b/internal/server/router/notification.go @@ -0,0 +1,79 @@ +package router + +import ( + "net/http" + + "github.com/openmeterio/openmeter/api" +) + +// List notification channels +// (GET /api/v1/notification/channels) +func (a *Router) ListNotificationChannels(w http.ResponseWriter, r *http.Request, params api.ListNotificationChannelsParams) { + unimplemented.ListNotificationChannels(w, r, params) +} + +// Create a notification channel +// (POST /api/v1/notification/channels) +func (a *Router) CreateNotificationChannel(w http.ResponseWriter, r *http.Request) { + unimplemented.CreateNotificationChannel(w, r) +} + +// Delete a notification channel +// (DELETE /api/v1/notification/channels/{channelId}) +func (a *Router) DeleteNotificationChannel(w http.ResponseWriter, r *http.Request, channelID api.ChannelId) { + unimplemented.DeleteNotificationChannel(w, r, channelID) +} + +// Get notification channel +// (GET /api/v1/notification/channels/{channelId}) +func (a *Router) GetNotificationChannel(w http.ResponseWriter, r *http.Request, channelID api.ChannelId) { + unimplemented.GetNotificationChannel(w, r, channelID) +} + +// Update notification channel +// (PUT /api/v1/notification/channels/{channelId}) +func (a *Router) UpdateNotificationChannel(w http.ResponseWriter, r *http.Request, channelID api.ChannelId) { + unimplemented.UpdateNotificationChannel(w, r, channelID) +} + +// List notification evens +// (GET /api/v1/notification/events) +func (a *Router) ListNotificationEvents(w http.ResponseWriter, r *http.Request, params api.ListNotificationEventsParams) { + unimplemented.ListNotificationEvents(w, r, params) +} + +// Get notification event +// (GET /api/v1/notification/events/{eventId}) +func (a *Router) GetNotificationEvent(w http.ResponseWriter, r *http.Request, eventID api.EventId) { + unimplemented.GetNotificationEvent(w, r, eventID) +} + +// List notification rules +// (GET /api/v1/notification/rules) +func (a *Router) ListNotificationRules(w http.ResponseWriter, r *http.Request, params api.ListNotificationRulesParams) { + unimplemented.ListNotificationRules(w, r, params) +} + +// Create a notification rule +// (POST /api/v1/notification/rules) +func (a *Router) CreateNotificationRule(w http.ResponseWriter, r *http.Request) { + unimplemented.CreateNotificationRule(w, r) +} + +// Delete a notification rule +// (DELETE /api/v1/notification/rules/{ruleId}) +func (a *Router) DeleteNotificationRule(w http.ResponseWriter, r *http.Request, ruleID api.RuleId) { + unimplemented.DeleteNotificationRule(w, r, ruleID) +} + +// Get notification rule +// (GET /api/v1/notification/rules/{ruleId}) +func (a *Router) GetNotificationRule(w http.ResponseWriter, r *http.Request, ruleID api.RuleId) { + unimplemented.GetNotificationRule(w, r, ruleID) +} + +// Update a notification rule +// (PUT /api/v1/notification/rules/{ruleId}) +func (a *Router) UpdateNotificationRule(w http.ResponseWriter, r *http.Request, ruleID api.RuleId) { + unimplemented.UpdateNotificationRule(w, r, ruleID) +}