//go:build go1.22

// Package generated provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.8.0 DO NOT EDIT.
package generated

import (
	"bytes"
	"compress/flate"
	"context"
	"encoding/base64"
	"encoding/json"
	"errors"
	"fmt"
	"net/http"
	"net/url"
	"path"
	"strings"

	"github.com/getkin/kin-openapi/openapi3"
	"github.com/oapi-codegen/runtime"
	openapi_types "github.com/oapi-codegen/runtime/types"
	externalRef0 "github.com/openshift-kni/oran-o2ims/internal/service/common/api/generated"
)

// Defines values for InventoryChangeNotificationNotificationEventType.
const (
	N0 InventoryChangeNotificationNotificationEventType = 0
	N1 InventoryChangeNotificationNotificationEventType = 1
	N2 InventoryChangeNotificationNotificationEventType = 2
)

// Valid indicates whether the value is a known member of the InventoryChangeNotificationNotificationEventType enum.
func (e InventoryChangeNotificationNotificationEventType) Valid() bool {
	switch e {
	case N0:
		return true
	case N1:
		return true
	case N2:
		return true
	default:
		return false
	}
}

// Defines values for LocationInfoCoordinateType.
const (
	Point LocationInfoCoordinateType = "Point"
)

// Valid indicates whether the value is a known member of the LocationInfoCoordinateType enum.
func (e LocationInfoCoordinateType) Valid() bool {
	switch e {
	case Point:
		return true
	default:
		return false
	}
}

// Defines values for ResourceTypeResourceClass.
const (
	ResourceTypeResourceClassCOMPUTE    ResourceTypeResourceClass = "COMPUTE"
	ResourceTypeResourceClassNETWORKING ResourceTypeResourceClass = "NETWORKING"
	ResourceTypeResourceClassSTORAGE    ResourceTypeResourceClass = "STORAGE"
	ResourceTypeResourceClassUNDEFINED  ResourceTypeResourceClass = "UNDEFINED"
)

// Valid indicates whether the value is a known member of the ResourceTypeResourceClass enum.
func (e ResourceTypeResourceClass) Valid() bool {
	switch e {
	case ResourceTypeResourceClassCOMPUTE:
		return true
	case ResourceTypeResourceClassNETWORKING:
		return true
	case ResourceTypeResourceClassSTORAGE:
		return true
	case ResourceTypeResourceClassUNDEFINED:
		return true
	default:
		return false
	}
}

// Defines values for ResourceTypeResourceKind.
const (
	ResourceTypeResourceKindLOGICAL   ResourceTypeResourceKind = "LOGICAL"
	ResourceTypeResourceKindPHYSICAL  ResourceTypeResourceKind = "PHYSICAL"
	ResourceTypeResourceKindUNDEFINED ResourceTypeResourceKind = "UNDEFINED"
)

// Valid indicates whether the value is a known member of the ResourceTypeResourceKind enum.
func (e ResourceTypeResourceKind) Valid() bool {
	switch e {
	case ResourceTypeResourceKindLOGICAL:
		return true
	case ResourceTypeResourceKindPHYSICAL:
		return true
	case ResourceTypeResourceKindUNDEFINED:
		return true
	default:
		return false
	}
}

// DeploymentManager Information about a deployment manager.
type DeploymentManager struct {
	// Capabilities Information about the capabilities supported by the Deployment Manager and its set of deployment management
	// services based on the resources allocated to the Deployment Manager.
	Capabilities map[string]interface{} `json:"capabilities"`

	// Capacity Information about the available, allocated and reserved capacity of O-Cloud Resources allocated to the
	// Deployment Manager.
	Capacity map[string]interface{} `json:"capacity"`

	// DeploymentManagerId Identifier for the Deployment Manager. This identifier is allocated by the O-Cloud.
	//
	// Example: 65221564-8b05-416a-bfc3-c250bc64e1aa
	DeploymentManagerId openapi_types.UUID `json:"deploymentManagerId"`

	// Description Human readable description of the deployment manager
	//
	// Example: My cluster
	Description string `json:"description"`

	// Extensions List of metadata key-value pairs used to associate meaningful metadata to the related Deployment Manager.
	Extensions *map[string]interface{} `json:"extensions,omitempty"`

	// Name Human readable description of the deployment manager
	Name string `json:"name"`

	// OCloudId Identifier for the containing O-Cloud.
	//
	// Example: 262c8f17-52b5-4614-9e56-812ae21fa8a7
	OCloudId openapi_types.UUID `json:"oCloudId"`

	// ServiceUri The fully qualified URI to a Deployment Management server for O2dms services. Since the O2dms provides
	// multiple services, this entry is for the {apiRoot} only.
	//
	//
	// Example: https://my.cluster:6443
	ServiceUri string `json:"serviceUri"`

	// SupportedLocations List of globalLocationIDs that were assigned to the OCloud Site(s) which this Deployment Manager supports.
	SupportedLocations []string `json:"supportedLocations"`
}

// InventoryChangeNotification Information about an inventory change notification
type InventoryChangeNotification struct {
	// ConsumerSubscriptionId The value provided by the consumer in the subscription
	ConsumerSubscriptionId *openapi_types.UUID `json:"consumerSubscriptionId,omitempty"`

	// NotificationEventType One of the following values: 0 - create, 1 - modify, 2 - delete
	NotificationEventType InventoryChangeNotificationNotificationEventType `json:"notificationEventType"`

	// NotificationId A unique identifier to represent this notification event
	NotificationId openapi_types.UUID `json:"notificationId"`

	// ObjectRef The URL to the object. This is not required if the notificationEventType is 2 (DELETE). It will point to
	// one of the following data types defined in clause 3.2.6 and the reference will match the type of objects
	// supplied in priorObjectState and/or postObjectState.
	ObjectRef *string `json:"objectRef,omitempty"`

	// PostObjectState This is required if the notificationEventType is 0 (CREATE) or 1 (MODIFY) and is one of the following data
	// types defined in clause 3.2.6 and will match the type of object in priorObjectState and/or the type
	// referred to in objectRef.
	PostObjectState *map[string]interface{} `json:"postObjectState,omitempty"`

	// PriorObjectState This is required if the notificationEventType is 1 (MODIFY) or 2 (DELETE) and is one of the following
	// data types defined in clause 3.2.6 and will match the type of object in postObjectState and/or the type
	// referred to in objectRef.
	PriorObjectState *map[string]interface{} `json:"priorObjectState,omitempty"`
}

// InventoryChangeNotificationNotificationEventType One of the following values: 0 - create, 1 - modify, 2 - delete
type InventoryChangeNotificationNotificationEventType int

// LocationInfo Information about a location where O-Cloud Sites can be available.
//
// NOTE: Per O-RAN.WG6.TS.O2IMS-INTERFACE-R005-v11.00 3.2.6.2.16, at least one of 'coordinate',
// 'civicAddress', or 'address' shall be provided when creating location data.
type LocationInfo struct {
	// Address Human readable format of address of the location.
	//
	// Example: 1234 Technology Avenue
	Address *string `json:"address,omitempty"`

	// CivicAddress Civic address of the location. Includes zero or more elements comprising the civic address.
	// The caType values follow IETF RFC 4776 civic address format:
	//   - caType 1: Country (ISO 3166-1 alpha-2 code)
	//   - caType 3: State, province, or autonomous community
	//   - caType 6: City or municipality
	//   - caType 22: Street name
	//   - caType 26: Street number or building number
	//
	//
	// Example: [{"caType":1,"caValue":"CA"},{"caType":3,"caValue":"Ontario"},{"caType":6,"caValue":"Toronto"},{"caType":22,"caValue":"Bay Street"},{"caType":26,"caValue":"200"}]
	CivicAddress *[]struct {
		// CaType Describes the content type of caValue. The value of caType shall comply with IETF RFC 4776.
		CaType int `json:"caType"`

		// CaValue Content of civic address element corresponding to the caType.
		CaValue string `json:"caValue"`
	} `json:"civicAddress,omitempty"`

	// Coordinate The coordinates (including latitude and longitude) of the location. The content of this attribute
	// follows the provisions for the "Point" geometry object as defined in IETF RFC 7946.
	//
	//
	// Example: {"coordinates":[-77.0364,38.8951,100.5],"type":"Point"}
	Coordinate *struct {
		// Coordinates Position coordinates [longitude, latitude] or [longitude, latitude, altitude] per RFC 7946
		Coordinates []float64 `json:"coordinates"`

		// Type GeoJSON geometry type
		Type LocationInfoCoordinateType `json:"type"`
	} `json:"coordinate,omitempty"`

	// Description Human readable description of the location.
	//
	// Example: Red Hat LocationInfo description
	Description string `json:"description"`

	// Extensions List of metadata key-value pairs used to associate meaningful metadata to the related location.
	Extensions map[string]interface{} `json:"extensions"`

	// GlobalLocationId Identifier of the location as defined by the SMO.
	//
	// Example: location-1
	GlobalLocationId string `json:"globalLocationId"`

	// Name Human readable name of the location as defined by the SMO.
	//
	// Example: Red Hat LocationInfo
	Name string `json:"name"`

	// OCloudSiteIds List of O-Cloud Site identifiers referencing the O-Cloud Sites available at the location.
	//
	// Example: ["7fd364a0-6d82-4e0c-a418-5c1a2f8b9c3e","a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
	OCloudSiteIds []openapi_types.UUID `json:"oCloudSiteIds"`
}

// LocationInfoCoordinateType GeoJSON geometry type
type LocationInfoCoordinateType string

// OCloudInfo defines model for OCloudInfo.
type OCloudInfo struct {
	// Description Human readable description of the O-Cloud as provided by the SMO at cloud genesis.
	//
	// Example: My cloud
	Description string `json:"description"`

	// Extensions These are unspecified (not standardized) properties (keys) which are tailored by the vendor to extend the
	// information provided about the O-Cloud.
	//
	//
	// Example: {"country":"ES","hub":"hub0"}
	Extensions map[string]interface{} `json:"extensions"`

	// GlobalCloudId Identifier of the O-Cloud instance assigned by the SMO. This identifier is globally unique across O-Cloud
	// instances known to the SMO. This value was provided by the SMO with the callback URI at the beginning of
	// O-Cloud genesis and used in registration at the end of genesis.
	//
	//
	// Example: 8c1c151d-2899-4c96-b76f-4fe92064b57b
	GlobalCloudId openapi_types.UUID `json:"globalCloudId"`

	// Name Human readable name of the O-Cloud as identified by the SMO at cloud genesis.
	//
	// Example: my-cloud
	Name string `json:"name"`

	// OCloudId Identifier of the O-Cloud instance. Internally generated within an O-Cloud instance.
	//
	// Example: 262c8f17-52b5-4614-9e56-812ae21fa8a7
	OCloudId openapi_types.UUID `json:"oCloudId"`

	// ServiceUri The fully qualified URI root to all services provided by the O2ims interface, Inventory only being one of
	// them. Since the O2ims provides multiple services this entry is for the {apiRoot} only.
	//
	//
	// Example: http://localhost:8000
	ServiceUri string `json:"serviceUri"`
}

// OCloudSiteInfo Information about an O-Cloud site instance.
type OCloudSiteInfo struct {
	// Description Human readable description of the O-Cloud site as provided by the cloud provider.
	//
	// Example: Red Hat OCloudSiteInfo description
	Description string `json:"description"`

	// Extensions List of metadata key-value pairs used to associate meaningful metadata to the related O-Cloud site.
	Extensions map[string]interface{} `json:"extensions"`

	// GlobalLocationId Identifier of location where the O-Cloud site is deployed at.
	//
	// Example: location-1
	GlobalLocationId string `json:"globalLocationId"`

	// Name Human readable name of the O-Cloud site as identified by the cloud provider.
	//
	// Example: Red Hat OCloudSiteInfo
	Name string `json:"name"`

	// OCloudSiteId Identifier of the O-Cloud site. Locally unique within the scope of an O-Cloud instance.
	//
	// Example: 7fd364a0-6d82-4e0c-a418-5c1a2f8b9c3e
	OCloudSiteId openapi_types.UUID `json:"oCloudSiteId"`

	// ResourcePools List of resource pools that are part of the O-Cloud site.
	//
	// Example: ["d3b27e14-4589-4d93-ae76-ddca559193ea"]
	ResourcePools []openapi_types.UUID `json:"resourcePools"`
}

// Resource Information about a resource.
type Resource struct {
	// Description Human readable description of the resource.
	//
	// Example: my-node
	Description string `json:"description"`

	// Elements The resource might be composed of smaller resources or other resource instances of a different type
	Elements []Resource `json:"elements"`

	// Extensions List of metadata key-value pairs used to associate meaningful metadata to the related resource.
	Extensions map[string]interface{} `json:"extensions"`

	// GlobalAssetId Identifier or serial number of the resource, if available. It is required only if the resource has been
	// identified during its addition to the cloud as a reportable asset in the SMO inventory.
	//
	//
	// Example: b6f67c72-8915-474b-b369-6198ea1f7b6f
	GlobalAssetId string `json:"globalAssetId"`

	// Groups Keywords denoting groups a resource belongs to.
	Groups []string `json:"groups"`

	// ResourceId Identifier for the Resource. This identifier is allocated by the O-Cloud.
	ResourceId openapi_types.UUID `json:"resourceId"`

	// ResourcePoolId Example: 39c85e74-2e98-4e3d-8fec-e5a849d967c6
	ResourcePoolId openapi_types.UUID `json:"resourcePoolId"`

	// ResourceTypeId Identifier for the Resource Type of this resource.
	//
	// Example: 56337d0e-8bee-47d3-afcb-3c621cffa2b7
	ResourceTypeId openapi_types.UUID `json:"resourceTypeId"`

	// Tags Keywords describing or classifying the resource instance
	Tags []string `json:"tags"`
}

