diff --git a/CHANGELOG.md b/CHANGELOG.md index c736b506e..c48e48dd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,8 +36,11 @@ - **Feature:** Add new method `GetQuota` to get the quota for TLS certificates in a project - `v2betaapi`: - **Deprecation:** The `v2beta2api` is deprecated and will be removed in the future. Migrate to `v2api` -- `cost`: [v0.1.0](services/cost/CHANGELOG.md#v010) - - **New:** STACKIT Cost module can be used to retrieve STACKIT cost information +- `cost`: + - [v0.1.0](services/cost/CHANGELOG.md#v010) + - **New:** STACKIT Cost module can be used to retrieve STACKIT cost information + - [v0.2.0](services/cost/CHANGELOG.md#v020) + - **Improvement:** Introduce new more specific error models `AuthErrorResponse` and `ErrorResponse` - `edge`: - [v0.8.0](services/edge/CHANGELOG.md#v080) - `v1beta1api`: Removal of deprecated API client method `ListPlansGlobal` diff --git a/services/cost/CHANGELOG.md b/services/cost/CHANGELOG.md index 25d1bf628..7a675cb0a 100644 --- a/services/cost/CHANGELOG.md +++ b/services/cost/CHANGELOG.md @@ -1,2 +1,5 @@ +## v0.2.0 +- **Improvement:** Introduce new more specific error models `AuthErrorResponse` and `ErrorResponse` + ## v0.1.0 - **New**: STACKIT Cost module can be used to retrieve STACKIT cost information \ No newline at end of file diff --git a/services/cost/VERSION b/services/cost/VERSION index 9ff151c5b..81fd7ba08 100644 --- a/services/cost/VERSION +++ b/services/cost/VERSION @@ -1 +1 @@ -v0.1.0 \ No newline at end of file +v0.2.0 \ No newline at end of file diff --git a/services/cost/oas_commit b/services/cost/oas_commit index b82ec4916..cca6a5e9a 100644 --- a/services/cost/oas_commit +++ b/services/cost/oas_commit @@ -1 +1 @@ -1580d22d7dd90cfd56802bdda4a61795d1cb9813 +95de5cba3201a683657cb472d5fa30aa768f19cc diff --git a/services/cost/v3api/api_default.go b/services/cost/v3api/api_default.go index fa898d1c5..beee4947a 100644 --- a/services/cost/v3api/api_default.go +++ b/services/cost/v3api/api_default.go @@ -250,8 +250,20 @@ func (a *DefaultAPIService) GetCostsForProjectExecute(r ApiGetCostsForProjectReq ErrorMessage: localVarHTTPResponse.Status, StatusCode: localVarHTTPResponse.StatusCode, } + if localVarHTTPResponse.StatusCode == 400 { + var v ErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v + return localVarReturnValue, newErr + return localVarReturnValue, newErr + } if localVarHTTPResponse.StatusCode == 401 { - var v map[string]interface{} + var v AuthErrorResponse err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr.ErrorMessage = err.Error() @@ -262,15 +274,29 @@ func (a *DefaultAPIService) GetCostsForProjectExecute(r ApiGetCostsForProjectReq return localVarReturnValue, newErr return localVarReturnValue, newErr } - var v DefaultError - err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) - if err != nil { - newErr.ErrorMessage = err.Error() + if localVarHTTPResponse.StatusCode == 403 { + var v AuthErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v + return localVarReturnValue, newErr + return localVarReturnValue, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v ErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v return localVarReturnValue, newErr } - newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) - newErr.Model = v - return localVarReturnValue, newErr return localVarReturnValue, newErr } @@ -460,8 +486,32 @@ func (a *DefaultAPIService) ListCostsForCustomerExecute(r ApiListCostsForCustome ErrorMessage: localVarHTTPResponse.Status, StatusCode: localVarHTTPResponse.StatusCode, } + if localVarHTTPResponse.StatusCode == 400 { + var v ErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v + return localVarReturnValue, newErr + return localVarReturnValue, newErr + } if localVarHTTPResponse.StatusCode == 401 { - var v map[string]interface{} + var v AuthErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v + return localVarReturnValue, newErr + return localVarReturnValue, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v AuthErrorResponse err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr.ErrorMessage = err.Error() @@ -472,15 +522,17 @@ func (a *DefaultAPIService) ListCostsForCustomerExecute(r ApiListCostsForCustome return localVarReturnValue, newErr return localVarReturnValue, newErr } - var v DefaultError - err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) - if err != nil { - newErr.ErrorMessage = err.Error() + if localVarHTTPResponse.StatusCode == 404 { + var v ErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v return localVarReturnValue, newErr } - newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) - newErr.Model = v - return localVarReturnValue, newErr return localVarReturnValue, newErr } @@ -670,8 +722,20 @@ func (a *DefaultAPIService) ListCostsForResellerExecute(r ApiListCostsForReselle ErrorMessage: localVarHTTPResponse.Status, StatusCode: localVarHTTPResponse.StatusCode, } + if localVarHTTPResponse.StatusCode == 400 { + var v ErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v + return localVarReturnValue, newErr + return localVarReturnValue, newErr + } if localVarHTTPResponse.StatusCode == 401 { - var v map[string]interface{} + var v AuthErrorResponse err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr.ErrorMessage = err.Error() @@ -682,15 +746,29 @@ func (a *DefaultAPIService) ListCostsForResellerExecute(r ApiListCostsForReselle return localVarReturnValue, newErr return localVarReturnValue, newErr } - var v DefaultError - err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) - if err != nil { - newErr.ErrorMessage = err.Error() + if localVarHTTPResponse.StatusCode == 403 { + var v AuthErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v + return localVarReturnValue, newErr + return localVarReturnValue, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v ErrorResponse + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v return localVarReturnValue, newErr } - newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) - newErr.Model = v - return localVarReturnValue, newErr return localVarReturnValue, newErr } diff --git a/services/cost/v3api/model_auth_error_response.go b/services/cost/v3api/model_auth_error_response.go new file mode 100644 index 000000000..a48e13e96 --- /dev/null +++ b/services/cost/v3api/model_auth_error_response.go @@ -0,0 +1,283 @@ +/* +STACKIT Cost API + +The cost API provides detailed reports on the costs for a customer or project over a certain amount of time + +API version: 3.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package v3api + +import ( + "encoding/json" + "fmt" + "time" +) + +// checks if the AuthErrorResponse type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthErrorResponse{} + +// AuthErrorResponse struct for AuthErrorResponse +type AuthErrorResponse struct { + Error string `json:"error"` + Message string `json:"message"` + Path string `json:"path"` + Status int32 `json:"status"` + TimeStamp time.Time `json:"timeStamp"` + AdditionalProperties map[string]interface{} +} + +type _AuthErrorResponse AuthErrorResponse + +// NewAuthErrorResponse instantiates a new AuthErrorResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthErrorResponse(error_ string, message string, path string, status int32, timeStamp time.Time) *AuthErrorResponse { + this := AuthErrorResponse{} + this.Error = error_ + this.Message = message + this.Path = path + this.Status = status + this.TimeStamp = timeStamp + return &this +} + +// NewAuthErrorResponseWithDefaults instantiates a new AuthErrorResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthErrorResponseWithDefaults() *AuthErrorResponse { + this := AuthErrorResponse{} + return &this +} + +// GetError returns the Error field value +func (o *AuthErrorResponse) GetError() string { + if o == nil { + var ret string + return ret + } + + return o.Error +} + +// GetErrorOk returns a tuple with the Error field value +// and a boolean to check if the value has been set. +func (o *AuthErrorResponse) GetErrorOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Error, true +} + +// SetError sets field value +func (o *AuthErrorResponse) SetError(v string) { + o.Error = v +} + +// GetMessage returns the Message field value +func (o *AuthErrorResponse) GetMessage() string { + if o == nil { + var ret string + return ret + } + + return o.Message +} + +// GetMessageOk returns a tuple with the Message field value +// and a boolean to check if the value has been set. +func (o *AuthErrorResponse) GetMessageOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Message, true +} + +// SetMessage sets field value +func (o *AuthErrorResponse) SetMessage(v string) { + o.Message = v +} + +// GetPath returns the Path field value +func (o *AuthErrorResponse) GetPath() string { + if o == nil { + var ret string + return ret + } + + return o.Path +} + +// GetPathOk returns a tuple with the Path field value +// and a boolean to check if the value has been set. +func (o *AuthErrorResponse) GetPathOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Path, true +} + +// SetPath sets field value +func (o *AuthErrorResponse) SetPath(v string) { + o.Path = v +} + +// GetStatus returns the Status field value +func (o *AuthErrorResponse) GetStatus() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.Status +} + +// GetStatusOk returns a tuple with the Status field value +// and a boolean to check if the value has been set. +func (o *AuthErrorResponse) GetStatusOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.Status, true +} + +// SetStatus sets field value +func (o *AuthErrorResponse) SetStatus(v int32) { + o.Status = v +} + +// GetTimeStamp returns the TimeStamp field value +func (o *AuthErrorResponse) GetTimeStamp() time.Time { + if o == nil { + var ret time.Time + return ret + } + + return o.TimeStamp +} + +// GetTimeStampOk returns a tuple with the TimeStamp field value +// and a boolean to check if the value has been set. +func (o *AuthErrorResponse) GetTimeStampOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return &o.TimeStamp, true +} + +// SetTimeStamp sets field value +func (o *AuthErrorResponse) SetTimeStamp(v time.Time) { + o.TimeStamp = v +} + +func (o AuthErrorResponse) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthErrorResponse) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["error"] = o.Error + toSerialize["message"] = o.Message + toSerialize["path"] = o.Path + toSerialize["status"] = o.Status + toSerialize["timeStamp"] = o.TimeStamp + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthErrorResponse) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "error", + "message", + "path", + "status", + "timeStamp", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAuthErrorResponse := _AuthErrorResponse{} + + err = json.Unmarshal(data, &varAuthErrorResponse) + + if err != nil { + return err + } + + *o = AuthErrorResponse(varAuthErrorResponse) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "error") + delete(additionalProperties, "message") + delete(additionalProperties, "path") + delete(additionalProperties, "status") + delete(additionalProperties, "timeStamp") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthErrorResponse struct { + value *AuthErrorResponse + isSet bool +} + +func (v NullableAuthErrorResponse) Get() *AuthErrorResponse { + return v.value +} + +func (v *NullableAuthErrorResponse) Set(val *AuthErrorResponse) { + v.value = val + v.isSet = true +} + +func (v NullableAuthErrorResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthErrorResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthErrorResponse(val *AuthErrorResponse) *NullableAuthErrorResponse { + return &NullableAuthErrorResponse{value: val, isSet: true} +} + +func (v NullableAuthErrorResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthErrorResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/services/cost/v3api/model_default_error.go b/services/cost/v3api/model_default_error.go deleted file mode 100644 index 792a0971e..000000000 --- a/services/cost/v3api/model_default_error.go +++ /dev/null @@ -1,203 +0,0 @@ -/* -STACKIT Cost API - -The cost API provides detailed reports on the costs for a customer or project over a certain amount of time - -API version: 3.0 -*/ - -// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. - -package v3api - -import ( - "encoding/json" - "fmt" -) - -// checks if the DefaultError type satisfies the MappedNullable interface at compile time -var _ MappedNullable = &DefaultError{} - -// DefaultError A standard error object. -type DefaultError struct { - Code string `json:"code"` - Message *string `json:"message,omitempty"` - AdditionalProperties map[string]interface{} -} - -type _DefaultError DefaultError - -// NewDefaultError instantiates a new DefaultError object -// This constructor will assign default values to properties that have it defined, -// and makes sure properties required by API are set, but the set of arguments -// will change when the set of required properties is changed -func NewDefaultError(code string) *DefaultError { - this := DefaultError{} - this.Code = code - return &this -} - -// NewDefaultErrorWithDefaults instantiates a new DefaultError object -// This constructor will only assign default values to properties that have it defined, -// but it doesn't guarantee that properties required by API are set -func NewDefaultErrorWithDefaults() *DefaultError { - this := DefaultError{} - return &this -} - -// GetCode returns the Code field value -func (o *DefaultError) GetCode() string { - if o == nil { - var ret string - return ret - } - - return o.Code -} - -// GetCodeOk returns a tuple with the Code field value -// and a boolean to check if the value has been set. -func (o *DefaultError) GetCodeOk() (*string, bool) { - if o == nil { - return nil, false - } - return &o.Code, true -} - -// SetCode sets field value -func (o *DefaultError) SetCode(v string) { - o.Code = v -} - -// GetMessage returns the Message field value if set, zero value otherwise. -func (o *DefaultError) GetMessage() string { - if o == nil || IsNil(o.Message) { - var ret string - return ret - } - return *o.Message -} - -// GetMessageOk returns a tuple with the Message field value if set, nil otherwise -// and a boolean to check if the value has been set. -func (o *DefaultError) GetMessageOk() (*string, bool) { - if o == nil || IsNil(o.Message) { - return nil, false - } - return o.Message, true -} - -// HasMessage returns a boolean if a field has been set. -func (o *DefaultError) HasMessage() bool { - if o != nil && !IsNil(o.Message) { - return true - } - - return false -} - -// SetMessage gets a reference to the given string and assigns it to the Message field. -func (o *DefaultError) SetMessage(v string) { - o.Message = &v -} - -func (o DefaultError) MarshalJSON() ([]byte, error) { - toSerialize, err := o.ToMap() - if err != nil { - return []byte{}, err - } - return json.Marshal(toSerialize) -} - -func (o DefaultError) ToMap() (map[string]interface{}, error) { - toSerialize := map[string]interface{}{} - toSerialize["code"] = o.Code - if !IsNil(o.Message) { - toSerialize["message"] = o.Message - } - - for key, value := range o.AdditionalProperties { - toSerialize[key] = value - } - - return toSerialize, nil -} - -func (o *DefaultError) UnmarshalJSON(data []byte) (err error) { - // This validates that all required properties are included in the JSON object - // by unmarshalling the object into a generic map with string keys and checking - // that every required field exists as a key in the generic map. - requiredProperties := []string{ - "code", - } - - allProperties := make(map[string]interface{}) - - err = json.Unmarshal(data, &allProperties) - - if err != nil { - return err - } - - for _, requiredProperty := range requiredProperties { - if _, exists := allProperties[requiredProperty]; !exists { - return fmt.Errorf("no value given for required property %v", requiredProperty) - } - } - - varDefaultError := _DefaultError{} - - err = json.Unmarshal(data, &varDefaultError) - - if err != nil { - return err - } - - *o = DefaultError(varDefaultError) - - additionalProperties := make(map[string]interface{}) - - if err = json.Unmarshal(data, &additionalProperties); err == nil { - delete(additionalProperties, "code") - delete(additionalProperties, "message") - o.AdditionalProperties = additionalProperties - } - - return err -} - -type NullableDefaultError struct { - value *DefaultError - isSet bool -} - -func (v NullableDefaultError) Get() *DefaultError { - return v.value -} - -func (v *NullableDefaultError) Set(val *DefaultError) { - v.value = val - v.isSet = true -} - -func (v NullableDefaultError) IsSet() bool { - return v.isSet -} - -func (v *NullableDefaultError) Unset() { - v.value = nil - v.isSet = false -} - -func NewNullableDefaultError(val *DefaultError) *NullableDefaultError { - return &NullableDefaultError{value: val, isSet: true} -} - -func (v NullableDefaultError) MarshalJSON() ([]byte, error) { - return json.Marshal(v.value) -} - -func (v *NullableDefaultError) UnmarshalJSON(src []byte) error { - v.isSet = true - return json.Unmarshal(src, &v.value) -} diff --git a/services/cost/v3api/model_error_response.go b/services/cost/v3api/model_error_response.go new file mode 100644 index 000000000..4b66771ff --- /dev/null +++ b/services/cost/v3api/model_error_response.go @@ -0,0 +1,166 @@ +/* +STACKIT Cost API + +The cost API provides detailed reports on the costs for a customer or project over a certain amount of time + +API version: 3.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package v3api + +import ( + "encoding/json" + "fmt" +) + +// checks if the ErrorResponse type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ErrorResponse{} + +// ErrorResponse struct for ErrorResponse +type ErrorResponse struct { + Msg string `json:"msg"` + AdditionalProperties map[string]interface{} +} + +type _ErrorResponse ErrorResponse + +// NewErrorResponse instantiates a new ErrorResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewErrorResponse(msg string) *ErrorResponse { + this := ErrorResponse{} + this.Msg = msg + return &this +} + +// NewErrorResponseWithDefaults instantiates a new ErrorResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewErrorResponseWithDefaults() *ErrorResponse { + this := ErrorResponse{} + return &this +} + +// GetMsg returns the Msg field value +func (o *ErrorResponse) GetMsg() string { + if o == nil { + var ret string + return ret + } + + return o.Msg +} + +// GetMsgOk returns a tuple with the Msg field value +// and a boolean to check if the value has been set. +func (o *ErrorResponse) GetMsgOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Msg, true +} + +// SetMsg sets field value +func (o *ErrorResponse) SetMsg(v string) { + o.Msg = v +} + +func (o ErrorResponse) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ErrorResponse) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["msg"] = o.Msg + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ErrorResponse) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "msg", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varErrorResponse := _ErrorResponse{} + + err = json.Unmarshal(data, &varErrorResponse) + + if err != nil { + return err + } + + *o = ErrorResponse(varErrorResponse) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "msg") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableErrorResponse struct { + value *ErrorResponse + isSet bool +} + +func (v NullableErrorResponse) Get() *ErrorResponse { + return v.value +} + +func (v *NullableErrorResponse) Set(val *ErrorResponse) { + v.value = val + v.isSet = true +} + +func (v NullableErrorResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableErrorResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableErrorResponse(val *ErrorResponse) *NullableErrorResponse { + return &NullableErrorResponse{value: val, isSet: true} +} + +func (v NullableErrorResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableErrorResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +}