From 74e4623a6c2d0b92fcf251f6fb928e1937686969 Mon Sep 17 00:00:00 2001 From: Simon Murray Date: Wed, 5 Jun 2024 14:23:07 +0100 Subject: [PATCH] Share Errors (#69) Ensure consistency across services. --- go.mod | 2 +- go.sum | 4 +- pkg/handler/groups/client.go | 2 +- pkg/handler/oauth2providers/client.go | 2 +- pkg/handler/organizations/client.go | 2 +- pkg/handler/projects/client.go | 2 +- pkg/oauth2/oauth2.go | 3 +- pkg/openapi/client.go | 345 +++++++++++------------ pkg/openapi/schema.go | 386 +++++++++++++------------- pkg/openapi/server.spec.yaml | 275 ++++++------------ pkg/openapi/types.go | 49 ---- 11 files changed, 463 insertions(+), 609 deletions(-) diff --git a/go.mod b/go.mod index 1bc42bb1..7a298f13 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/oapi-codegen/runtime v1.1.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.9.0 - github.com/unikorn-cloud/core v0.1.41 + github.com/unikorn-cloud/core v0.1.43 go.opentelemetry.io/otel v1.24.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 go.opentelemetry.io/otel/sdk v1.24.0 diff --git a/go.sum b/go.sum index 626ff40f..3fec621d 100644 --- a/go.sum +++ b/go.sum @@ -129,8 +129,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/unikorn-cloud/core v0.1.41 h1:hjiGB8lZkLR3306BlR/jy6Bx2uvecm0W8YFE2GrdVDY= -github.com/unikorn-cloud/core v0.1.41/go.mod h1:cP39UQN7aSmsfjQuSMsworI4oBIwx4oA4u20CbPpfZw= +github.com/unikorn-cloud/core v0.1.43 h1:QszxVqWaZXIzSlf0qkHa5m8cRnjKGvHjM8iUk0Y3U9A= +github.com/unikorn-cloud/core v0.1.43/go.mod h1:cP39UQN7aSmsfjQuSMsworI4oBIwx4oA4u20CbPpfZw= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= diff --git a/pkg/handler/groups/client.go b/pkg/handler/groups/client.go index c51f6254..f7f1db25 100644 --- a/pkg/handler/groups/client.go +++ b/pkg/handler/groups/client.go @@ -48,7 +48,7 @@ func New(client client.Client, namespace string) *Client { func convert(in *unikornv1.Group) *openapi.GroupRead { out := &openapi.GroupRead{ - Metadata: conversion.OrganizationScopedResourceReadMetadata(in, coreopenapi.Provisioned), + Metadata: conversion.OrganizationScopedResourceReadMetadata(in, coreopenapi.ResourceProvisioningStatusProvisioned), Spec: openapi.GroupSpec{ Roles: in.Spec.Roles, }, diff --git a/pkg/handler/oauth2providers/client.go b/pkg/handler/oauth2providers/client.go index 6ae64980..5a944b88 100644 --- a/pkg/handler/oauth2providers/client.go +++ b/pkg/handler/oauth2providers/client.go @@ -70,7 +70,7 @@ func convert(permissions *rbac.Permissions, in *unikornv1.OAuth2Provider) *opena t := openapi.Oauth2ProviderType(*in.Spec.Type) out := &openapi.Oauth2ProviderRead{ - Metadata: conversion.OrganizationScopedResourceReadMetadata(in, coreopenapi.Provisioned), + Metadata: conversion.OrganizationScopedResourceReadMetadata(in, coreopenapi.ResourceProvisioningStatusProvisioned), Spec: openapi.Oauth2ProviderSpec{ Type: &t, ClientID: in.Spec.ClientID, diff --git a/pkg/handler/organizations/client.go b/pkg/handler/organizations/client.go index 8706d93f..7604585b 100644 --- a/pkg/handler/organizations/client.go +++ b/pkg/handler/organizations/client.go @@ -85,7 +85,7 @@ func convertOrganizationType(in *unikornv1.Organization) openapi.OrganizationTyp } func convert(in *unikornv1.Organization) *openapi.OrganizationRead { - provisioningStatus := coreopenapi.Unknown + provisioningStatus := coreopenapi.ResourceProvisioningStatusUnknown if condition, err := in.StatusConditionRead(unikornv1core.ConditionAvailable); err == nil { provisioningStatus = conversion.ConvertStatusCondition(condition) diff --git a/pkg/handler/projects/client.go b/pkg/handler/projects/client.go index 655b188e..32264a69 100644 --- a/pkg/handler/projects/client.go +++ b/pkg/handler/projects/client.go @@ -52,7 +52,7 @@ func New(client client.Client, namespace string) *Client { } func convert(in *unikornv1.Project) *openapi.ProjectRead { - provisioningStatus := coreopenapi.Unknown + provisioningStatus := coreopenapi.ResourceProvisioningStatusUnknown if condition, err := in.StatusConditionRead(unikornv1core.ConditionAvailable); err == nil { provisioningStatus = conversion.ConvertStatusCondition(condition) diff --git a/pkg/oauth2/oauth2.go b/pkg/oauth2/oauth2.go index 704ce5c1..b9865217 100644 --- a/pkg/oauth2/oauth2.go +++ b/pkg/oauth2/oauth2.go @@ -40,6 +40,7 @@ import ( "golang.org/x/oauth2" "github.com/unikorn-cloud/core/pkg/authorization/userinfo" + coreopenapi "github.com/unikorn-cloud/core/pkg/openapi" "github.com/unikorn-cloud/core/pkg/server/errors" unikornv1 "github.com/unikorn-cloud/identity/pkg/apis/unikorn/v1alpha1" "github.com/unikorn-cloud/identity/pkg/jose" @@ -969,7 +970,7 @@ func (a *Authenticator) Token(w http.ResponseWriter, r *http.Request) (*openapi. if err != nil { var rerr *oauth2.RetrieveError - if goerrors.As(err, &rerr) && rerr.ErrorCode == string(openapi.InvalidGrant) { + if goerrors.As(err, &rerr) && rerr.ErrorCode == string(coreopenapi.InvalidGrant) { return nil, errors.OAuth2InvalidGrant("provider refresh token has expired").WithError(err) } diff --git a/pkg/openapi/client.go b/pkg/openapi/client.go index 1eab0d32..32a131f6 100644 --- a/pkg/openapi/client.go +++ b/pkg/openapi/client.go @@ -14,6 +14,7 @@ import ( "strings" "github.com/oapi-codegen/runtime" + externalRef0 "github.com/unikorn-cloud/core/pkg/openapi" ) // RequestEditorFn is the function signature for the RequestEditor callback function @@ -1944,9 +1945,9 @@ type GetApiV1Oauth2providersResponse struct { Body []byte HTTPResponse *http.Response JSON200 *SystemOauth2ProvidersResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -1969,8 +1970,8 @@ type GetApiV1OrganizationsResponse struct { Body []byte HTTPResponse *http.Response JSON200 *OrganizationsResponse - JSON401 *UnauthorizedResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -1992,10 +1993,10 @@ func (r GetApiV1OrganizationsResponse) StatusCode() int { type PostApiV1OrganizationsResponse struct { Body []byte HTTPResponse *http.Response - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON409 *ConflictResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON409 *externalRef0.ConflictResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2018,9 +2019,9 @@ type GetApiV1OrganizationsOrganizationIDResponse struct { Body []byte HTTPResponse *http.Response JSON200 *OrganizationResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2042,9 +2043,9 @@ func (r GetApiV1OrganizationsOrganizationIDResponse) StatusCode() int { type PutApiV1OrganizationsOrganizationIDResponse struct { Body []byte HTTPResponse *http.Response - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2067,8 +2068,8 @@ type GetApiV1OrganizationsOrganizationIDAclResponse struct { Body []byte HTTPResponse *http.Response JSON200 *AclResponse - JSON401 *UnauthorizedResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2091,9 +2092,9 @@ type GetApiV1OrganizationsOrganizationIDAvailableGroupsResponse struct { Body []byte HTTPResponse *http.Response JSON200 *AvailableGroupsResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2116,9 +2117,9 @@ type GetApiV1OrganizationsOrganizationIDGroupsResponse struct { Body []byte HTTPResponse *http.Response JSON200 *GroupsResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2140,10 +2141,10 @@ func (r GetApiV1OrganizationsOrganizationIDGroupsResponse) StatusCode() int { type PostApiV1OrganizationsOrganizationIDGroupsResponse struct { Body []byte HTTPResponse *http.Response - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON409 *ConflictResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON409 *externalRef0.ConflictResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2165,10 +2166,10 @@ func (r PostApiV1OrganizationsOrganizationIDGroupsResponse) StatusCode() int { type DeleteApiV1OrganizationsOrganizationIDGroupsGroupidResponse struct { Body []byte HTTPResponse *http.Response - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON404 *NotFoundResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON404 *externalRef0.NotFoundResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2191,9 +2192,9 @@ type GetApiV1OrganizationsOrganizationIDGroupsGroupidResponse struct { Body []byte HTTPResponse *http.Response JSON200 *GroupResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2215,10 +2216,10 @@ func (r GetApiV1OrganizationsOrganizationIDGroupsGroupidResponse) StatusCode() i type PutApiV1OrganizationsOrganizationIDGroupsGroupidResponse struct { Body []byte HTTPResponse *http.Response - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON404 *NotFoundResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON404 *externalRef0.NotFoundResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2241,10 +2242,10 @@ type GetApiV1OrganizationsOrganizationIDOauth2providersResponse struct { Body []byte HTTPResponse *http.Response JSON200 *Oauth2ProvidersResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON404 *NotFoundResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON404 *externalRef0.NotFoundResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2266,10 +2267,10 @@ func (r GetApiV1OrganizationsOrganizationIDOauth2providersResponse) StatusCode() type PostApiV1OrganizationsOrganizationIDOauth2providersResponse struct { Body []byte HTTPResponse *http.Response - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON409 *ConflictResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON409 *externalRef0.ConflictResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2291,10 +2292,10 @@ func (r PostApiV1OrganizationsOrganizationIDOauth2providersResponse) StatusCode( type DeleteApiV1OrganizationsOrganizationIDOauth2providersProviderIDResponse struct { Body []byte HTTPResponse *http.Response - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON404 *NotFoundResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON404 *externalRef0.NotFoundResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2316,10 +2317,10 @@ func (r DeleteApiV1OrganizationsOrganizationIDOauth2providersProviderIDResponse) type PutApiV1OrganizationsOrganizationIDOauth2providersProviderIDResponse struct { Body []byte HTTPResponse *http.Response - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON404 *NotFoundResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON404 *externalRef0.NotFoundResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2342,9 +2343,9 @@ type GetApiV1OrganizationsOrganizationIDProjectsResponse struct { Body []byte HTTPResponse *http.Response JSON200 *ProjectsResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2366,11 +2367,11 @@ func (r GetApiV1OrganizationsOrganizationIDProjectsResponse) StatusCode() int { type PostApiV1OrganizationsOrganizationIDProjectsResponse struct { Body []byte HTTPResponse *http.Response - JSON400 *BadRequestResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON409 *ConflictResponse - JSON500 *InternalServerErrorResponse + JSON400 *externalRef0.BadRequestResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON409 *externalRef0.ConflictResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2392,11 +2393,11 @@ func (r PostApiV1OrganizationsOrganizationIDProjectsResponse) StatusCode() int { type DeleteApiV1OrganizationsOrganizationIDProjectsProjectIDResponse struct { Body []byte HTTPResponse *http.Response - JSON400 *BadRequestResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON404 *NotFoundResponse - JSON500 *InternalServerErrorResponse + JSON400 *externalRef0.BadRequestResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON404 *externalRef0.NotFoundResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2419,11 +2420,11 @@ type GetApiV1OrganizationsOrganizationIDProjectsProjectIDResponse struct { Body []byte HTTPResponse *http.Response JSON200 *ProjectResponse - JSON400 *BadRequestResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON404 *NotFoundResponse - JSON500 *InternalServerErrorResponse + JSON400 *externalRef0.BadRequestResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON404 *externalRef0.NotFoundResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2445,11 +2446,11 @@ func (r GetApiV1OrganizationsOrganizationIDProjectsProjectIDResponse) StatusCode type PutApiV1OrganizationsOrganizationIDProjectsProjectIDResponse struct { Body []byte HTTPResponse *http.Response - JSON400 *BadRequestResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON404 *NotFoundResponse - JSON500 *InternalServerErrorResponse + JSON400 *externalRef0.BadRequestResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON404 *externalRef0.NotFoundResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2472,9 +2473,9 @@ type GetApiV1OrganizationsOrganizationIDRolesResponse struct { Body []byte HTTPResponse *http.Response JSON200 *RolesResponse - JSON401 *UnauthorizedResponse - JSON403 *ForbiddenResponse - JSON500 *InternalServerErrorResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON403 *externalRef0.ForbiddenResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2518,7 +2519,7 @@ type GetOauth2V2JwksResponse struct { Body []byte HTTPResponse *http.Response JSON200 *JwksResponse - JSON500 *InternalServerErrorResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2562,9 +2563,9 @@ type PostOauth2V2TokenResponse struct { Body []byte HTTPResponse *http.Response JSON200 *TokenResponse - JSON400 *BadRequestResponse - JSON401 *UnauthorizedResponse - JSON500 *InternalServerErrorResponse + JSON400 *externalRef0.BadRequestResponse + JSON401 *externalRef0.UnauthorizedResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -2586,7 +2587,7 @@ func (r PostOauth2V2TokenResponse) StatusCode() int { type GetOauth2V2UserinfoResponse struct { Body []byte HTTPResponse *http.Response - JSON401 *UnauthorizedResponse + JSON401 *externalRef0.UnauthorizedResponse } // Status returns HTTPResponse.Status @@ -2608,7 +2609,7 @@ func (r GetOauth2V2UserinfoResponse) StatusCode() int { type GetOidcCallbackResponse struct { Body []byte HTTPResponse *http.Response - JSON500 *InternalServerErrorResponse + JSON500 *externalRef0.InternalServerErrorResponse } // Status returns HTTPResponse.Status @@ -3016,21 +3017,21 @@ func ParseGetApiV1Oauth2providersResponse(rsp *http.Response) (*GetApiV1Oauth2pr response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3063,14 +3064,14 @@ func ParseGetApiV1OrganizationsResponse(rsp *http.Response) (*GetApiV1Organizati response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3096,28 +3097,28 @@ func ParsePostApiV1OrganizationsResponse(rsp *http.Response) (*PostApiV1Organiza switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: - var dest ConflictResponse + var dest externalRef0.ConflictResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON409 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3150,21 +3151,21 @@ func ParseGetApiV1OrganizationsOrganizationIDResponse(rsp *http.Response) (*GetA response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3190,21 +3191,21 @@ func ParsePutApiV1OrganizationsOrganizationIDResponse(rsp *http.Response) (*PutA switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3237,14 +3238,14 @@ func ParseGetApiV1OrganizationsOrganizationIDAclResponse(rsp *http.Response) (*G response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3277,21 +3278,21 @@ func ParseGetApiV1OrganizationsOrganizationIDAvailableGroupsResponse(rsp *http.R response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3324,21 +3325,21 @@ func ParseGetApiV1OrganizationsOrganizationIDGroupsResponse(rsp *http.Response) response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3364,28 +3365,28 @@ func ParsePostApiV1OrganizationsOrganizationIDGroupsResponse(rsp *http.Response) switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: - var dest ConflictResponse + var dest externalRef0.ConflictResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON409 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3411,28 +3412,28 @@ func ParseDeleteApiV1OrganizationsOrganizationIDGroupsGroupidResponse(rsp *http. switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest NotFoundResponse + var dest externalRef0.NotFoundResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3465,21 +3466,21 @@ func ParseGetApiV1OrganizationsOrganizationIDGroupsGroupidResponse(rsp *http.Res response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3505,28 +3506,28 @@ func ParsePutApiV1OrganizationsOrganizationIDGroupsGroupidResponse(rsp *http.Res switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest NotFoundResponse + var dest externalRef0.NotFoundResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3559,28 +3560,28 @@ func ParseGetApiV1OrganizationsOrganizationIDOauth2providersResponse(rsp *http.R response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest NotFoundResponse + var dest externalRef0.NotFoundResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3606,28 +3607,28 @@ func ParsePostApiV1OrganizationsOrganizationIDOauth2providersResponse(rsp *http. switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: - var dest ConflictResponse + var dest externalRef0.ConflictResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON409 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3653,28 +3654,28 @@ func ParseDeleteApiV1OrganizationsOrganizationIDOauth2providersProviderIDRespons switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest NotFoundResponse + var dest externalRef0.NotFoundResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3700,28 +3701,28 @@ func ParsePutApiV1OrganizationsOrganizationIDOauth2providersProviderIDResponse(r switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest NotFoundResponse + var dest externalRef0.NotFoundResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3754,21 +3755,21 @@ func ParseGetApiV1OrganizationsOrganizationIDProjectsResponse(rsp *http.Response response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3794,35 +3795,35 @@ func ParsePostApiV1OrganizationsOrganizationIDProjectsResponse(rsp *http.Respons switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest BadRequestResponse + var dest externalRef0.BadRequestResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: - var dest ConflictResponse + var dest externalRef0.ConflictResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON409 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3848,35 +3849,35 @@ func ParseDeleteApiV1OrganizationsOrganizationIDProjectsProjectIDResponse(rsp *h switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest BadRequestResponse + var dest externalRef0.BadRequestResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest NotFoundResponse + var dest externalRef0.NotFoundResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3909,35 +3910,35 @@ func ParseGetApiV1OrganizationsOrganizationIDProjectsProjectIDResponse(rsp *http response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest BadRequestResponse + var dest externalRef0.BadRequestResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest NotFoundResponse + var dest externalRef0.NotFoundResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -3963,35 +3964,35 @@ func ParsePutApiV1OrganizationsOrganizationIDProjectsProjectIDResponse(rsp *http switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest BadRequestResponse + var dest externalRef0.BadRequestResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest NotFoundResponse + var dest externalRef0.NotFoundResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -4024,21 +4025,21 @@ func ParseGetApiV1OrganizationsOrganizationIDRolesResponse(rsp *http.Response) ( response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest ForbiddenResponse + var dest externalRef0.ForbiddenResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -4087,7 +4088,7 @@ func ParseGetOauth2V2JwksResponse(rsp *http.Response) (*GetOauth2V2JwksResponse, response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -4136,21 +4137,21 @@ func ParsePostOauth2V2TokenResponse(rsp *http.Response) (*PostOauth2V2TokenRespo response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest BadRequestResponse + var dest externalRef0.BadRequestResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -4176,7 +4177,7 @@ func ParseGetOauth2V2UserinfoResponse(rsp *http.Response) (*GetOauth2V2UserinfoR switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest UnauthorizedResponse + var dest externalRef0.UnauthorizedResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -4202,7 +4203,7 @@ func ParseGetOidcCallbackResponse(rsp *http.Response) (*GetOidcCallbackResponse, switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest InternalServerErrorResponse + var dest externalRef0.InternalServerErrorResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } diff --git a/pkg/openapi/schema.go b/pkg/openapi/schema.go index 506c769f..9e167a01 100644 --- a/pkg/openapi/schema.go +++ b/pkg/openapi/schema.go @@ -19,199 +19,199 @@ import ( // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "lyKIvR/KAAA=", + "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", + "acf6x4//FwAA//+8enzIDcoAAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/pkg/openapi/server.spec.yaml b/pkg/openapi/server.spec.yaml index 0b0dd382..a5d01a81 100644 --- a/pkg/openapi/server.spec.yaml +++ b/pkg/openapi/server.spec.yaml @@ -55,11 +55,11 @@ paths: '200': $ref: '#/components/responses/tokenResponse' '400': - $ref: '#/components/responses/badRequestResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/badRequestResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /oauth2/v2/login: description: |- After the user hits the authorisation endpoint, a dialog is presented to @@ -85,7 +85,7 @@ paths: '200': $ref: '#/components/responses/userinfoResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' /oidc/callback: description: |- Implements the OIDC response code callback. @@ -99,7 +99,7 @@ paths: '302': description: A redirect back to the browser with an authorisation code. '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /oauth2/v2/jwks: description: JSON web key set endpoint. get: @@ -110,7 +110,7 @@ paths: '200': $ref: '#/components/responses/jwksResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/oauth2providers: description: |- Allows management of system scoped oauth2 providers. The identity service @@ -125,11 +125,11 @@ paths: '200': $ref: '#/components/responses/systemOauth2ProvidersResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations: description: |- Allows management of organizations. Organizations are identified by an @@ -148,9 +148,9 @@ paths: '200': $ref: '#/components/responses/organizationsResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' post: description: |- Allows creation of an organization. @@ -162,13 +162,13 @@ paths: '201': description: The organization was successfully created. '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '409': - $ref: '#/components/responses/conflictResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/conflictResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations/{organizationID}: description: |- Allows management of organizations. Organizations are identified by an @@ -187,11 +187,11 @@ paths: '200': $ref: '#/components/responses/organizationResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' put: description: |- Allows an organization to be updated. @@ -203,11 +203,11 @@ paths: '200': description: Organization successfully updated and returned. '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations/{organizationID}/acl: description: |- Gets an ACL associated with the user, scoped to the organization. @@ -224,9 +224,9 @@ paths: '200': $ref: '#/components/responses/aclResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations/{organizationID}/roles: description: |- Allows management of roles that define access control permissions for @@ -242,11 +242,11 @@ paths: '200': $ref: '#/components/responses/rolesResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations/{organizationID}/oauth2providers: description: |- Allows management of organization scoped oauth2 provider. The identity service @@ -266,13 +266,13 @@ paths: '200': $ref: '#/components/responses/oauth2ProvidersResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '404': - $ref: '#/components/responses/notFoundResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/notFoundResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' post: description: |- Create an organization's identity provider. @@ -284,13 +284,13 @@ paths: '201': description: Organizational identity provider created. '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '409': - $ref: '#/components/responses/conflictResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/conflictResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations/{organizationID}/oauth2providers/{providerID}: description: |- Allows management of organization scoped oauth2 provider. The identity service @@ -313,13 +313,13 @@ paths: '200': description: Organizational identity provider updated. '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '404': - $ref: '#/components/responses/notFoundResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/notFoundResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' delete: description: |- Delete an organization's identity provider. @@ -329,13 +329,13 @@ paths: '200': description: Identity provider successfully deleted. '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '404': - $ref: '#/components/responses/notFoundResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/notFoundResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations/{organizationID}/available-groups: description: |- Polls the identity provider for group information. @@ -350,11 +350,11 @@ paths: '200': $ref: '#/components/responses/availableGroupsResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations/{organizationID}/groups: description: |- Allows management of organization groups. Groups provide an identity @@ -372,11 +372,11 @@ paths: '200': $ref: '#/components/responses/groupsResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' post: description: |- Allows creation of a new group. @@ -388,13 +388,13 @@ paths: '201': description: Group successfully created and returned. '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '409': - $ref: '#/components/responses/conflictResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/conflictResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations/{organizationID}/groups/{groupid}: description: |- Allows management of organization groups. Groups provide an identity @@ -413,11 +413,11 @@ paths: '200': $ref: '#/components/responses/groupResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' put: description: |- Allows a group to be updated. @@ -429,13 +429,13 @@ paths: '200': description: Group successfully updated and returned. '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '404': - $ref: '#/components/responses/notFoundResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/notFoundResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' delete: description: |- Allows the deletion of an existing group. @@ -445,13 +445,13 @@ paths: '200': description: Group successfully deleted. '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '404': - $ref: '#/components/responses/notFoundResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/notFoundResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations/{organizationID}/projects: x-documentation-group: main description: |- @@ -469,11 +469,11 @@ paths: '200': $ref: '#/components/responses/projectsResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' post: description: |- Creates a new project resource for the user's organization. @@ -483,17 +483,17 @@ paths: $ref: '#/components/requestBodies/createProjectRequest' responses: '202': - $ref: '#/components/responses/acceptedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/acceptedResponse' '400': - $ref: '#/components/responses/badRequestResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/badRequestResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '409': - $ref: '#/components/responses/conflictResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/conflictResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' /api/v1/organizations/{organizationID}/projects/{projectID}: parameters: - $ref: '#/components/parameters/organizationIDParameter' @@ -507,15 +507,15 @@ paths: '200': $ref: '#/components/responses/projectResponse' '400': - $ref: '#/components/responses/badRequestResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/badRequestResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '404': - $ref: '#/components/responses/notFoundResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/notFoundResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' put: description: |- Updates a project. @@ -527,15 +527,15 @@ paths: '200': description: Project successfully updated. '400': - $ref: '#/components/responses/badRequestResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/badRequestResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '404': - $ref: '#/components/responses/notFoundResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/notFoundResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' delete: description: |- Deletes the project associated with the authenticated user's scoped @@ -545,17 +545,17 @@ paths: - oauth2Authentication: [] responses: '202': - $ref: '#/components/responses/acceptedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/acceptedResponse' '400': - $ref: '#/components/responses/badRequestResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/badRequestResponse' '401': - $ref: '#/components/responses/unauthorizedResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/unauthorizedResponse' '403': - $ref: '#/components/responses/forbiddenResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/forbiddenResponse' '404': - $ref: '#/components/responses/notFoundResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/notFoundResponse' '500': - $ref: '#/components/responses/internalServerErrorResponse' + $ref: 'https://raw.githubusercontent.com/unikorn-cloud/core/main/pkg/openapi/common.spec.yaml#/components/responses/internalServerErrorResponse' components: parameters: organizationIDParameter: @@ -587,37 +587,6 @@ components: schema: type: string schemas: - oauth2Error: - description: Generic error message. - type: object - required: - - error - - error_description - properties: - error: - description: A terse error string expanding on the HTTP error code. Errors are based on the OAuth2 specification, but are expanded with proprietary status codes for APIs other than those specified by OAuth2. - type: string - enum: - # Defined by OAuth2 - - invalid_request - - unauthorized_client - - access_denied - - unsupported_response_type - - invalid_scope - - server_error - - temporarily_unavailable - - invalid_client - - invalid_grant - - unsupported_grant_type - # Proprietary - - not_found - - conflict - - method_not_allowed - - unsupported_media_type - - forbidden - error_description: - description: Verbose message describing the error. - type: string openidConfiguration: description: OpenID configuration. type: object @@ -1237,79 +1206,11 @@ components: groups: - ddde69ef-bb52-4815-9e9e-aed856c6057f responses: - acceptedResponse: - description: |- - The request has been accepted and will be fulfilled asynchronously. - You may poll the resource and monitor its status for completion. - badRequestResponse: - description: |- - Request body failed schema validation, or the request does not contain - all the required fields. - content: - application/json: - schema: - $ref: '#/components/schemas/oauth2Error' - example: - error: invalid_request - error_description: request body invalid - unauthorizedResponse: - description: |- - Authentication failed or the access token has expired. - content: - application/json: - schema: - $ref: '#/components/schemas/oauth2Error' - example: - error: access_denied - error_description: authentication failed - forbiddenResponse: - description: |- - Request was denied by authorisation, this may be caused by the authorisation - token not having the required scope for an API, or the user doesn't have the - necessary privileges on the provider platform. - content: - application/json: - schema: - $ref: '#/components/schemas/oauth2Error' - example: - error: forbidden - error_description: user credentials do not have the required privileges - notFoundResponse: - description: |- - Unable to find a resource. - content: - application/json: - schema: - $ref: '#/components/schemas/oauth2Error' - example: - error: not_found - error_description: the requested resource does not exist - conflictResponse: - description: |- - Resource conflicts with another, usually this means they have the same name. - content: - application/json: - schema: - $ref: '#/components/schemas/oauth2Error' - example: - error: conflict - error_description: a resource with the same name already exists htmlErrorResponse: description: |- A generic HTML error page. content: text/html: {} - internalServerErrorResponse: - description: |- - An unexpected error occurred, this may be an unexpected transient error and - may succeed on a retry. If this isn't the case, please report it as an issue. - content: - application/json: - schema: - $ref: '#/components/schemas/oauth2Error' - example: - error: server_error - error_description: failed to token claim openidConfigurationResponse: description: |- OpenID configuration used for auto-discovery of endpoints and supported diff --git a/pkg/openapi/types.go b/pkg/openapi/types.go index 3835f1a3..bcd7fed9 100644 --- a/pkg/openapi/types.go +++ b/pkg/openapi/types.go @@ -49,25 +49,6 @@ const ( RefreshToken GrantType = "refresh_token" ) -// Defines values for Oauth2ErrorError. -const ( - AccessDenied Oauth2ErrorError = "access_denied" - Conflict Oauth2ErrorError = "conflict" - Forbidden Oauth2ErrorError = "forbidden" - InvalidClient Oauth2ErrorError = "invalid_client" - InvalidGrant Oauth2ErrorError = "invalid_grant" - InvalidRequest Oauth2ErrorError = "invalid_request" - InvalidScope Oauth2ErrorError = "invalid_scope" - MethodNotAllowed Oauth2ErrorError = "method_not_allowed" - NotFound Oauth2ErrorError = "not_found" - ServerError Oauth2ErrorError = "server_error" - TemporarilyUnavailable Oauth2ErrorError = "temporarily_unavailable" - UnauthorizedClient Oauth2ErrorError = "unauthorized_client" - UnsupportedGrantType Oauth2ErrorError = "unsupported_grant_type" - UnsupportedMediaType Oauth2ErrorError = "unsupported_media_type" - UnsupportedResponseType Oauth2ErrorError = "unsupported_response_type" -) - // Defines values for Oauth2ProviderType. const ( Google Oauth2ProviderType = "google" @@ -214,18 +195,6 @@ type LoginRequestOptions struct { State string `json:"state"` } -// Oauth2Error Generic error message. -type Oauth2Error struct { - // Error A terse error string expanding on the HTTP error code. Errors are based on the OAuth2 specification, but are expanded with proprietary status codes for APIs other than those specified by OAuth2. - Error Oauth2ErrorError `json:"error"` - - // ErrorDescription Verbose message describing the error. - ErrorDescription string `json:"error_description"` -} - -// Oauth2ErrorError A terse error string expanding on the HTTP error code. Errors are based on the OAuth2 specification, but are expanded with proprietary status codes for APIs other than those specified by OAuth2. -type Oauth2ErrorError string - // Oauth2ProviderRead An OAuth2 provider when read. type Oauth2ProviderRead struct { Metadata externalRef0.OrganizationScopedResourceReadMetadata `json:"metadata"` @@ -484,31 +453,16 @@ type AclResponse = Acl // AvailableGroupsResponse A list of IdP groups. type AvailableGroupsResponse = AvailableGroups -// BadRequestResponse Generic error message. -type BadRequestResponse = Oauth2Error - -// ConflictResponse Generic error message. -type ConflictResponse = Oauth2Error - -// ForbiddenResponse Generic error message. -type ForbiddenResponse = Oauth2Error - // GroupResponse A group when read. type GroupResponse = GroupRead // GroupsResponse A list of groups. type GroupsResponse = Groups -// InternalServerErrorResponse Generic error message. -type InternalServerErrorResponse = Oauth2Error - // JwksResponse JSON web key set. This data type is defined by an external 3rd party standards // committee. Consult the relevant documentation for further details. type JwksResponse = JsonWebKeySet -// NotFoundResponse Generic error message. -type NotFoundResponse = Oauth2Error - // Oauth2ProvidersResponse A list of oauth2 providers. type Oauth2ProvidersResponse = Oauth2Providers @@ -536,9 +490,6 @@ type SystemOauth2ProvidersResponse = Oauth2Providers // TokenResponse Oauth2 token result. type TokenResponse = Token -// UnauthorizedResponse Generic error message. -type UnauthorizedResponse = Oauth2Error - // UserinfoResponse defines model for userinfoResponse. type UserinfoResponse interface{}