// ResourcePool Information about a resource pool.
type ResourcePool struct {
	// Description Human readable description of the resource pool.
	Description string `json:"description"`

	// Extensions List of metadata key-value pairs used to associate meaningful metadata to the related resource pool.
	Extensions *map[string]interface{} `json:"extensions,omitempty"`

	// Name Human readable name of the resource pool.
	//
	// Example: my-cluster
	Name string `json:"name"`

	// OCloudSiteId Identifier of the O-Cloud site the resource pool is a part of.
	//
	// Example: 7fd364a0-6d82-4e0c-a418-5c1a2f8b9c3e
	OCloudSiteId openapi_types.UUID `json:"oCloudSiteId"`

	// ResourcePoolId Identifier for the Resource Pool in the O-Cloud instance. This identifier is allocated by the O-Cloud.
	//
	// Example: d3b27e14-4589-4d93-ae76-ddca559193ea
	ResourcePoolId openapi_types.UUID `json:"resourcePoolId"`
}

// ResourceType Information about a resource type.
type ResourceType struct {
	// AlarmDictionaryId Identifier of the Alarm Dictionary for this resource type. The IMS shall ensure that the identifier points
	// to the same dictionary available under the URI path of the resource type.
	//
	//
	// Example: b2f8c7a1-3d4e-5f6a-7b8c-9d0e1f2a3b4c
	AlarmDictionaryId *openapi_types.UUID `json:"alarmDictionaryId,omitempty"`

	// Description Human readable description of the resource type.
	Description string `json:"description"`

	// Extensions List of metadata key-value pairs used to associate meaningful metadata to the related resource type.
	Extensions map[string]interface{} `json:"extensions"`

	// Model Information about the model of the resource as defined by its provider.
	//
	// Example: X-1000
	Model string `json:"model"`

	// Name Human readable name of the resource type.
	//
	// Example: medium
	Name string `json:"name"`

	// ResourceClass Functional role of the resource type within the cloud.
	//
	// Example: COMPUTE
	ResourceClass ResourceTypeResourceClass `json:"resourceClass"`

	// ResourceKind Value describing "physicality" of the resource type.
	//
	// Example: PHYSICAL
	ResourceKind ResourceTypeResourceKind `json:"resourceKind"`

	// ResourceTypeId Identifier for the Resource Type. This identifier is allocated by the O-Cloud.
	//
	// Example: dac5c740-3470-4a6f-ac89-a2770199f682
	ResourceTypeId openapi_types.UUID `json:"resourceTypeId"`

	// Vendor Provider of the Resource.
	//
	// Example: Some Corporation, Inc.
	Vendor string `json:"vendor"`

	// Version Version or generation of the resource as defined by its provider.
	//
	// Example: v2024.11
	Version string `json:"version"`
}

// ResourceTypeResourceClass Functional role of the resource type within the cloud.
//
// Example: COMPUTE
type ResourceTypeResourceClass string

// ResourceTypeResourceKind Value describing "physicality" of the resource type.
//
// Example: PHYSICAL
type ResourceTypeResourceKind string

// Subscription Information about an inventory subscription.
type Subscription struct {
	// Callback The fully qualified URI to a consumer procedure which can process a Post of the
	// InventoryEventNotification.
	//
	//
	// Example: https://smo.example.com/smo/v1/ocloud_inventory_observer
	Callback string `json:"callback"`

	// ConsumerSubscriptionId Identifier for the consumer of events sent due to the Subscription.
	ConsumerSubscriptionId *openapi_types.UUID `json:"consumerSubscriptionId,omitempty"`

	// Filter Criteria for events which do not need to be reported or will be filtered by the subscription
	// notification service. Therefore, if a filter is not provided then all events are reported.
	Filter *string `json:"filter,omitempty"`

	// SubscriptionId Identifier for the Subscription. This identifier is allocated by the O-Cloud.
	//
	// Example: 65221564-8b05-416a-bfc3-c250bc64e1aa
	SubscriptionId *openapi_types.UUID `json:"subscriptionId,omitempty"`
}

// DeploymentManagerId defines model for deploymentManagerId.
type DeploymentManagerId = openapi_types.UUID

// GlobalLocationId defines model for globalLocationId.
type GlobalLocationId = string

// OCloudSiteId defines model for oCloudSiteId.
type OCloudSiteId = openapi_types.UUID

// ResourceId defines model for resourceId.
type ResourceId = openapi_types.UUID

// ResourcePoolId defines model for resourcePoolId.
type ResourcePoolId = openapi_types.UUID

// ResourceTypeId defines model for resourceTypeId.
type ResourceTypeId = openapi_types.UUID

// SubscriptionId defines model for subscriptionId.
type SubscriptionId = openapi_types.UUID

// GetCloudInfoParams defines parameters for GetCloudInfo.
type GetCloudInfoParams struct {
	// AllFields This URI query parameter requests that all complex attributes are included in the response.
	//
	// ```
	// all_fields
	// ```
	AllFields *externalRef0.AllFields `form:"all_fields,omitempty" json:"all_fields,omitempty"`

	// ExcludeFields Comma separated list of field references to exclude from the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to exclude the `country` subfield of the `extensions` field:
	//
	// ```
	// exclude_fields=extensions/country
	// ```
	//
	// When this parameter isn't used no field will be excluded.
	//
	// Fields in this list will be excluded even if they are explicitly included using the
	// `fields` parameter.
	ExcludeFields *externalRef0.ExcludeFields `form:"exclude_fields,omitempty" json:"exclude_fields,omitempty"`

	// Fields Comma separated list of field references to include in the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to get the `name` field and the `country` subfield of the `extensions` field:
	//
	// ```
	// fields=name,extensions/country
	// ```
	//
	// When this parameter isn't used all the fields will be returned.
	Fields *externalRef0.Fields `form:"fields,omitempty" json:"fields,omitempty"`
}

// GetAlarmDictionariesParams defines parameters for GetAlarmDictionaries.
type GetAlarmDictionariesParams struct {
	// AllFields This URI query parameter requests that all complex attributes are included in the response.
	//
	// ```
	// all_fields
	// ```
	AllFields *externalRef0.AllFields `form:"all_fields,omitempty" json:"all_fields,omitempty"`

	// ExcludeFields Comma separated list of field references to exclude from the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to exclude the `country` subfield of the `extensions` field:
	//
	// ```
	// exclude_fields=extensions/country
	// ```
	//
	// When this parameter isn't used no field will be excluded.
	//
	// Fields in this list will be excluded even if they are explicitly included using the
	// `fields` parameter.
	ExcludeFields *externalRef0.ExcludeFields `form:"exclude_fields,omitempty" json:"exclude_fields,omitempty"`

	// Fields Comma separated list of field references to include in the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to get the `name` field and the `country` subfield of the `extensions` field:
	//
	// ```
	// fields=name,extensions/country
	// ```
	//
	// When this parameter isn't used all the fields will be returned.
	Fields *externalRef0.Fields `form:"fields,omitempty" json:"fields,omitempty"`

	// Filter Search criteria.
	//
	// Contains one or more search criteria, separated by semicolons. Each search criteria is a
	// tuple containing an operator, a field reference and one or more values. The operator can
	// be any of the following strings:
	//
	// | Operator | Meaning                                                     |
	// |----------|-------------------------------------------------------------|
	// | `cont`   | Matches if the field contains the value                     |
	// | `eq`     | Matches if the field is equal to the value                  |
	// | `gt`     | Matches if the field is greater than the value              |
	// | `gte`    | Matches if the field is greater than or equal to the value  |
	// | `in`     | Matches if the field is one of the values                   |
	// | `lt`     | Matches if the field is less than the value                 |
	// | `lte`    | Matches if the field is less than or equal to the the value |
	// | `ncont`  | Matches if the field does not contain the value             |
	// | `neq`    | Matches if the field is not equal to the value              |
	// | `nin`    | Matches if the field is not one of the values               |
	//
	// The field reference is the name of one of the fields of the object, or a sequence of
	// name of fields separated by slashes. For example, to use the `country` sub-field inside
	// the `extensions` field:
	//
	// ```
	// filter=(eq,extensions/country,EQ)
	// ```
	//
	// The values are the arguments of the operator. For example, the `eq` operator compares
	// checks if the value of the field is equal to the value.
	//
	// The `in` and `nin` operators support multiple values. For example, to check if the `country`
	// sub-field inside the `extensions` field is either `ES` or `US:
	//
	// ```
	// filter=(in,extensions/country,ES,US)
	// ```
	//
	// When values contain commas, slashes or spaces they need to be surrounded by single quotes.
	// For example, to check if the `name` field is the string `my cluster`:
	//
	// ```
	// filter=(eq,name,'my cluster')
	// ```
	//
	// When multiple criteria separated by semicolons are used, all of them must match for the
	// complete condition to match. For example, the following will check if the `name` is
	// `my cluster` *and* the `country` extension is `ES`:
	//
	// ```
	// filter=(eq,name,'my cluster');(eq,extensions/country,ES)
	// ```
	//
	// When this parameter isn't used all the results will be returned.
	Filter *externalRef0.Filter `form:"filter,omitempty" json:"filter,omitempty"`
}

// GetDeploymentManagersParams defines parameters for GetDeploymentManagers.
type GetDeploymentManagersParams struct {
	// AllFields This URI query parameter requests that all complex attributes are included in the response.
	//
	// ```
	// all_fields
	// ```
	AllFields *externalRef0.AllFields `form:"all_fields,omitempty" json:"all_fields,omitempty"`

	// ExcludeFields Comma separated list of field references to exclude from the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to exclude the `country` subfield of the `extensions` field:
	//
	// ```
	// exclude_fields=extensions/country
	// ```
	//
	// When this parameter isn't used no field will be excluded.
	//
	// Fields in this list will be excluded even if they are explicitly included using the
	// `fields` parameter.
	ExcludeFields *externalRef0.ExcludeFields `form:"exclude_fields,omitempty" json:"exclude_fields,omitempty"`

	// Fields Comma separated list of field references to include in the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to get the `name` field and the `country` subfield of the `extensions` field:
	//
	// ```
	// fields=name,extensions/country
	// ```
	//
	// When this parameter isn't used all the fields will be returned.
	Fields *externalRef0.Fields `form:"fields,omitempty" json:"fields,omitempty"`

	// Filter Search criteria.
	//
	// Contains one or more search criteria, separated by semicolons. Each search criteria is a
	// tuple containing an operator, a field reference and one or more values. The operator can
	// be any of the following strings:
	//
	// | Operator | Meaning                                                     |
	// |----------|-------------------------------------------------------------|
	// | `cont`   | Matches if the field contains the value                     |
	// | `eq`     | Matches if the field is equal to the value                  |
	// | `gt`     | Matches if the field is greater than the value              |
	// | `gte`    | Matches if the field is greater than or equal to the value  |
	// | `in`     | Matches if the field is one of the values                   |
	// | `lt`     | Matches if the field is less than the value                 |
	// | `lte`    | Matches if the field is less than or equal to the the value |
	// | `ncont`  | Matches if the field does not contain the value             |
	// | `neq`    | Matches if the field is not equal to the value              |
	// | `nin`    | Matches if the field is not one of the values               |
	//
	// The field reference is the name of one of the fields of the object, or a sequence of
	// name of fields separated by slashes. For example, to use the `country` sub-field inside
	// the `extensions` field:
	//
	// ```
	// filter=(eq,extensions/country,EQ)
	// ```
	//
	// The values are the arguments of the operator. For example, the `eq` operator compares
	// checks if the value of the field is equal to the value.
	//
	// The `in` and `nin` operators support multiple values. For example, to check if the `country`
	// sub-field inside the `extensions` field is either `ES` or `US:
	//
	// ```
	// filter=(in,extensions/country,ES,US)
	// ```
	//
	// When values contain commas, slashes or spaces they need to be surrounded by single quotes.
	// For example, to check if the `name` field is the string `my cluster`:
	//
	// ```
	// filter=(eq,name,'my cluster')
	// ```
	//
	// When multiple criteria separated by semicolons are used, all of them must match for the
	// complete condition to match. For example, the following will check if the `name` is
	// `my cluster` *and* the `country` extension is `ES`:
	//
	// ```
	// filter=(eq,name,'my cluster');(eq,extensions/country,ES)
	// ```
	//
	// When this parameter isn't used all the results will be returned.
	Filter *externalRef0.Filter `form:"filter,omitempty" json:"filter,omitempty"`
}

// GetLocationsParams defines parameters for GetLocations.
type GetLocationsParams struct {
	// AllFields This URI query parameter requests that all complex attributes are included in the response.
	//
	// ```
	// all_fields
	// ```
	AllFields *externalRef0.AllFields `form:"all_fields,omitempty" json:"all_fields,omitempty"`

	// ExcludeFields Comma separated list of field references to exclude from the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to exclude the `country` subfield of the `extensions` field:
	//
	// ```
	// exclude_fields=extensions/country
	// ```
	//
	// When this parameter isn't used no field will be excluded.
	//
	// Fields in this list will be excluded even if they are explicitly included using the
	// `fields` parameter.
	ExcludeFields *externalRef0.ExcludeFields `form:"exclude_fields,omitempty" json:"exclude_fields,omitempty"`

	// Fields Comma separated list of field references to include in the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to get the `name` field and the `country` subfield of the `extensions` field:
	//
	// ```
	// fields=name,extensions/country
	// ```
	//
	// When this parameter isn't used all the fields will be returned.
	Fields *externalRef0.Fields `form:"fields,omitempty" json:"fields,omitempty"`

	// Filter Search criteria.
	//
	// Contains one or more search criteria, separated by semicolons. Each search criteria is a
	// tuple containing an operator, a field reference and one or more values. The operator can
	// be any of the following strings:
	//
	// | Operator | Meaning                                                     |
	// |----------|-------------------------------------------------------------|
	// | `cont`   | Matches if the field contains the value                     |
	// | `eq`     | Matches if the field is equal to the value                  |
	// | `gt`     | Matches if the field is greater than the value              |
	// | `gte`    | Matches if the field is greater than or equal to the value  |
	// | `in`     | Matches if the field is one of the values                   |
	// | `lt`     | Matches if the field is less than the value                 |
	// | `lte`    | Matches if the field is less than or equal to the the value |
	// | `ncont`  | Matches if the field does not contain the value             |
	// | `neq`    | Matches if the field is not equal to the value              |
	// | `nin`    | Matches if the field is not one of the values               |
	//
	// The field reference is the name of one of the fields of the object, or a sequence of
	// name of fields separated by slashes. For example, to use the `country` sub-field inside
	// the `extensions` field:
	//
	// ```
	// filter=(eq,extensions/country,EQ)
	// ```
	//
	// The values are the arguments of the operator. For example, the `eq` operator compares
	// checks if the value of the field is equal to the value.
	//
	// The `in` and `nin` operators support multiple values. For example, to check if the `country`
	// sub-field inside the `extensions` field is either `ES` or `US:
	//
	// ```
	// filter=(in,extensions/country,ES,US)
	// ```
	//
	// When values contain commas, slashes or spaces they need to be surrounded by single quotes.
	// For example, to check if the `name` field is the string `my cluster`:
	//
	// ```
	// filter=(eq,name,'my cluster')
	// ```
	//
	// When multiple criteria separated by semicolons are used, all of them must match for the
	// complete condition to match. For example, the following will check if the `name` is
	// `my cluster` *and* the `country` extension is `ES`:
	//
	// ```
	// filter=(eq,name,'my cluster');(eq,extensions/country,ES)
	// ```
	//
	// When this parameter isn't used all the results will be returned.
	Filter *externalRef0.Filter `form:"filter,omitempty" json:"filter,omitempty"`
}

// GetOCloudSitesParams defines parameters for GetOCloudSites.
type GetOCloudSitesParams struct {
	// AllFields This URI query parameter requests that all complex attributes are included in the response.
	//
	// ```
	// all_fields
	// ```
	AllFields *externalRef0.AllFields `form:"all_fields,omitempty" json:"all_fields,omitempty"`

	// ExcludeFields Comma separated list of field references to exclude from the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to exclude the `country` subfield of the `extensions` field:
	//
	// ```
	// exclude_fields=extensions/country
	// ```
	//
	// When this parameter isn't used no field will be excluded.
	//
	// Fields in this list will be excluded even if they are explicitly included using the
	// `fields` parameter.
	ExcludeFields *externalRef0.ExcludeFields `form:"exclude_fields,omitempty" json:"exclude_fields,omitempty"`

	// Fields Comma separated list of field references to include in the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to get the `name` field and the `country` subfield of the `extensions` field:
	//
	// ```
	// fields=name,extensions/country
	// ```
	//
	// When this parameter isn't used all the fields will be returned.
	Fields *externalRef0.Fields `form:"fields,omitempty" json:"fields,omitempty"`

	// Filter Search criteria.
	//
	// Contains one or more search criteria, separated by semicolons. Each search criteria is a
	// tuple containing an operator, a field reference and one or more values. The operator can
	// be any of the following strings:
	//
	// | Operator | Meaning                                                     |
	// |----------|-------------------------------------------------------------|
	// | `cont`   | Matches if the field contains the value                     |
	// | `eq`     | Matches if the field is equal to the value                  |
	// | `gt`     | Matches if the field is greater than the value              |
	// | `gte`    | Matches if the field is greater than or equal to the value  |
	// | `in`     | Matches if the field is one of the values                   |
	// | `lt`     | Matches if the field is less than the value                 |
	// | `lte`    | Matches if the field is less than or equal to the the value |
	// | `ncont`  | Matches if the field does not contain the value             |
	// | `neq`    | Matches if the field is not equal to the value              |
	// | `nin`    | Matches if the field is not one of the values               |
	//
	// The field reference is the name of one of the fields of the object, or a sequence of
	// name of fields separated by slashes. For example, to use the `country` sub-field inside
	// the `extensions` field:
	//
	// ```
	// filter=(eq,extensions/country,EQ)
	// ```
	//
	// The values are the arguments of the operator. For example, the `eq` operator compares
	// checks if the value of the field is equal to the value.
	//
	// The `in` and `nin` operators support multiple values. For example, to check if the `country`
	// sub-field inside the `extensions` field is either `ES` or `US:
	//
	// ```
	// filter=(in,extensions/country,ES,US)
	// ```
	//
	// When values contain commas, slashes or spaces they need to be surrounded by single quotes.
	// For example, to check if the `name` field is the string `my cluster`:
	//
	// ```
	// filter=(eq,name,'my cluster')
	// ```
	//
	// When multiple criteria separated by semicolons are used, all of them must match for the
	// complete condition to match. For example, the following will check if the `name` is
	// `my cluster` *and* the `country` extension is `ES`:
	//
	// ```
	// filter=(eq,name,'my cluster');(eq,extensions/country,ES)
	// ```
	//
	// When this parameter isn't used all the results will be returned.
	Filter *externalRef0.Filter `form:"filter,omitempty" json:"filter,omitempty"`
}

// GetResourcePoolsParams defines parameters for GetResourcePools.
type GetResourcePoolsParams struct {
	// AllFields This URI query parameter requests that all complex attributes are included in the response.
	//
	// ```
	// all_fields
	// ```
	AllFields *externalRef0.AllFields `form:"all_fields,omitempty" json:"all_fields,omitempty"`

	// ExcludeFields Comma separated list of field references to exclude from the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to exclude the `country` subfield of the `extensions` field:
	//
	// ```
	// exclude_fields=extensions/country
	// ```
	//
	// When this parameter isn't used no field will be excluded.
	//
	// Fields in this list will be excluded even if they are explicitly included using the
	// `fields` parameter.
	ExcludeFields *externalRef0.ExcludeFields `form:"exclude_fields,omitempty" json:"exclude_fields,omitempty"`

	// Fields Comma separated list of field references to include in the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to get the `name` field and the `country` subfield of the `extensions` field:
	//
	// ```
	// fields=name,extensions/country
	// ```
	//
	// When this parameter isn't used all the fields will be returned.
	Fields *externalRef0.Fields `form:"fields,omitempty" json:"fields,omitempty"`

	// Filter Search criteria.
	//
	// Contains one or more search criteria, separated by semicolons. Each search criteria is a
	// tuple containing an operator, a field reference and one or more values. The operator can
	// be any of the following strings:
	//
	// | Operator | Meaning                                                     |
	// |----------|-------------------------------------------------------------|
	// | `cont`   | Matches if the field contains the value                     |
	// | `eq`     | Matches if the field is equal to the value                  |
	// | `gt`     | Matches if the field is greater than the value              |
	// | `gte`    | Matches if the field is greater than or equal to the value  |
	// | `in`     | Matches if the field is one of the values                   |
	// | `lt`     | Matches if the field is less than the value                 |
	// | `lte`    | Matches if the field is less than or equal to the the value |
	// | `ncont`  | Matches if the field does not contain the value             |
	// | `neq`    | Matches if the field is not equal to the value              |
	// | `nin`    | Matches if the field is not one of the values               |
	//
	// The field reference is the name of one of the fields of the object, or a sequence of
	// name of fields separated by slashes. For example, to use the `country` sub-field inside
	// the `extensions` field:
	//
	// ```
	// filter=(eq,extensions/country,EQ)
	// ```
	//
	// The values are the arguments of the operator. For example, the `eq` operator compares
	// checks if the value of the field is equal to the value.
	//
	// The `in` and `nin` operators support multiple values. For example, to check if the `country`
	// sub-field inside the `extensions` field is either `ES` or `US:
	//
	// ```
	// filter=(in,extensions/country,ES,US)
	// ```
	//
	// When values contain commas, slashes or spaces they need to be surrounded by single quotes.
	// For example, to check if the `name` field is the string `my cluster`:
	//
	// ```
	// filter=(eq,name,'my cluster')
	// ```
	//
	// When multiple criteria separated by semicolons are used, all of them must match for the
	// complete condition to match. For example, the following will check if the `name` is
	// `my cluster` *and* the `country` extension is `ES`:
	//
	// ```
	// filter=(eq,name,'my cluster');(eq,extensions/country,ES)
	// ```
	//
	// When this parameter isn't used all the results will be returned.
	Filter *externalRef0.Filter `form:"filter,omitempty" json:"filter,omitempty"`
}

// GetResourcesParams defines parameters for GetResources.
type GetResourcesParams struct {
	// AllFields This URI query parameter requests that all complex attributes are included in the response.
	//
	// ```
	// all_fields
	// ```
	AllFields *externalRef0.AllFields `form:"all_fields,omitempty" json:"all_fields,omitempty"`

	// ExcludeFields Comma separated list of field references to exclude from the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to exclude the `country` subfield of the `extensions` field:
	//
	// ```
	// exclude_fields=extensions/country
	// ```
	//
	// When this parameter isn't used no field will be excluded.
	//
	// Fields in this list will be excluded even if they are explicitly included using the
	// `fields` parameter.
	ExcludeFields *externalRef0.ExcludeFields `form:"exclude_fields,omitempty" json:"exclude_fields,omitempty"`

	// Fields Comma separated list of field references to include in the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to get the `name` field and the `country` subfield of the `extensions` field:
	//
	// ```
	// fields=name,extensions/country
	// ```
	//
	// When this parameter isn't used all the fields will be returned.
	Fields *externalRef0.Fields `form:"fields,omitempty" json:"fields,omitempty"`

	// Filter Search criteria.
	//
	// Contains one or more search criteria, separated by semicolons. Each search criteria is a
	// tuple containing an operator, a field reference and one or more values. The operator can
	// be any of the following strings:
	//
	// | Operator | Meaning                                                     |
	// |----------|-------------------------------------------------------------|
	// | `cont`   | Matches if the field contains the value                     |
	// | `eq`     | Matches if the field is equal to the value                  |
	// | `gt`     | Matches if the field is greater than the value              |
	// | `gte`    | Matches if the field is greater than or equal to the value  |
	// | `in`     | Matches if the field is one of the values                   |
	// | `lt`     | Matches if the field is less than the value                 |
	// | `lte`    | Matches if the field is less than or equal to the the value |
	// | `ncont`  | Matches if the field does not contain the value             |
	// | `neq`    | Matches if the field is not equal to the value              |
	// | `nin`    | Matches if the field is not one of the values               |
	//
	// The field reference is the name of one of the fields of the object, or a sequence of
	// name of fields separated by slashes. For example, to use the `country` sub-field inside
	// the `extensions` field:
	//
	// ```
	// filter=(eq,extensions/country,EQ)
	// ```
	//
	// The values are the arguments of the operator. For example, the `eq` operator compares
	// checks if the value of the field is equal to the value.
	//
	// The `in` and `nin` operators support multiple values. For example, to check if the `country`
	// sub-field inside the `extensions` field is either `ES` or `US:
	//
	// ```
	// filter=(in,extensions/country,ES,US)
	// ```
	//
	// When values contain commas, slashes or spaces they need to be surrounded by single quotes.
	// For example, to check if the `name` field is the string `my cluster`:
	//
	// ```
	// filter=(eq,name,'my cluster')
	// ```
	//
	// When multiple criteria separated by semicolons are used, all of them must match for the
	// complete condition to match. For example, the following will check if the `name` is
	// `my cluster` *and* the `country` extension is `ES`:
	//
	// ```
	// filter=(eq,name,'my cluster');(eq,extensions/country,ES)
	// ```
	//
	// When this parameter isn't used all the results will be returned.
	Filter *externalRef0.Filter `form:"filter,omitempty" json:"filter,omitempty"`
}

// GetResourceTypesParams defines parameters for GetResourceTypes.
type GetResourceTypesParams struct {
	// AllFields This URI query parameter requests that all complex attributes are included in the response.
	//
	// ```
	// all_fields
	// ```
	AllFields *externalRef0.AllFields `form:"all_fields,omitempty" json:"all_fields,omitempty"`

	// ExcludeFields Comma separated list of field references to exclude from the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to exclude the `country` subfield of the `extensions` field:
	//
	// ```
	// exclude_fields=extensions/country
	// ```
	//
	// When this parameter isn't used no field will be excluded.
	//
	// Fields in this list will be excluded even if they are explicitly included using the
	// `fields` parameter.
	ExcludeFields *externalRef0.ExcludeFields `form:"exclude_fields,omitempty" json:"exclude_fields,omitempty"`

	// Fields Comma separated list of field references to include in the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to get the `name` field and the `country` subfield of the `extensions` field:
	//
	// ```
	// fields=name,extensions/country
	// ```
	//
	// When this parameter isn't used all the fields will be returned.
	Fields *externalRef0.Fields `form:"fields,omitempty" json:"fields,omitempty"`

	// Filter Search criteria.
	//
	// Contains one or more search criteria, separated by semicolons. Each search criteria is a
	// tuple containing an operator, a field reference and one or more values. The operator can
	// be any of the following strings:
	//
	// | Operator | Meaning                                                     |
	// |----------|-------------------------------------------------------------|
	// | `cont`   | Matches if the field contains the value                     |
	// | `eq`     | Matches if the field is equal to the value                  |
	// | `gt`     | Matches if the field is greater than the value              |
	// | `gte`    | Matches if the field is greater than or equal to the value  |
	// | `in`     | Matches if the field is one of the values                   |
	// | `lt`     | Matches if the field is less than the value                 |
	// | `lte`    | Matches if the field is less than or equal to the the value |
	// | `ncont`  | Matches if the field does not contain the value             |
	// | `neq`    | Matches if the field is not equal to the value              |
	// | `nin`    | Matches if the field is not one of the values               |
	//
	// The field reference is the name of one of the fields of the object, or a sequence of
	// name of fields separated by slashes. For example, to use the `country` sub-field inside
	// the `extensions` field:
	//
	// ```
	// filter=(eq,extensions/country,EQ)
	// ```
	//
	// The values are the arguments of the operator. For example, the `eq` operator compares
	// checks if the value of the field is equal to the value.
	//
	// The `in` and `nin` operators support multiple values. For example, to check if the `country`
	// sub-field inside the `extensions` field is either `ES` or `US:
	//
	// ```
	// filter=(in,extensions/country,ES,US)
	// ```
	//
	// When values contain commas, slashes or spaces they need to be surrounded by single quotes.
	// For example, to check if the `name` field is the string `my cluster`:
	//
	// ```
	// filter=(eq,name,'my cluster')
	// ```
	//
	// When multiple criteria separated by semicolons are used, all of them must match for the
	// complete condition to match. For example, the following will check if the `name` is
	// `my cluster` *and* the `country` extension is `ES`:
	//
	// ```
	// filter=(eq,name,'my cluster');(eq,extensions/country,ES)
	// ```
	//
	// When this parameter isn't used all the results will be returned.
	Filter *externalRef0.Filter `form:"filter,omitempty" json:"filter,omitempty"`
}

// GetSubscriptionsParams defines parameters for GetSubscriptions.
type GetSubscriptionsParams struct {
	// ExcludeFields Comma separated list of field references to exclude from the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to exclude the `country` subfield of the `extensions` field:
	//
	// ```
	// exclude_fields=extensions/country
	// ```
	//
	// When this parameter isn't used no field will be excluded.
	//
	// Fields in this list will be excluded even if they are explicitly included using the
	// `fields` parameter.
	ExcludeFields *externalRef0.ExcludeFields `form:"exclude_fields,omitempty" json:"exclude_fields,omitempty"`

	// AllFields This URI query parameter requests that all complex attributes are included in the response.
	//
	// ```
	// all_fields
	// ```
	AllFields *externalRef0.AllFields `form:"all_fields,omitempty" json:"all_fields,omitempty"`

	// Fields Comma separated list of field references to include in the result.
	//
	// Each field reference is a field name, or a sequence of field names separated by slashes. For
	// example, to get the `name` field and the `country` subfield of the `extensions` field:
	//
	// ```
	// fields=name,extensions/country
	// ```
	//
	// When this parameter isn't used all the fields will be returned.
	Fields *externalRef0.Fields `form:"fields,omitempty" json:"fields,omitempty"`

	// Filter Search criteria.
	//
	// Contains one or more search criteria, separated by semicolons. Each search criteria is a
	// tuple containing an operator, a field reference and one or more values. The operator can
	// be any of the following strings:
	//
	// | Operator | Meaning                                                     |
	// |----------|-------------------------------------------------------------|
	// | `cont`   | Matches if the field contains the value                     |
	// | `eq`     | Matches if the field is equal to the value                  |
	// | `gt`     | Matches if the field is greater than the value              |
	// | `gte`    | Matches if the field is greater than or equal to the value  |
	// | `in`     | Matches if the field is one of the values                   |
	// | `lt`     | Matches if the field is less than the value                 |
	// | `lte`    | Matches if the field is less than or equal to the the value |
	// | `ncont`  | Matches if the field does not contain the value             |
	// | `neq`    | Matches if the field is not equal to the value              |
	// | `nin`    | Matches if the field is not one of the values               |
	//
	// The field reference is the name of one of the fields of the object, or a sequence of
	// name of fields separated by slashes. For example, to use the `country` sub-field inside
	// the `extensions` field:
	//
	// ```
	// filter=(eq,extensions/country,EQ)
	// ```
	//
	// The values are the arguments of the operator. For example, the `eq` operator compares
	// checks if the value of the field is equal to the value.
	//
	// The `in` and `nin` operators support multiple values. For example, to check if the `country`
	// sub-field inside the `extensions` field is either `ES` or `US:
	//
	// ```
	// filter=(in,extensions/country,ES,US)
	// ```
	//
	// When values contain commas, slashes or spaces they need to be surrounded by single quotes.
	// For example, to check if the `name` field is the string `my cluster`:
	//
	// ```
	// filter=(eq,name,'my cluster')
	// ```
	//
	// When multiple criteria separated by semicolons are used, all of them must match for the
	// complete condition to match. For example, the following will check if the `name` is
	// `my cluster` *and* the `country` extension is `ES`:
	//
	// ```
	// filter=(eq,name,'my cluster');(eq,extensions/country,ES)
	// ```
	//
	// When this parameter isn't used all the results will be returned.
	Filter *externalRef0.Filter `form:"filter,omitempty" json:"filter,omitempty"`
}

// CreateSubscriptionJSONRequestBody defines body for CreateSubscription for application/json ContentType.
type CreateSubscriptionJSONRequestBody = Subscription

// ServerInterface represents all server handlers.
type ServerInterface interface {
	// GetAllVersions Get API versions
	// (GET /o2ims-infrastructureInventory/api_versions)
	GetAllVersions(w http.ResponseWriter, r *http.Request)
	// GetCloudInfo Get O-Cloud info
	// (GET /o2ims-infrastructureInventory/v2)
	GetCloudInfo(w http.ResponseWriter, r *http.Request, params GetCloudInfoParams)
	// GetAlarmDictionaries Get alarm dictionaries
	// (GET /o2ims-infrastructureInventory/v2/alarmDictionaries)
	GetAlarmDictionaries(w http.ResponseWriter, r *http.Request, params GetAlarmDictionariesParams)
	// GetAlarmDictionary Get an alarm dictionary
	// (GET /o2ims-infrastructureInventory/v2/alarmDictionaries/{alarmDictionaryId})
	GetAlarmDictionary(w http.ResponseWriter, r *http.Request, alarmDictionaryId externalRef0.AlarmDictionaryId)
	// GetMinorVersions Get minor API versions
	// (GET /o2ims-infrastructureInventory/v2/api_versions)
	GetMinorVersions(w http.ResponseWriter, r *http.Request)
	// GetDeploymentManagers Get deployment managers
	// (GET /o2ims-infrastructureInventory/v2/deploymentManagers)
	GetDeploymentManagers(w http.ResponseWriter, r *http.Request, params GetDeploymentManagersParams)
	// GetDeploymentManager Get deployment manager
	// (GET /o2ims-infrastructureInventory/v2/deploymentManagers/{deploymentManagerId})
	GetDeploymentManager(w http.ResponseWriter, r *http.Request, deploymentManagerId DeploymentManagerId)
	// GetInternalResourceById Get a resource by ID
	// (GET /o2ims-infrastructureInventory/v2/internal/resources/{resourceId})
	GetInternalResourceById(w http.ResponseWriter, r *http.Request, resourceId openapi_types.UUID)
	// GetLocations Get locations
	// (GET /o2ims-infrastructureInventory/v2/locations)
	GetLocations(w http.ResponseWriter, r *http.Request, params GetLocationsParams)
	// GetLocation Get a location
	// (GET /o2ims-infrastructureInventory/v2/locations/{globalLocationId})
	GetLocation(w http.ResponseWriter, r *http.Request, globalLocationId GlobalLocationId)
	// GetOCloudSites Get O-Cloud sites
	// (GET /o2ims-infrastructureInventory/v2/oCloudSites)
	GetOCloudSites(w http.ResponseWriter, r *http.Request, params GetOCloudSitesParams)
	// GetOCloudSite Get an O-Cloud site
	// (GET /o2ims-infrastructureInventory/v2/oCloudSites/{oCloudSiteId})
	GetOCloudSite(w http.ResponseWriter, r *http.Request, oCloudSiteId OCloudSiteId)
	// GetResourcePools Get resource pools
	// (GET /o2ims-infrastructureInventory/v2/resourcePools)
	GetResourcePools(w http.ResponseWriter, r *http.Request, params GetResourcePoolsParams)
	// GetResourcePool Get a resource pool
	// (GET /o2ims-infrastructureInventory/v2/resourcePools/{resourcePoolId})
	GetResourcePool(w http.ResponseWriter, r *http.Request, resourcePoolId ResourcePoolId)
	// GetResources Get resources in a resource pool
	// (GET /o2ims-infrastructureInventory/v2/resourcePools/{resourcePoolId}/resources)
	GetResources(w http.ResponseWriter, r *http.Request, resourcePoolId ResourcePoolId, params GetResourcesParams)
	// GetResource Get a resource in a resource pool
	// (GET /o2ims-infrastructureInventory/v2/resourcePools/{resourcePoolId}/resources/{resourceId})
	GetResource(w http.ResponseWriter, r *http.Request, resourcePoolId ResourcePoolId, resourceId ResourceId)
	// GetResourceTypes Get resource types
	// (GET /o2ims-infrastructureInventory/v2/resourceTypes)
	GetResourceTypes(w http.ResponseWriter, r *http.Request, params GetResourceTypesParams)
	// GetResourceType Get a resource type
	// (GET /o2ims-infrastructureInventory/v2/resourceTypes/{resourceTypeId})
	GetResourceType(w http.ResponseWriter, r *http.Request, resourceTypeId ResourceTypeId)
	// GetResourceTypeAlarmDictionary Get an alarm dictionary for a resource type
	// (GET /o2ims-infrastructureInventory/v2/resourceTypes/{resourceTypeId}/alarmDictionary)
	GetResourceTypeAlarmDictionary(w http.ResponseWriter, r *http.Request, resourceTypeId ResourceTypeId)
	// GetSubscriptions Get subscriptions
	// (GET /o2ims-infrastructureInventory/v2/subscriptions)
	GetSubscriptions(w http.ResponseWriter, r *http.Request, params GetSubscriptionsParams)
	// CreateSubscription Create subscriptions
	// (POST /o2ims-infrastructureInventory/v2/subscriptions)
	CreateSubscription(w http.ResponseWriter, r *http.Request)
	// DeleteSubscription Delete subscription
	// (DELETE /o2ims-infrastructureInventory/v2/subscriptions/{subscriptionId})
	DeleteSubscription(w http.ResponseWriter, r *http.Request, subscriptionId SubscriptionId)
	// GetSubscription Get subscription
	// (GET /o2ims-infrastructureInventory/v2/subscriptions/{subscriptionId})
	GetSubscription(w http.ResponseWriter, r *http.Request, subscriptionId SubscriptionId)
}

// ServerInterfaceWrapper converts contexts to parameters.
type ServerInterfaceWrapper struct {
	Handler            ServerInterface
	HandlerMiddlewares []MiddlewareFunc
	ErrorHandlerFunc   func(w http.ResponseWriter, r *http.Request, err error)
}

type MiddlewareFunc func(http.Handler) http.Handler

// GetAllVersions operation middleware
func (siw *ServerInterfaceWrapper) GetAllVersions(w http.ResponseWriter, r *http.Request) {

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetAllVersions(w, r)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetCloudInfo operation middleware
func (siw *ServerInterfaceWrapper) GetCloudInfo(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// Parameter object where we will unmarshal all parameters from the context
	var params GetCloudInfoParams

	// ------------- Optional query parameter "all_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "all_fields", r.URL.Query(), &params.AllFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "all_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "all_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "exclude_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "exclude_fields", r.URL.Query(), &params.ExcludeFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "exclude_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "exclude_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "fields", r.URL.Query(), &params.Fields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "fields", Err: err})
		}
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetCloudInfo(w, r, params)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetAlarmDictionaries operation middleware
func (siw *ServerInterfaceWrapper) GetAlarmDictionaries(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// Parameter object where we will unmarshal all parameters from the context
	var params GetAlarmDictionariesParams

	// ------------- Optional query parameter "all_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "all_fields", r.URL.Query(), &params.AllFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "all_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "all_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "exclude_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "exclude_fields", r.URL.Query(), &params.ExcludeFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "exclude_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "exclude_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "fields", r.URL.Query(), &params.Fields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "filter" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "filter", r.URL.Query(), &params.Filter, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "filter"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "filter", Err: err})
		}
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetAlarmDictionaries(w, r, params)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetAlarmDictionary operation middleware
func (siw *ServerInterfaceWrapper) GetAlarmDictionary(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "alarmDictionaryId" -------------
	var alarmDictionaryId externalRef0.AlarmDictionaryId

	err = runtime.BindStyledParameterWithOptions("simple", "alarmDictionaryId", r.PathValue("alarmDictionaryId"), &alarmDictionaryId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "alarmDictionaryId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetAlarmDictionary(w, r, alarmDictionaryId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetMinorVersions operation middleware
func (siw *ServerInterfaceWrapper) GetMinorVersions(w http.ResponseWriter, r *http.Request) {

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetMinorVersions(w, r)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetDeploymentManagers operation middleware
func (siw *ServerInterfaceWrapper) GetDeploymentManagers(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// Parameter object where we will unmarshal all parameters from the context
	var params GetDeploymentManagersParams

	// ------------- Optional query parameter "all_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "all_fields", r.URL.Query(), &params.AllFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "all_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "all_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "exclude_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "exclude_fields", r.URL.Query(), &params.ExcludeFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "exclude_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "exclude_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "fields", r.URL.Query(), &params.Fields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "filter" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "filter", r.URL.Query(), &params.Filter, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "filter"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "filter", Err: err})
		}
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetDeploymentManagers(w, r, params)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetDeploymentManager operation middleware
func (siw *ServerInterfaceWrapper) GetDeploymentManager(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "deploymentManagerId" -------------
	var deploymentManagerId DeploymentManagerId

	err = runtime.BindStyledParameterWithOptions("simple", "deploymentManagerId", r.PathValue("deploymentManagerId"), &deploymentManagerId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "deploymentManagerId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetDeploymentManager(w, r, deploymentManagerId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetInternalResourceById operation middleware
func (siw *ServerInterfaceWrapper) GetInternalResourceById(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "resourceId" -------------
	var resourceId openapi_types.UUID

	err = runtime.BindStyledParameterWithOptions("simple", "resourceId", r.PathValue("resourceId"), &resourceId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "resourceId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetInternalResourceById(w, r, resourceId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetLocations operation middleware
func (siw *ServerInterfaceWrapper) GetLocations(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// Parameter object where we will unmarshal all parameters from the context
	var params GetLocationsParams

	// ------------- Optional query parameter "all_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "all_fields", r.URL.Query(), &params.AllFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "all_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "all_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "exclude_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "exclude_fields", r.URL.Query(), &params.ExcludeFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "exclude_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "exclude_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "fields", r.URL.Query(), &params.Fields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "filter" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "filter", r.URL.Query(), &params.Filter, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "filter"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "filter", Err: err})
		}
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetLocations(w, r, params)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetLocation operation middleware
func (siw *ServerInterfaceWrapper) GetLocation(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "globalLocationId" -------------
	var globalLocationId GlobalLocationId

	err = runtime.BindStyledParameterWithOptions("simple", "globalLocationId", r.PathValue("globalLocationId"), &globalLocationId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "globalLocationId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetLocation(w, r, globalLocationId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetOCloudSites operation middleware
func (siw *ServerInterfaceWrapper) GetOCloudSites(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// Parameter object where we will unmarshal all parameters from the context
	var params GetOCloudSitesParams

	// ------------- Optional query parameter "all_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "all_fields", r.URL.Query(), &params.AllFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "all_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "all_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "exclude_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "exclude_fields", r.URL.Query(), &params.ExcludeFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "exclude_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "exclude_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "fields", r.URL.Query(), &params.Fields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "filter" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "filter", r.URL.Query(), &params.Filter, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "filter"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "filter", Err: err})
		}
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetOCloudSites(w, r, params)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetOCloudSite operation middleware
func (siw *ServerInterfaceWrapper) GetOCloudSite(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "oCloudSiteId" -------------
	var oCloudSiteId OCloudSiteId

	err = runtime.BindStyledParameterWithOptions("simple", "oCloudSiteId", r.PathValue("oCloudSiteId"), &oCloudSiteId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "oCloudSiteId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetOCloudSite(w, r, oCloudSiteId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetResourcePools operation middleware
func (siw *ServerInterfaceWrapper) GetResourcePools(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// Parameter object where we will unmarshal all parameters from the context
	var params GetResourcePoolsParams

	// ------------- Optional query parameter "all_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "all_fields", r.URL.Query(), &params.AllFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "all_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "all_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "exclude_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "exclude_fields", r.URL.Query(), &params.ExcludeFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "exclude_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "exclude_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "fields", r.URL.Query(), &params.Fields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "filter" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "filter", r.URL.Query(), &params.Filter, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "filter"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "filter", Err: err})
		}
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetResourcePools(w, r, params)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetResourcePool operation middleware
func (siw *ServerInterfaceWrapper) GetResourcePool(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "resourcePoolId" -------------
	var resourcePoolId ResourcePoolId

	err = runtime.BindStyledParameterWithOptions("simple", "resourcePoolId", r.PathValue("resourcePoolId"), &resourcePoolId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "resourcePoolId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetResourcePool(w, r, resourcePoolId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetResources operation middleware
func (siw *ServerInterfaceWrapper) GetResources(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "resourcePoolId" -------------
	var resourcePoolId ResourcePoolId

	err = runtime.BindStyledParameterWithOptions("simple", "resourcePoolId", r.PathValue("resourcePoolId"), &resourcePoolId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "resourcePoolId", Err: err})
		return
	}

	// Parameter object where we will unmarshal all parameters from the context
	var params GetResourcesParams

	// ------------- Optional query parameter "all_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "all_fields", r.URL.Query(), &params.AllFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "all_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "all_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "exclude_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "exclude_fields", r.URL.Query(), &params.ExcludeFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "exclude_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "exclude_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "fields", r.URL.Query(), &params.Fields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "filter" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "filter", r.URL.Query(), &params.Filter, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "filter"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "filter", Err: err})
		}
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetResources(w, r, resourcePoolId, params)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetResource operation middleware
func (siw *ServerInterfaceWrapper) GetResource(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "resourcePoolId" -------------
	var resourcePoolId ResourcePoolId

	err = runtime.BindStyledParameterWithOptions("simple", "resourcePoolId", r.PathValue("resourcePoolId"), &resourcePoolId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "resourcePoolId", Err: err})
		return
	}

	// ------------- Path parameter "resourceId" -------------
	var resourceId ResourceId

	err = runtime.BindStyledParameterWithOptions("simple", "resourceId", r.PathValue("resourceId"), &resourceId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "resourceId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetResource(w, r, resourcePoolId, resourceId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetResourceTypes operation middleware
func (siw *ServerInterfaceWrapper) GetResourceTypes(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// Parameter object where we will unmarshal all parameters from the context
	var params GetResourceTypesParams

	// ------------- Optional query parameter "all_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "all_fields", r.URL.Query(), &params.AllFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "all_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "all_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "exclude_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "exclude_fields", r.URL.Query(), &params.ExcludeFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "exclude_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "exclude_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "fields", r.URL.Query(), &params.Fields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "filter" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "filter", r.URL.Query(), &params.Filter, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "filter"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "filter", Err: err})
		}
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetResourceTypes(w, r, params)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetResourceType operation middleware
func (siw *ServerInterfaceWrapper) GetResourceType(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "resourceTypeId" -------------
	var resourceTypeId ResourceTypeId

	err = runtime.BindStyledParameterWithOptions("simple", "resourceTypeId", r.PathValue("resourceTypeId"), &resourceTypeId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "resourceTypeId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetResourceType(w, r, resourceTypeId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetResourceTypeAlarmDictionary operation middleware
func (siw *ServerInterfaceWrapper) GetResourceTypeAlarmDictionary(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "resourceTypeId" -------------
	var resourceTypeId ResourceTypeId

	err = runtime.BindStyledParameterWithOptions("simple", "resourceTypeId", r.PathValue("resourceTypeId"), &resourceTypeId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "resourceTypeId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetResourceTypeAlarmDictionary(w, r, resourceTypeId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetSubscriptions operation middleware
func (siw *ServerInterfaceWrapper) GetSubscriptions(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// Parameter object where we will unmarshal all parameters from the context
	var params GetSubscriptionsParams

	// ------------- Optional query parameter "exclude_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "exclude_fields", r.URL.Query(), &params.ExcludeFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "exclude_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "exclude_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "all_fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "all_fields", r.URL.Query(), &params.AllFields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "all_fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "all_fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "fields" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "fields", r.URL.Query(), &params.Fields, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "fields"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "fields", Err: err})
		}
		return
	}

	// ------------- Optional query parameter "filter" -------------

	err = runtime.BindQueryParameterWithOptions("form", true, false, "filter", r.URL.Query(), &params.Filter, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
	if err != nil {
		var requiredError *runtime.RequiredParameterError
		if errors.As(err, &requiredError) {
			siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "filter"})
		} else {
			siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "filter", Err: err})
		}
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetSubscriptions(w, r, params)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// CreateSubscription operation middleware
func (siw *ServerInterfaceWrapper) CreateSubscription(w http.ResponseWriter, r *http.Request) {

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.CreateSubscription(w, r)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// DeleteSubscription operation middleware
func (siw *ServerInterfaceWrapper) DeleteSubscription(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "subscriptionId" -------------
	var subscriptionId SubscriptionId

	err = runtime.BindStyledParameterWithOptions("simple", "subscriptionId", r.PathValue("subscriptionId"), &subscriptionId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "subscriptionId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.DeleteSubscription(w, r, subscriptionId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

// GetSubscription operation middleware
func (siw *ServerInterfaceWrapper) GetSubscription(w http.ResponseWriter, r *http.Request) {

	var err error
	_ = err

	// ------------- Path parameter "subscriptionId" -------------
	var subscriptionId SubscriptionId

	err = runtime.BindStyledParameterWithOptions("simple", "subscriptionId", r.PathValue("subscriptionId"), &subscriptionId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "uuid", ValueIsUnescaped: true})
	if err != nil {
		siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "subscriptionId", Err: err})
		return
	}

	handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetSubscription(w, r, subscriptionId)
	}))

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler.ServeHTTP(w, r)
}

type UnescapedCookieParamError struct {
	ParamName string
	Err       error
}

func (e *UnescapedCookieParamError) Error() string {
	return fmt.Sprintf("error unescaping cookie parameter '%s'", e.ParamName)
}

func (e *UnescapedCookieParamError) Unwrap() error {
	return e.Err
}

type UnmarshalingParamError struct {
	ParamName string
	Err       error
}

func (e *UnmarshalingParamError) Error() string {
	return fmt.Sprintf("Error unmarshaling parameter %s as JSON: %s", e.ParamName, e.Err.Error())
}

func (e *UnmarshalingParamError) Unwrap() error {
	return e.Err
}

type RequiredParamError struct {
	ParamName string
}

func (e *RequiredParamError) Error() string {
	return fmt.Sprintf("Query argument %s is required, but not found", e.ParamName)
}

type RequiredHeaderError struct {
	ParamName string
	Err       error
}

func (e *RequiredHeaderError) Error() string {
	return fmt.Sprintf("Header parameter %s is required, but not found", e.ParamName)
}

func (e *RequiredHeaderError) Unwrap() error {
	return e.Err
}

type InvalidParamFormatError struct {
	ParamName string
	Err       error
}

func (e *InvalidParamFormatError) Error() string {
	return fmt.Sprintf("Invalid format for parameter %s: %s", e.ParamName, e.Err.Error())
}

func (e *InvalidParamFormatError) Unwrap() error {
	return e.Err
}

type TooManyValuesForParamError struct {
	ParamName string
	Count     int
}

func (e *TooManyValuesForParamError) Error() string {
	return fmt.Sprintf("Expected one value for %s, got %d", e.ParamName, e.Count)
}

// Handler creates http.Handler with routing matching OpenAPI spec.
func Handler(si ServerInterface) http.Handler {
	return HandlerWithOptions(si, StdHTTPServerOptions{})
}

// ServeMux is an abstraction of [http.ServeMux].
type ServeMux interface {
	HandleFunc(pattern string, handler func(http.ResponseWriter, *http.Request))
	http.Handler
}

type StdHTTPServerOptions struct {
	BaseURL          string
	BaseRouter       ServeMux
	Middlewares      []MiddlewareFunc
	ErrorHandlerFunc func(w http.ResponseWriter, r *http.Request, err error)
}

// HandlerFromMux creates http.Handler with routing matching OpenAPI spec based on the provided mux.
func HandlerFromMux(si ServerInterface, m ServeMux) http.Handler {
	return HandlerWithOptions(si, StdHTTPServerOptions{
		BaseRouter: m,
	})
}

func HandlerFromMuxWithBaseURL(si ServerInterface, m ServeMux, baseURL string) http.Handler {
	return HandlerWithOptions(si, StdHTTPServerOptions{
		BaseURL:    baseURL,
		BaseRouter: m,
	})
}

// HandlerWithOptions creates http.Handler with additional options
func HandlerWithOptions(si ServerInterface, options StdHTTPServerOptions) http.Handler {
	m := options.BaseRouter

	if m == nil {
		m = http.NewServeMux()
	}
	if options.ErrorHandlerFunc == nil {
		options.ErrorHandlerFunc = func(w http.ResponseWriter, r *http.Request, err error) {
			http.Error(w, err.Error(), http.StatusBadRequest)
		}
	}

	wrapper := ServerInterfaceWrapper{
		Handler:            si,
		HandlerMiddlewares: options.Middlewares,
		ErrorHandlerFunc:   options.ErrorHandlerFunc,
	}

	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/api_versions", wrapper.GetAllVersions)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2", wrapper.GetCloudInfo)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/alarmDictionaries", wrapper.GetAlarmDictionaries)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/alarmDictionaries/{alarmDictionaryId}", wrapper.GetAlarmDictionary)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/api_versions", wrapper.GetMinorVersions)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/deploymentManagers", wrapper.GetDeploymentManagers)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/deploymentManagers/{deploymentManagerId}", wrapper.GetDeploymentManager)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/locations", wrapper.GetLocations)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/locations/{globalLocationId}", wrapper.GetLocation)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/oCloudSites", wrapper.GetOCloudSites)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/oCloudSites/{oCloudSiteId}", wrapper.GetOCloudSite)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/resourcePools", wrapper.GetResourcePools)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/resourcePools/{resourcePoolId}", wrapper.GetResourcePool)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/resourcePools/{resourcePoolId}/resources", wrapper.GetResources)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/resourcePools/{resourcePoolId}/resources/{resourceId}", wrapper.GetResource)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/resourceTypes", wrapper.GetResourceTypes)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/resourceTypes/{resourceTypeId}", wrapper.GetResourceType)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/resourceTypes/{resourceTypeId}/alarmDictionary", wrapper.GetResourceTypeAlarmDictionary)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/subscriptions", wrapper.GetSubscriptions)
	m.HandleFunc(http.MethodPost+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/subscriptions", wrapper.CreateSubscription)
	m.HandleFunc(http.MethodDelete+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/subscriptions/{subscriptionId}", wrapper.DeleteSubscription)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/subscriptions/{subscriptionId}", wrapper.GetSubscription)
	m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/o2ims-infrastructureInventory/v2/internal/resources/{resourceId}", wrapper.GetInternalResourceById)

	return m
}

type GetAllVersionsRequestObject struct {
}

type GetAllVersionsResponseObject interface {
	VisitGetAllVersionsResponse(w http.ResponseWriter) error
}

type GetAllVersions200JSONResponse externalRef0.APIVersions

func (response GetAllVersions200JSONResponse) VisitGetAllVersionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetAllVersions400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAllVersions400ApplicationProblemPlusJSONResponse) VisitGetAllVersionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetAllVersions401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAllVersions401ApplicationProblemPlusJSONResponse) VisitGetAllVersionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetAllVersions403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAllVersions403ApplicationProblemPlusJSONResponse) VisitGetAllVersionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetAllVersions500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAllVersions500ApplicationProblemPlusJSONResponse) VisitGetAllVersionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetCloudInfoRequestObject struct {
	Params GetCloudInfoParams
}

type GetCloudInfoResponseObject interface {
	VisitGetCloudInfoResponse(w http.ResponseWriter) error
}

type GetCloudInfo200JSONResponse OCloudInfo

func (response GetCloudInfo200JSONResponse) VisitGetCloudInfoResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetCloudInfo400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetCloudInfo400ApplicationProblemPlusJSONResponse) VisitGetCloudInfoResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetCloudInfo401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetCloudInfo401ApplicationProblemPlusJSONResponse) VisitGetCloudInfoResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetCloudInfo403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetCloudInfo403ApplicationProblemPlusJSONResponse) VisitGetCloudInfoResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetCloudInfo500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetCloudInfo500ApplicationProblemPlusJSONResponse) VisitGetCloudInfoResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionariesRequestObject struct {
	Params GetAlarmDictionariesParams
}

type GetAlarmDictionariesResponseObject interface {
	VisitGetAlarmDictionariesResponse(w http.ResponseWriter) error
}

type GetAlarmDictionaries200JSONResponse []externalRef0.AlarmDictionary

func (response GetAlarmDictionaries200JSONResponse) VisitGetAlarmDictionariesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionaries400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAlarmDictionaries400ApplicationProblemPlusJSONResponse) VisitGetAlarmDictionariesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionaries401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAlarmDictionaries401ApplicationProblemPlusJSONResponse) VisitGetAlarmDictionariesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionaries403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAlarmDictionaries403ApplicationProblemPlusJSONResponse) VisitGetAlarmDictionariesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionaries500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAlarmDictionaries500ApplicationProblemPlusJSONResponse) VisitGetAlarmDictionariesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionaryRequestObject struct {
	AlarmDictionaryId externalRef0.AlarmDictionaryId `json:"alarmDictionaryId"`
}

type GetAlarmDictionaryResponseObject interface {
	VisitGetAlarmDictionaryResponse(w http.ResponseWriter) error
}

type GetAlarmDictionary200JSONResponse externalRef0.AlarmDictionary

func (response GetAlarmDictionary200JSONResponse) VisitGetAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionary400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAlarmDictionary400ApplicationProblemPlusJSONResponse) VisitGetAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionary401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAlarmDictionary401ApplicationProblemPlusJSONResponse) VisitGetAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionary403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAlarmDictionary403ApplicationProblemPlusJSONResponse) VisitGetAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionary404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAlarmDictionary404ApplicationProblemPlusJSONResponse) VisitGetAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetAlarmDictionary500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetAlarmDictionary500ApplicationProblemPlusJSONResponse) VisitGetAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetMinorVersionsRequestObject struct {
}

type GetMinorVersionsResponseObject interface {
	VisitGetMinorVersionsResponse(w http.ResponseWriter) error
}

type GetMinorVersions200JSONResponse externalRef0.APIVersions

func (response GetMinorVersions200JSONResponse) VisitGetMinorVersionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetMinorVersions400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetMinorVersions400ApplicationProblemPlusJSONResponse) VisitGetMinorVersionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetMinorVersions401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetMinorVersions401ApplicationProblemPlusJSONResponse) VisitGetMinorVersionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetMinorVersions403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetMinorVersions403ApplicationProblemPlusJSONResponse) VisitGetMinorVersionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetMinorVersions500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetMinorVersions500ApplicationProblemPlusJSONResponse) VisitGetMinorVersionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManagersRequestObject struct {
	Params GetDeploymentManagersParams
}

type GetDeploymentManagersResponseObject interface {
	VisitGetDeploymentManagersResponse(w http.ResponseWriter) error
}

type GetDeploymentManagers200JSONResponse []DeploymentManager

func (response GetDeploymentManagers200JSONResponse) VisitGetDeploymentManagersResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManagers400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetDeploymentManagers400ApplicationProblemPlusJSONResponse) VisitGetDeploymentManagersResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManagers401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetDeploymentManagers401ApplicationProblemPlusJSONResponse) VisitGetDeploymentManagersResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManagers403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetDeploymentManagers403ApplicationProblemPlusJSONResponse) VisitGetDeploymentManagersResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManagers500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetDeploymentManagers500ApplicationProblemPlusJSONResponse) VisitGetDeploymentManagersResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManagerRequestObject struct {
	DeploymentManagerId DeploymentManagerId `json:"deploymentManagerId"`
}

type GetDeploymentManagerResponseObject interface {
	VisitGetDeploymentManagerResponse(w http.ResponseWriter) error
}

type GetDeploymentManager200JSONResponse DeploymentManager

func (response GetDeploymentManager200JSONResponse) VisitGetDeploymentManagerResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManager400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetDeploymentManager400ApplicationProblemPlusJSONResponse) VisitGetDeploymentManagerResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManager401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetDeploymentManager401ApplicationProblemPlusJSONResponse) VisitGetDeploymentManagerResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManager403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetDeploymentManager403ApplicationProblemPlusJSONResponse) VisitGetDeploymentManagerResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManager404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetDeploymentManager404ApplicationProblemPlusJSONResponse) VisitGetDeploymentManagerResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetDeploymentManager500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetDeploymentManager500ApplicationProblemPlusJSONResponse) VisitGetDeploymentManagerResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetInternalResourceByIdRequestObject struct {
	ResourceId openapi_types.UUID `json:"resourceId"`
}

type GetInternalResourceByIdResponseObject interface {
	VisitGetInternalResourceByIdResponse(w http.ResponseWriter) error
}

type GetInternalResourceById200JSONResponse Resource

func (response GetInternalResourceById200JSONResponse) VisitGetInternalResourceByIdResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetInternalResourceById404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetInternalResourceById404ApplicationProblemPlusJSONResponse) VisitGetInternalResourceByIdResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetInternalResourceById500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetInternalResourceById500ApplicationProblemPlusJSONResponse) VisitGetInternalResourceByIdResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocationsRequestObject struct {
	Params GetLocationsParams
}

type GetLocationsResponseObject interface {
	VisitGetLocationsResponse(w http.ResponseWriter) error
}

type GetLocations200JSONResponse []LocationInfo

func (response GetLocations200JSONResponse) VisitGetLocationsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocations400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetLocations400ApplicationProblemPlusJSONResponse) VisitGetLocationsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocations401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetLocations401ApplicationProblemPlusJSONResponse) VisitGetLocationsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocations403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetLocations403ApplicationProblemPlusJSONResponse) VisitGetLocationsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocations500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetLocations500ApplicationProblemPlusJSONResponse) VisitGetLocationsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocationRequestObject struct {
	GlobalLocationId GlobalLocationId `json:"globalLocationId"`
}

type GetLocationResponseObject interface {
	VisitGetLocationResponse(w http.ResponseWriter) error
}

type GetLocation200JSONResponse LocationInfo

func (response GetLocation200JSONResponse) VisitGetLocationResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocation400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetLocation400ApplicationProblemPlusJSONResponse) VisitGetLocationResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocation401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetLocation401ApplicationProblemPlusJSONResponse) VisitGetLocationResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocation403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetLocation403ApplicationProblemPlusJSONResponse) VisitGetLocationResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocation404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetLocation404ApplicationProblemPlusJSONResponse) VisitGetLocationResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetLocation500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetLocation500ApplicationProblemPlusJSONResponse) VisitGetLocationResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSitesRequestObject struct {
	Params GetOCloudSitesParams
}

type GetOCloudSitesResponseObject interface {
	VisitGetOCloudSitesResponse(w http.ResponseWriter) error
}

type GetOCloudSites200JSONResponse []OCloudSiteInfo

func (response GetOCloudSites200JSONResponse) VisitGetOCloudSitesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSites400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetOCloudSites400ApplicationProblemPlusJSONResponse) VisitGetOCloudSitesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSites401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetOCloudSites401ApplicationProblemPlusJSONResponse) VisitGetOCloudSitesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSites403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetOCloudSites403ApplicationProblemPlusJSONResponse) VisitGetOCloudSitesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSites500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetOCloudSites500ApplicationProblemPlusJSONResponse) VisitGetOCloudSitesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSiteRequestObject struct {
	OCloudSiteId OCloudSiteId `json:"oCloudSiteId"`
}

type GetOCloudSiteResponseObject interface {
	VisitGetOCloudSiteResponse(w http.ResponseWriter) error
}

type GetOCloudSite200JSONResponse OCloudSiteInfo

func (response GetOCloudSite200JSONResponse) VisitGetOCloudSiteResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSite400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetOCloudSite400ApplicationProblemPlusJSONResponse) VisitGetOCloudSiteResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSite401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetOCloudSite401ApplicationProblemPlusJSONResponse) VisitGetOCloudSiteResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSite403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetOCloudSite403ApplicationProblemPlusJSONResponse) VisitGetOCloudSiteResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSite404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetOCloudSite404ApplicationProblemPlusJSONResponse) VisitGetOCloudSiteResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetOCloudSite500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetOCloudSite500ApplicationProblemPlusJSONResponse) VisitGetOCloudSiteResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePoolsRequestObject struct {
	Params GetResourcePoolsParams
}

type GetResourcePoolsResponseObject interface {
	VisitGetResourcePoolsResponse(w http.ResponseWriter) error
}

type GetResourcePools200JSONResponse []ResourcePool

func (response GetResourcePools200JSONResponse) VisitGetResourcePoolsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePools400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourcePools400ApplicationProblemPlusJSONResponse) VisitGetResourcePoolsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePools401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourcePools401ApplicationProblemPlusJSONResponse) VisitGetResourcePoolsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePools403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourcePools403ApplicationProblemPlusJSONResponse) VisitGetResourcePoolsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePools500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourcePools500ApplicationProblemPlusJSONResponse) VisitGetResourcePoolsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePoolRequestObject struct {
	ResourcePoolId ResourcePoolId `json:"resourcePoolId"`
}

type GetResourcePoolResponseObject interface {
	VisitGetResourcePoolResponse(w http.ResponseWriter) error
}

type GetResourcePool200JSONResponse ResourcePool

func (response GetResourcePool200JSONResponse) VisitGetResourcePoolResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePool400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourcePool400ApplicationProblemPlusJSONResponse) VisitGetResourcePoolResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePool401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourcePool401ApplicationProblemPlusJSONResponse) VisitGetResourcePoolResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePool403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourcePool403ApplicationProblemPlusJSONResponse) VisitGetResourcePoolResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePool404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourcePool404ApplicationProblemPlusJSONResponse) VisitGetResourcePoolResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcePool500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourcePool500ApplicationProblemPlusJSONResponse) VisitGetResourcePoolResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourcesRequestObject struct {
	ResourcePoolId ResourcePoolId `json:"resourcePoolId"`
	Params         GetResourcesParams
}

type GetResourcesResponseObject interface {
	VisitGetResourcesResponse(w http.ResponseWriter) error
}

type GetResources200JSONResponse []Resource

func (response GetResources200JSONResponse) VisitGetResourcesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetResources400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResources400ApplicationProblemPlusJSONResponse) VisitGetResourcesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetResources401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResources401ApplicationProblemPlusJSONResponse) VisitGetResourcesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetResources403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResources403ApplicationProblemPlusJSONResponse) VisitGetResourcesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetResources404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResources404ApplicationProblemPlusJSONResponse) VisitGetResourcesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetResources500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResources500ApplicationProblemPlusJSONResponse) VisitGetResourcesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceRequestObject struct {
	ResourcePoolId ResourcePoolId `json:"resourcePoolId"`
	ResourceId     ResourceId     `json:"resourceId"`
}

type GetResourceResponseObject interface {
	VisitGetResourceResponse(w http.ResponseWriter) error
}

type GetResource200JSONResponse Resource

func (response GetResource200JSONResponse) VisitGetResourceResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetResource400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResource400ApplicationProblemPlusJSONResponse) VisitGetResourceResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetResource401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResource401ApplicationProblemPlusJSONResponse) VisitGetResourceResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetResource403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResource403ApplicationProblemPlusJSONResponse) VisitGetResourceResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetResource404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResource404ApplicationProblemPlusJSONResponse) VisitGetResourceResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetResource500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResource500ApplicationProblemPlusJSONResponse) VisitGetResourceResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypesRequestObject struct {
	Params GetResourceTypesParams
}

type GetResourceTypesResponseObject interface {
	VisitGetResourceTypesResponse(w http.ResponseWriter) error
}

type GetResourceTypes200JSONResponse []ResourceType

func (response GetResourceTypes200JSONResponse) VisitGetResourceTypesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypes400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceTypes400ApplicationProblemPlusJSONResponse) VisitGetResourceTypesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypes401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceTypes401ApplicationProblemPlusJSONResponse) VisitGetResourceTypesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypes403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceTypes403ApplicationProblemPlusJSONResponse) VisitGetResourceTypesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypes500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceTypes500ApplicationProblemPlusJSONResponse) VisitGetResourceTypesResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypeRequestObject struct {
	ResourceTypeId ResourceTypeId `json:"resourceTypeId"`
}

type GetResourceTypeResponseObject interface {
	VisitGetResourceTypeResponse(w http.ResponseWriter) error
}

type GetResourceType200JSONResponse ResourceType

func (response GetResourceType200JSONResponse) VisitGetResourceTypeResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceType400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceType400ApplicationProblemPlusJSONResponse) VisitGetResourceTypeResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceType401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceType401ApplicationProblemPlusJSONResponse) VisitGetResourceTypeResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceType403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceType403ApplicationProblemPlusJSONResponse) VisitGetResourceTypeResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceType404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceType404ApplicationProblemPlusJSONResponse) VisitGetResourceTypeResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceType500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceType500ApplicationProblemPlusJSONResponse) VisitGetResourceTypeResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypeAlarmDictionaryRequestObject struct {
	ResourceTypeId ResourceTypeId `json:"resourceTypeId"`
}

type GetResourceTypeAlarmDictionaryResponseObject interface {
	VisitGetResourceTypeAlarmDictionaryResponse(w http.ResponseWriter) error
}

type GetResourceTypeAlarmDictionary200JSONResponse externalRef0.AlarmDictionary

func (response GetResourceTypeAlarmDictionary200JSONResponse) VisitGetResourceTypeAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypeAlarmDictionary400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceTypeAlarmDictionary400ApplicationProblemPlusJSONResponse) VisitGetResourceTypeAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypeAlarmDictionary401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceTypeAlarmDictionary401ApplicationProblemPlusJSONResponse) VisitGetResourceTypeAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypeAlarmDictionary403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceTypeAlarmDictionary403ApplicationProblemPlusJSONResponse) VisitGetResourceTypeAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypeAlarmDictionary404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceTypeAlarmDictionary404ApplicationProblemPlusJSONResponse) VisitGetResourceTypeAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetResourceTypeAlarmDictionary500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetResourceTypeAlarmDictionary500ApplicationProblemPlusJSONResponse) VisitGetResourceTypeAlarmDictionaryResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscriptionsRequestObject struct {
	Params GetSubscriptionsParams
}

type GetSubscriptionsResponseObject interface {
	VisitGetSubscriptionsResponse(w http.ResponseWriter) error
}

type GetSubscriptions200JSONResponse []Subscription

func (response GetSubscriptions200JSONResponse) VisitGetSubscriptionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscriptions400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetSubscriptions400ApplicationProblemPlusJSONResponse) VisitGetSubscriptionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscriptions401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetSubscriptions401ApplicationProblemPlusJSONResponse) VisitGetSubscriptionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscriptions403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetSubscriptions403ApplicationProblemPlusJSONResponse) VisitGetSubscriptionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscriptions500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetSubscriptions500ApplicationProblemPlusJSONResponse) VisitGetSubscriptionsResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type CreateSubscriptionRequestObject struct {
	Body *CreateSubscriptionJSONRequestBody
}

type CreateSubscriptionResponseObject interface {
	VisitCreateSubscriptionResponse(w http.ResponseWriter) error
}

type CreateSubscription201JSONResponse Subscription

func (response CreateSubscription201JSONResponse) VisitCreateSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(201)
	_, err := buf.WriteTo(w)
	return err
}

type CreateSubscription400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response CreateSubscription400ApplicationProblemPlusJSONResponse) VisitCreateSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type CreateSubscription401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response CreateSubscription401ApplicationProblemPlusJSONResponse) VisitCreateSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type CreateSubscription403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response CreateSubscription403ApplicationProblemPlusJSONResponse) VisitCreateSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type CreateSubscription500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response CreateSubscription500ApplicationProblemPlusJSONResponse) VisitCreateSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type DeleteSubscriptionRequestObject struct {
	SubscriptionId SubscriptionId `json:"subscriptionId"`
}

type DeleteSubscriptionResponseObject interface {
	VisitDeleteSubscriptionResponse(w http.ResponseWriter) error
}

type DeleteSubscription200Response struct {
}

func (response DeleteSubscription200Response) VisitDeleteSubscriptionResponse(w http.ResponseWriter) error {
	w.WriteHeader(200)
	return nil
}

type DeleteSubscription401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response DeleteSubscription401ApplicationProblemPlusJSONResponse) VisitDeleteSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type DeleteSubscription403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response DeleteSubscription403ApplicationProblemPlusJSONResponse) VisitDeleteSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type DeleteSubscription404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response DeleteSubscription404ApplicationProblemPlusJSONResponse) VisitDeleteSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type DeleteSubscription500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response DeleteSubscription500ApplicationProblemPlusJSONResponse) VisitDeleteSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscriptionRequestObject struct {
	SubscriptionId SubscriptionId `json:"subscriptionId"`
}

type GetSubscriptionResponseObject interface {
	VisitGetSubscriptionResponse(w http.ResponseWriter) error
}

type GetSubscription200JSONResponse Subscription

func (response GetSubscription200JSONResponse) VisitGetSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(200)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscription400ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetSubscription400ApplicationProblemPlusJSONResponse) VisitGetSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(400)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscription401ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetSubscription401ApplicationProblemPlusJSONResponse) VisitGetSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(401)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscription403ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetSubscription403ApplicationProblemPlusJSONResponse) VisitGetSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(403)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscription404ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetSubscription404ApplicationProblemPlusJSONResponse) VisitGetSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(404)
	_, err := buf.WriteTo(w)
	return err
}

type GetSubscription500ApplicationProblemPlusJSONResponse externalRef0.ProblemDetails

func (response GetSubscription500ApplicationProblemPlusJSONResponse) VisitGetSubscriptionResponse(w http.ResponseWriter) error {

	var buf bytes.Buffer
	if err := json.NewEncoder(&buf).Encode(response); err != nil {
		return err
	}
	w.Header().Set("Content-Type", "application/problem+json")
	w.WriteHeader(500)
	_, err := buf.WriteTo(w)
	return err
}

// StrictServerInterface represents all server handlers.
type StrictServerInterface interface {
	// GetAllVersions Get API versions
	// (GET /o2ims-infrastructureInventory/api_versions)
	GetAllVersions(ctx context.Context, request GetAllVersionsRequestObject) (GetAllVersionsResponseObject, error)
	// GetCloudInfo Get O-Cloud info
	// (GET /o2ims-infrastructureInventory/v2)
	GetCloudInfo(ctx context.Context, request GetCloudInfoRequestObject) (GetCloudInfoResponseObject, error)
	// GetAlarmDictionaries Get alarm dictionaries
	// (GET /o2ims-infrastructureInventory/v2/alarmDictionaries)
	GetAlarmDictionaries(ctx context.Context, request GetAlarmDictionariesRequestObject) (GetAlarmDictionariesResponseObject, error)
	// GetAlarmDictionary Get an alarm dictionary
	// (GET /o2ims-infrastructureInventory/v2/alarmDictionaries/{alarmDictionaryId})
	GetAlarmDictionary(ctx context.Context, request GetAlarmDictionaryRequestObject) (GetAlarmDictionaryResponseObject, error)
	// GetMinorVersions Get minor API versions
	// (GET /o2ims-infrastructureInventory/v2/api_versions)
	GetMinorVersions(ctx context.Context, request GetMinorVersionsRequestObject) (GetMinorVersionsResponseObject, error)
	// GetDeploymentManagers Get deployment managers
	// (GET /o2ims-infrastructureInventory/v2/deploymentManagers)
	GetDeploymentManagers(ctx context.Context, request GetDeploymentManagersRequestObject) (GetDeploymentManagersResponseObject, error)
	// GetDeploymentManager Get deployment manager
	// (GET /o2ims-infrastructureInventory/v2/deploymentManagers/{deploymentManagerId})
	GetDeploymentManager(ctx context.Context, request GetDeploymentManagerRequestObject) (GetDeploymentManagerResponseObject, error)
	// GetInternalResourceById Get a resource by ID
	// (GET /o2ims-infrastructureInventory/v2/internal/resources/{resourceId})
	GetInternalResourceById(ctx context.Context, request GetInternalResourceByIdRequestObject) (GetInternalResourceByIdResponseObject, error)
	// GetLocations Get locations
	// (GET /o2ims-infrastructureInventory/v2/locations)
	GetLocations(ctx context.Context, request GetLocationsRequestObject) (GetLocationsResponseObject, error)
	// GetLocation Get a location
	// (GET /o2ims-infrastructureInventory/v2/locations/{globalLocationId})
	GetLocation(ctx context.Context, request GetLocationRequestObject) (GetLocationResponseObject, error)
	// GetOCloudSites Get O-Cloud sites
	// (GET /o2ims-infrastructureInventory/v2/oCloudSites)
	GetOCloudSites(ctx context.Context, request GetOCloudSitesRequestObject) (GetOCloudSitesResponseObject, error)
	// GetOCloudSite Get an O-Cloud site
	// (GET /o2ims-infrastructureInventory/v2/oCloudSites/{oCloudSiteId})
	GetOCloudSite(ctx context.Context, request GetOCloudSiteRequestObject) (GetOCloudSiteResponseObject, error)
	// GetResourcePools Get resource pools
	// (GET /o2ims-infrastructureInventory/v2/resourcePools)
	GetResourcePools(ctx context.Context, request GetResourcePoolsRequestObject) (GetResourcePoolsResponseObject, error)
	// GetResourcePool Get a resource pool
	// (GET /o2ims-infrastructureInventory/v2/resourcePools/{resourcePoolId})
	GetResourcePool(ctx context.Context, request GetResourcePoolRequestObject) (GetResourcePoolResponseObject, error)
	// GetResources Get resources in a resource pool
	// (GET /o2ims-infrastructureInventory/v2/resourcePools/{resourcePoolId}/resources)
	GetResources(ctx context.Context, request GetResourcesRequestObject) (GetResourcesResponseObject, error)
	// GetResource Get a resource in a resource pool
	// (GET /o2ims-infrastructureInventory/v2/resourcePools/{resourcePoolId}/resources/{resourceId})
	GetResource(ctx context.Context, request GetResourceRequestObject) (GetResourceResponseObject, error)
	// GetResourceTypes Get resource types
	// (GET /o2ims-infrastructureInventory/v2/resourceTypes)
	GetResourceTypes(ctx context.Context, request GetResourceTypesRequestObject) (GetResourceTypesResponseObject, error)
	// GetResourceType Get a resource type
	// (GET /o2ims-infrastructureInventory/v2/resourceTypes/{resourceTypeId})
	GetResourceType(ctx context.Context, request GetResourceTypeRequestObject) (GetResourceTypeResponseObject, error)
	// GetResourceTypeAlarmDictionary Get an alarm dictionary for a resource type
	// (GET /o2ims-infrastructureInventory/v2/resourceTypes/{resourceTypeId}/alarmDictionary)
	GetResourceTypeAlarmDictionary(ctx context.Context, request GetResourceTypeAlarmDictionaryRequestObject) (GetResourceTypeAlarmDictionaryResponseObject, error)
	// GetSubscriptions Get subscriptions
	// (GET /o2ims-infrastructureInventory/v2/subscriptions)
	GetSubscriptions(ctx context.Context, request GetSubscriptionsRequestObject) (GetSubscriptionsResponseObject, error)
	// CreateSubscription Create subscriptions
	// (POST /o2ims-infrastructureInventory/v2/subscriptions)
	CreateSubscription(ctx context.Context, request CreateSubscriptionRequestObject) (CreateSubscriptionResponseObject, error)
	// DeleteSubscription Delete subscription
	// (DELETE /o2ims-infrastructureInventory/v2/subscriptions/{subscriptionId})
	DeleteSubscription(ctx context.Context, request DeleteSubscriptionRequestObject) (DeleteSubscriptionResponseObject, error)
	// GetSubscription Get subscription
	// (GET /o2ims-infrastructureInventory/v2/subscriptions/{subscriptionId})
	GetSubscription(ctx context.Context, request GetSubscriptionRequestObject) (GetSubscriptionResponseObject, error)
}

type StrictHandlerFunc func(ctx context.Context, w http.ResponseWriter, r *http.Request, request any) (any, error)
type StrictMiddlewareFunc func(f StrictHandlerFunc, operationID string) StrictHandlerFunc

type StrictHTTPServerOptions struct {
	RequestErrorHandlerFunc  func(w http.ResponseWriter, r *http.Request, err error)
	ResponseErrorHandlerFunc func(w http.ResponseWriter, r *http.Request, err error)
}

func NewStrictHandler(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc) ServerInterface {
	return &strictHandler{ssi: ssi, middlewares: middlewares, options: StrictHTTPServerOptions{
		RequestErrorHandlerFunc: func(w http.ResponseWriter, r *http.Request, err error) {
			http.Error(w, err.Error(), http.StatusBadRequest)
		},
		ResponseErrorHandlerFunc: func(w http.ResponseWriter, r *http.Request, err error) {
			http.Error(w, err.Error(), http.StatusInternalServerError)
		},
	}}
}

func NewStrictHandlerWithOptions(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc, options StrictHTTPServerOptions) ServerInterface {
	if options.RequestErrorHandlerFunc == nil {
		options.RequestErrorHandlerFunc = func(w http.ResponseWriter, r *http.Request, err error) {
			http.Error(w, err.Error(), http.StatusBadRequest)
		}
	}
	if options.ResponseErrorHandlerFunc == nil {
		options.ResponseErrorHandlerFunc = func(w http.ResponseWriter, r *http.Request, err error) {
			http.Error(w, err.Error(), http.StatusInternalServerError)
		}
	}
	return &strictHandler{ssi: ssi, middlewares: middlewares, options: options}
}

type strictHandler struct {
	ssi         StrictServerInterface
	middlewares []StrictMiddlewareFunc
	options     StrictHTTPServerOptions
}

// GetAllVersions operation middleware
func (sh *strictHandler) GetAllVersions(w http.ResponseWriter, r *http.Request) {
	var request GetAllVersionsRequestObject

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetAllVersions(ctx, request.(GetAllVersionsRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetAllVersions")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetAllVersionsResponseObject); ok {
		if err := validResponse.VisitGetAllVersionsResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetCloudInfo operation middleware
func (sh *strictHandler) GetCloudInfo(w http.ResponseWriter, r *http.Request, params GetCloudInfoParams) {
	var request GetCloudInfoRequestObject

	request.Params = params

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetCloudInfo(ctx, request.(GetCloudInfoRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetCloudInfo")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetCloudInfoResponseObject); ok {
		if err := validResponse.VisitGetCloudInfoResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetAlarmDictionaries operation middleware
func (sh *strictHandler) GetAlarmDictionaries(w http.ResponseWriter, r *http.Request, params GetAlarmDictionariesParams) {
	var request GetAlarmDictionariesRequestObject

	request.Params = params

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetAlarmDictionaries(ctx, request.(GetAlarmDictionariesRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetAlarmDictionaries")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetAlarmDictionariesResponseObject); ok {
		if err := validResponse.VisitGetAlarmDictionariesResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetAlarmDictionary operation middleware
func (sh *strictHandler) GetAlarmDictionary(w http.ResponseWriter, r *http.Request, alarmDictionaryId externalRef0.AlarmDictionaryId) {
	var request GetAlarmDictionaryRequestObject

	request.AlarmDictionaryId = alarmDictionaryId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetAlarmDictionary(ctx, request.(GetAlarmDictionaryRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetAlarmDictionary")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetAlarmDictionaryResponseObject); ok {
		if err := validResponse.VisitGetAlarmDictionaryResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetMinorVersions operation middleware
func (sh *strictHandler) GetMinorVersions(w http.ResponseWriter, r *http.Request) {
	var request GetMinorVersionsRequestObject

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetMinorVersions(ctx, request.(GetMinorVersionsRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetMinorVersions")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetMinorVersionsResponseObject); ok {
		if err := validResponse.VisitGetMinorVersionsResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetDeploymentManagers operation middleware
func (sh *strictHandler) GetDeploymentManagers(w http.ResponseWriter, r *http.Request, params GetDeploymentManagersParams) {
	var request GetDeploymentManagersRequestObject

	request.Params = params

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetDeploymentManagers(ctx, request.(GetDeploymentManagersRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetDeploymentManagers")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetDeploymentManagersResponseObject); ok {
		if err := validResponse.VisitGetDeploymentManagersResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetDeploymentManager operation middleware
func (sh *strictHandler) GetDeploymentManager(w http.ResponseWriter, r *http.Request, deploymentManagerId DeploymentManagerId) {
	var request GetDeploymentManagerRequestObject

	request.DeploymentManagerId = deploymentManagerId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetDeploymentManager(ctx, request.(GetDeploymentManagerRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetDeploymentManager")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetDeploymentManagerResponseObject); ok {
		if err := validResponse.VisitGetDeploymentManagerResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetInternalResourceById operation middleware
func (sh *strictHandler) GetInternalResourceById(w http.ResponseWriter, r *http.Request, resourceId openapi_types.UUID) {
	var request GetInternalResourceByIdRequestObject

	request.ResourceId = resourceId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetInternalResourceById(ctx, request.(GetInternalResourceByIdRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetInternalResourceById")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetInternalResourceByIdResponseObject); ok {
		if err := validResponse.VisitGetInternalResourceByIdResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetLocations operation middleware
func (sh *strictHandler) GetLocations(w http.ResponseWriter, r *http.Request, params GetLocationsParams) {
	var request GetLocationsRequestObject

	request.Params = params

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetLocations(ctx, request.(GetLocationsRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetLocations")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetLocationsResponseObject); ok {
		if err := validResponse.VisitGetLocationsResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetLocation operation middleware
func (sh *strictHandler) GetLocation(w http.ResponseWriter, r *http.Request, globalLocationId GlobalLocationId) {
	var request GetLocationRequestObject

	request.GlobalLocationId = globalLocationId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetLocation(ctx, request.(GetLocationRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetLocation")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetLocationResponseObject); ok {
		if err := validResponse.VisitGetLocationResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetOCloudSites operation middleware
func (sh *strictHandler) GetOCloudSites(w http.ResponseWriter, r *http.Request, params GetOCloudSitesParams) {
	var request GetOCloudSitesRequestObject

	request.Params = params

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetOCloudSites(ctx, request.(GetOCloudSitesRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetOCloudSites")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetOCloudSitesResponseObject); ok {
		if err := validResponse.VisitGetOCloudSitesResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetOCloudSite operation middleware
func (sh *strictHandler) GetOCloudSite(w http.ResponseWriter, r *http.Request, oCloudSiteId OCloudSiteId) {
	var request GetOCloudSiteRequestObject

	request.OCloudSiteId = oCloudSiteId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetOCloudSite(ctx, request.(GetOCloudSiteRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetOCloudSite")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetOCloudSiteResponseObject); ok {
		if err := validResponse.VisitGetOCloudSiteResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetResourcePools operation middleware
func (sh *strictHandler) GetResourcePools(w http.ResponseWriter, r *http.Request, params GetResourcePoolsParams) {
	var request GetResourcePoolsRequestObject

	request.Params = params

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetResourcePools(ctx, request.(GetResourcePoolsRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetResourcePools")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetResourcePoolsResponseObject); ok {
		if err := validResponse.VisitGetResourcePoolsResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetResourcePool operation middleware
func (sh *strictHandler) GetResourcePool(w http.ResponseWriter, r *http.Request, resourcePoolId ResourcePoolId) {
	var request GetResourcePoolRequestObject

	request.ResourcePoolId = resourcePoolId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetResourcePool(ctx, request.(GetResourcePoolRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetResourcePool")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetResourcePoolResponseObject); ok {
		if err := validResponse.VisitGetResourcePoolResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetResources operation middleware
func (sh *strictHandler) GetResources(w http.ResponseWriter, r *http.Request, resourcePoolId ResourcePoolId, params GetResourcesParams) {
	var request GetResourcesRequestObject

	request.ResourcePoolId = resourcePoolId
	request.Params = params

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetResources(ctx, request.(GetResourcesRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetResources")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetResourcesResponseObject); ok {
		if err := validResponse.VisitGetResourcesResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetResource operation middleware
func (sh *strictHandler) GetResource(w http.ResponseWriter, r *http.Request, resourcePoolId ResourcePoolId, resourceId ResourceId) {
	var request GetResourceRequestObject

	request.ResourcePoolId = resourcePoolId
	request.ResourceId = resourceId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetResource(ctx, request.(GetResourceRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetResource")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetResourceResponseObject); ok {
		if err := validResponse.VisitGetResourceResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetResourceTypes operation middleware
func (sh *strictHandler) GetResourceTypes(w http.ResponseWriter, r *http.Request, params GetResourceTypesParams) {
	var request GetResourceTypesRequestObject

	request.Params = params

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetResourceTypes(ctx, request.(GetResourceTypesRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetResourceTypes")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetResourceTypesResponseObject); ok {
		if err := validResponse.VisitGetResourceTypesResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetResourceType operation middleware
func (sh *strictHandler) GetResourceType(w http.ResponseWriter, r *http.Request, resourceTypeId ResourceTypeId) {
	var request GetResourceTypeRequestObject

	request.ResourceTypeId = resourceTypeId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetResourceType(ctx, request.(GetResourceTypeRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetResourceType")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetResourceTypeResponseObject); ok {
		if err := validResponse.VisitGetResourceTypeResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetResourceTypeAlarmDictionary operation middleware
func (sh *strictHandler) GetResourceTypeAlarmDictionary(w http.ResponseWriter, r *http.Request, resourceTypeId ResourceTypeId) {
	var request GetResourceTypeAlarmDictionaryRequestObject

	request.ResourceTypeId = resourceTypeId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetResourceTypeAlarmDictionary(ctx, request.(GetResourceTypeAlarmDictionaryRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetResourceTypeAlarmDictionary")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetResourceTypeAlarmDictionaryResponseObject); ok {
		if err := validResponse.VisitGetResourceTypeAlarmDictionaryResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetSubscriptions operation middleware
func (sh *strictHandler) GetSubscriptions(w http.ResponseWriter, r *http.Request, params GetSubscriptionsParams) {
	var request GetSubscriptionsRequestObject

	request.Params = params

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetSubscriptions(ctx, request.(GetSubscriptionsRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetSubscriptions")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetSubscriptionsResponseObject); ok {
		if err := validResponse.VisitGetSubscriptionsResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// CreateSubscription operation middleware
func (sh *strictHandler) CreateSubscription(w http.ResponseWriter, r *http.Request) {
	var request CreateSubscriptionRequestObject

	var body CreateSubscriptionJSONRequestBody
	if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
		sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err))
		return
	}
	request.Body = &body

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.CreateSubscription(ctx, request.(CreateSubscriptionRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "CreateSubscription")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(CreateSubscriptionResponseObject); ok {
		if err := validResponse.VisitCreateSubscriptionResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// DeleteSubscription operation middleware
func (sh *strictHandler) DeleteSubscription(w http.ResponseWriter, r *http.Request, subscriptionId SubscriptionId) {
	var request DeleteSubscriptionRequestObject

	request.SubscriptionId = subscriptionId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.DeleteSubscription(ctx, request.(DeleteSubscriptionRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "DeleteSubscription")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(DeleteSubscriptionResponseObject); ok {
		if err := validResponse.VisitDeleteSubscriptionResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// GetSubscription operation middleware
func (sh *strictHandler) GetSubscription(w http.ResponseWriter, r *http.Request, subscriptionId SubscriptionId) {
	var request GetSubscriptionRequestObject

	request.SubscriptionId = subscriptionId

	handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
		return sh.ssi.GetSubscription(ctx, request.(GetSubscriptionRequestObject))
	}
	for _, middleware := range sh.middlewares {
		handler = middleware(handler, "GetSubscription")
	}

	response, err := handler(r.Context(), w, r, request)

	if err != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, err)
	} else if validResponse, ok := response.(GetSubscriptionResponseObject); ok {
		if err := validResponse.VisitGetSubscriptionResponse(w); err != nil {
			sh.options.ResponseErrorHandlerFunc(w, r, err)
		}
	} else if response != nil {
		sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
	}
}

// Base64 encoded, compressed with deflate, json marshaled OpenAPI spec.
// Stored as a slice of fixed-width chunks rather than one concatenated
// const string: with thousands of chunks the chained `+` fold is several
// times slower for the Go compiler than parsing a slice literal.
var swaggerSpec = []string{
	"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",
}

// decodeSpec returns the embedded OpenAPI spec as raw JSON bytes,
// after base64-decoding and flate-decompressing the embedded blob.
func decodeSpec() ([]byte, error) {
	encoded := strings.Join(swaggerSpec, "")
	compressed, err := base64.StdEncoding.DecodeString(encoded)
	if err != nil {
		return nil, fmt.Errorf("error base64 decoding spec: %w", err)
	}
	zr := flate.NewReader(bytes.NewReader(compressed))
	var buf bytes.Buffer
	if _, err := buf.ReadFrom(zr); err != nil {
		return nil, fmt.Errorf("read flate: %w", err)
	}
	if err := zr.Close(); err != nil {
		return nil, fmt.Errorf("close flate reader: %w", err)
	}

	return buf.Bytes(), nil
}

var rawSpec = decodeSpecCached()

// a naive cache of the decoded OpenAPI spec
func decodeSpecCached() func() ([]byte, error) {
	data, err := decodeSpec()
	return func() ([]byte, error) {
		return data, err
	}
}

// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
	res := make(map[string]func() ([]byte, error))
	if len(pathToFile) > 0 {
		res[pathToFile] = rawSpec
	}

	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(path.Dir(pathToFile), "../../common/api/openapi.yaml")) {
		if _, ok := res[rawPath]; ok {
			// it is not possible to compare functions in golang, so always overwrite the old value
		}
		res[rawPath] = rawFunc
	}
	return res
}

// GetSpec returns the OpenAPI specification corresponding to the generated
// code in this file. External references in the spec are resolved through
// PathToRawSpec; externally-referenced files must be embedded in their
// corresponding Go packages (via the import-mapping feature). URL-based
// external refs are not supported.
func GetSpec() (swagger *openapi3.T, err error) {
	resolvePath := PathToRawSpec("")

	loader := openapi3.NewLoader()
	loader.IsExternalRefsAllowed = true
	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
		pathToFile := url.String()
		pathToFile = path.Clean(pathToFile)
		getSpec, ok := resolvePath[pathToFile]
		if !ok {
			err1 := fmt.Errorf("path not found: %s", pathToFile)
			return nil, err1
		}
		return getSpec()
	}
	var specData []byte
	specData, err = rawSpec()
	if err != nil {
		return
	}
	swagger, err = loader.LoadFromData(specData)
	if err != nil {
		return
	}
	return
}

// GetSpecJSON returns the raw JSON bytes of the embedded OpenAPI
// specification: decompressed but not unmarshaled. External references
// are not resolved here; the bytes are the spec exactly as embedded by
// codegen. The result is cached at package init time, so repeated calls
// are cheap.
func GetSpecJSON() ([]byte, error) {
	return rawSpec()
}

// GetSwagger returns the OpenAPI specification corresponding to the
// generated code in this file.
//
// Deprecated: GetSwagger predates kin-openapi renaming openapi3.Swagger
// to openapi3.T. Use [GetSpec] instead. This wrapper is retained for
// backwards compatibility.
func GetSwagger() (*openapi3.T, error) {
	return GetSpec()
}
