ory-am/hydra

View on GitHub
internal/httpclient/api_o_auth2.go

Summary

Maintainability
F
1 mo
Test Coverage
/*
Ory Hydra API

Documentation for all of Ory Hydra's APIs.

API version:
Contact: hi@ory.sh
*/

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package openapi

import (
    "bytes"
    "context"
    "io"
    "net/http"
    "net/url"
    "strings"
)

// OAuth2ApiService OAuth2Api service
type OAuth2ApiService service

type ApiAcceptOAuth2ConsentRequestRequest struct {
    ctx                        context.Context
    ApiService                 *OAuth2ApiService
    consentChallenge           *string
    acceptOAuth2ConsentRequest *AcceptOAuth2ConsentRequest
}

// OAuth 2.0 Consent Request Challenge
func (r ApiAcceptOAuth2ConsentRequestRequest) ConsentChallenge(consentChallenge string) ApiAcceptOAuth2ConsentRequestRequest {
    r.consentChallenge = &consentChallenge
    return r
}

func (r ApiAcceptOAuth2ConsentRequestRequest) AcceptOAuth2ConsentRequest(acceptOAuth2ConsentRequest AcceptOAuth2ConsentRequest) ApiAcceptOAuth2ConsentRequestRequest {
    r.acceptOAuth2ConsentRequest = &acceptOAuth2ConsentRequest
    return r
}

func (r ApiAcceptOAuth2ConsentRequestRequest) Execute() (*OAuth2RedirectTo, *http.Response, error) {
    return r.ApiService.AcceptOAuth2ConsentRequestExecute(r)
}

/*
AcceptOAuth2ConsentRequest Accept OAuth 2.0 Consent Request

When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider
to authenticate the subject and then tell Ory now about it. If the subject authenticated, he/she must now be asked if
the OAuth 2.0 Client which initiated the flow should be allowed to access the resources on the subject's behalf.

The consent challenge is appended to the consent provider's URL to which the subject's user-agent (browser) is redirected to. The consent
provider uses that challenge to fetch information on the OAuth2 request and then tells Ory if the subject accepted
or rejected the request.

This endpoint tells Ory that the subject has authorized the OAuth 2.0 client to access resources on his/her behalf.
The consent provider includes additional information, such as session data for access and ID tokens, and if the
consent request should be used as basis for future requests.

The response contains a redirect URL which the consent provider should redirect the user-agent to.

The default consent provider is available via the Ory Managed Account Experience. To customize the consent provider, please
head over to the OAuth 2.0 documentation.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiAcceptOAuth2ConsentRequestRequest
*/
func (a *OAuth2ApiService) AcceptOAuth2ConsentRequest(ctx context.Context) ApiAcceptOAuth2ConsentRequestRequest {
    return ApiAcceptOAuth2ConsentRequestRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return OAuth2RedirectTo
func (a *OAuth2ApiService) AcceptOAuth2ConsentRequestExecute(r ApiAcceptOAuth2ConsentRequestRequest) (*OAuth2RedirectTo, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPut
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2RedirectTo
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.AcceptOAuth2ConsentRequest")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/requests/consent/accept"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.consentChallenge == nil {
        return localVarReturnValue, nil, reportError("consentChallenge is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "consent_challenge", r.consentChallenge, "")
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/json"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    // body params
    localVarPostBody = r.acceptOAuth2ConsentRequest
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiAcceptOAuth2LoginRequestRequest struct {
    ctx                      context.Context
    ApiService               *OAuth2ApiService
    loginChallenge           *string
    acceptOAuth2LoginRequest *AcceptOAuth2LoginRequest
}

// OAuth 2.0 Login Request Challenge
func (r ApiAcceptOAuth2LoginRequestRequest) LoginChallenge(loginChallenge string) ApiAcceptOAuth2LoginRequestRequest {
    r.loginChallenge = &loginChallenge
    return r
}

func (r ApiAcceptOAuth2LoginRequestRequest) AcceptOAuth2LoginRequest(acceptOAuth2LoginRequest AcceptOAuth2LoginRequest) ApiAcceptOAuth2LoginRequestRequest {
    r.acceptOAuth2LoginRequest = &acceptOAuth2LoginRequest
    return r
}

func (r ApiAcceptOAuth2LoginRequestRequest) Execute() (*OAuth2RedirectTo, *http.Response, error) {
    return r.ApiService.AcceptOAuth2LoginRequestExecute(r)
}

/*
AcceptOAuth2LoginRequest Accept OAuth 2.0 Login Request

When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider
to authenticate the subject and then tell the Ory OAuth2 Service about it.

The authentication challenge is appended to the login provider URL to which the subject's user-agent (browser) is redirected to. The login
provider uses that challenge to fetch information on the OAuth2 request and then accept or reject the requested authentication process.

This endpoint tells Ory that the subject has successfully authenticated and includes additional information such as
the subject's ID and if Ory should remember the subject's subject agent for future authentication attempts by setting
a cookie.

The response contains a redirect URL which the login provider should redirect the user-agent to.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiAcceptOAuth2LoginRequestRequest
*/
func (a *OAuth2ApiService) AcceptOAuth2LoginRequest(ctx context.Context) ApiAcceptOAuth2LoginRequestRequest {
    return ApiAcceptOAuth2LoginRequestRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return OAuth2RedirectTo
func (a *OAuth2ApiService) AcceptOAuth2LoginRequestExecute(r ApiAcceptOAuth2LoginRequestRequest) (*OAuth2RedirectTo, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPut
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2RedirectTo
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.AcceptOAuth2LoginRequest")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/requests/login/accept"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.loginChallenge == nil {
        return localVarReturnValue, nil, reportError("loginChallenge is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "login_challenge", r.loginChallenge, "")
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/json"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    // body params
    localVarPostBody = r.acceptOAuth2LoginRequest
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiAcceptOAuth2LogoutRequestRequest struct {
    ctx             context.Context
    ApiService      *OAuth2ApiService
    logoutChallenge *string
}

// OAuth 2.0 Logout Request Challenge
func (r ApiAcceptOAuth2LogoutRequestRequest) LogoutChallenge(logoutChallenge string) ApiAcceptOAuth2LogoutRequestRequest {
    r.logoutChallenge = &logoutChallenge
    return r
}

func (r ApiAcceptOAuth2LogoutRequestRequest) Execute() (*OAuth2RedirectTo, *http.Response, error) {
    return r.ApiService.AcceptOAuth2LogoutRequestExecute(r)
}

/*
AcceptOAuth2LogoutRequest Accept OAuth 2.0 Session Logout Request

When a user or an application requests Ory OAuth 2.0 to remove the session state of a subject, this endpoint is used to confirm that logout request.

The response contains a redirect URL which the consent provider should redirect the user-agent to.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiAcceptOAuth2LogoutRequestRequest
*/
func (a *OAuth2ApiService) AcceptOAuth2LogoutRequest(ctx context.Context) ApiAcceptOAuth2LogoutRequestRequest {
    return ApiAcceptOAuth2LogoutRequestRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return OAuth2RedirectTo
func (a *OAuth2ApiService) AcceptOAuth2LogoutRequestExecute(r ApiAcceptOAuth2LogoutRequestRequest) (*OAuth2RedirectTo, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPut
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2RedirectTo
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.AcceptOAuth2LogoutRequest")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/requests/logout/accept"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.logoutChallenge == nil {
        return localVarReturnValue, nil, reportError("logoutChallenge is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "logout_challenge", r.logoutChallenge, "")
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiCreateOAuth2ClientRequest struct {
    ctx          context.Context
    ApiService   *OAuth2ApiService
    oAuth2Client *OAuth2Client
}

// OAuth 2.0 Client Request Body
func (r ApiCreateOAuth2ClientRequest) OAuth2Client(oAuth2Client OAuth2Client) ApiCreateOAuth2ClientRequest {
    r.oAuth2Client = &oAuth2Client
    return r
}

func (r ApiCreateOAuth2ClientRequest) Execute() (*OAuth2Client, *http.Response, error) {
    return r.ApiService.CreateOAuth2ClientExecute(r)
}

/*
CreateOAuth2Client Create OAuth 2.0 Client

Create a new OAuth 2.0 client. If you pass `client_secret` the secret is used, otherwise a random secret
is generated. The secret is echoed in the response. It is not possible to retrieve it later on.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiCreateOAuth2ClientRequest
*/
func (a *OAuth2ApiService) CreateOAuth2Client(ctx context.Context) ApiCreateOAuth2ClientRequest {
    return ApiCreateOAuth2ClientRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return OAuth2Client
func (a *OAuth2ApiService) CreateOAuth2ClientExecute(r ApiCreateOAuth2ClientRequest) (*OAuth2Client, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPost
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2Client
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.CreateOAuth2Client")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/clients"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.oAuth2Client == nil {
        return localVarReturnValue, nil, reportError("oAuth2Client is required and must be specified")
    }

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/json"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    // body params
    localVarPostBody = r.oAuth2Client
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        if localVarHTTPResponse.StatusCode == 400 {
            var v ErrorOAuth2
            err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
            if err != nil {
                newErr.error = err.Error()
                return localVarReturnValue, localVarHTTPResponse, newErr
            }
            newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
            newErr.model = v
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiDeleteOAuth2ClientRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
    id         string
}

func (r ApiDeleteOAuth2ClientRequest) Execute() (*http.Response, error) {
    return r.ApiService.DeleteOAuth2ClientExecute(r)
}

/*
DeleteOAuth2Client Delete OAuth 2.0 Client

Delete an existing OAuth 2.0 Client by its ID.

OAuth 2.0 clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are
generated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.

Make sure that this endpoint is well protected and only callable by first-party components.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @param id The id of the OAuth 2.0 Client.
    @return ApiDeleteOAuth2ClientRequest
*/
func (a *OAuth2ApiService) DeleteOAuth2Client(ctx context.Context, id string) ApiDeleteOAuth2ClientRequest {
    return ApiDeleteOAuth2ClientRequest{
        ApiService: a,
        ctx:        ctx,
        id:         id,
    }
}

// Execute executes the request
func (a *OAuth2ApiService) DeleteOAuth2ClientExecute(r ApiDeleteOAuth2ClientRequest) (*http.Response, error) {
    var (
        localVarHTTPMethod = http.MethodDelete
        localVarPostBody   interface{}
        formFiles          []formFile
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.DeleteOAuth2Client")
    if err != nil {
        return nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/clients/{id}"
    localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1)

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v GenericError
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarHTTPResponse, newErr
    }

    return localVarHTTPResponse, nil
}

type ApiDeleteOAuth2TokenRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
    clientId   *string
}

// OAuth 2.0 Client ID
func (r ApiDeleteOAuth2TokenRequest) ClientId(clientId string) ApiDeleteOAuth2TokenRequest {
    r.clientId = &clientId
    return r
}

func (r ApiDeleteOAuth2TokenRequest) Execute() (*http.Response, error) {
    return r.ApiService.DeleteOAuth2TokenExecute(r)
}

/*
DeleteOAuth2Token Delete OAuth 2.0 Access Tokens from specific OAuth 2.0 Client

This endpoint deletes OAuth2 access tokens issued to an OAuth 2.0 Client from the database.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiDeleteOAuth2TokenRequest
*/
func (a *OAuth2ApiService) DeleteOAuth2Token(ctx context.Context) ApiDeleteOAuth2TokenRequest {
    return ApiDeleteOAuth2TokenRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
func (a *OAuth2ApiService) DeleteOAuth2TokenExecute(r ApiDeleteOAuth2TokenRequest) (*http.Response, error) {
    var (
        localVarHTTPMethod = http.MethodDelete
        localVarPostBody   interface{}
        formFiles          []formFile
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.DeleteOAuth2Token")
    if err != nil {
        return nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/tokens"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.clientId == nil {
        return nil, reportError("clientId is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "client_id", r.clientId, "")
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarHTTPResponse, newErr
    }

    return localVarHTTPResponse, nil
}

type ApiDeleteTrustedOAuth2JwtGrantIssuerRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
    id         string
}

func (r ApiDeleteTrustedOAuth2JwtGrantIssuerRequest) Execute() (*http.Response, error) {
    return r.ApiService.DeleteTrustedOAuth2JwtGrantIssuerExecute(r)
}

/*
DeleteTrustedOAuth2JwtGrantIssuer Delete Trusted OAuth2 JWT Bearer Grant Type Issuer

Use this endpoint to delete trusted JWT Bearer Grant Type Issuer. The ID is the one returned when you
created the trust relationship.

Once deleted, the associated issuer will no longer be able to perform the JSON Web Token (JWT) Profile
for OAuth 2.0 Client Authentication and Authorization Grant.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @param id The id of the desired grant
    @return ApiDeleteTrustedOAuth2JwtGrantIssuerRequest
*/
func (a *OAuth2ApiService) DeleteTrustedOAuth2JwtGrantIssuer(ctx context.Context, id string) ApiDeleteTrustedOAuth2JwtGrantIssuerRequest {
    return ApiDeleteTrustedOAuth2JwtGrantIssuerRequest{
        ApiService: a,
        ctx:        ctx,
        id:         id,
    }
}

// Execute executes the request
func (a *OAuth2ApiService) DeleteTrustedOAuth2JwtGrantIssuerExecute(r ApiDeleteTrustedOAuth2JwtGrantIssuerRequest) (*http.Response, error) {
    var (
        localVarHTTPMethod = http.MethodDelete
        localVarPostBody   interface{}
        formFiles          []formFile
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.DeleteTrustedOAuth2JwtGrantIssuer")
    if err != nil {
        return nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/trust/grants/jwt-bearer/issuers/{id}"
    localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1)

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v GenericError
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarHTTPResponse, newErr
    }

    return localVarHTTPResponse, nil
}

type ApiGetOAuth2ClientRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
    id         string
}

func (r ApiGetOAuth2ClientRequest) Execute() (*OAuth2Client, *http.Response, error) {
    return r.ApiService.GetOAuth2ClientExecute(r)
}

/*
GetOAuth2Client Get an OAuth 2.0 Client

Get an OAuth 2.0 client by its ID. This endpoint never returns the client secret.

OAuth 2.0 clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are
generated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @param id The id of the OAuth 2.0 Client.
    @return ApiGetOAuth2ClientRequest
*/
func (a *OAuth2ApiService) GetOAuth2Client(ctx context.Context, id string) ApiGetOAuth2ClientRequest {
    return ApiGetOAuth2ClientRequest{
        ApiService: a,
        ctx:        ctx,
        id:         id,
    }
}

// Execute executes the request
//
//    @return OAuth2Client
func (a *OAuth2ApiService) GetOAuth2ClientExecute(r ApiGetOAuth2ClientRequest) (*OAuth2Client, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodGet
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2Client
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.GetOAuth2Client")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/clients/{id}"
    localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1)

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiGetOAuth2ConsentRequestRequest struct {
    ctx              context.Context
    ApiService       *OAuth2ApiService
    consentChallenge *string
}

// OAuth 2.0 Consent Request Challenge
func (r ApiGetOAuth2ConsentRequestRequest) ConsentChallenge(consentChallenge string) ApiGetOAuth2ConsentRequestRequest {
    r.consentChallenge = &consentChallenge
    return r
}

func (r ApiGetOAuth2ConsentRequestRequest) Execute() (*OAuth2ConsentRequest, *http.Response, error) {
    return r.ApiService.GetOAuth2ConsentRequestExecute(r)
}

/*
GetOAuth2ConsentRequest Get OAuth 2.0 Consent Request

When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider
to authenticate the subject and then tell Ory now about it. If the subject authenticated, he/she must now be asked if
the OAuth 2.0 Client which initiated the flow should be allowed to access the resources on the subject's behalf.

The consent challenge is appended to the consent provider's URL to which the subject's user-agent (browser) is redirected to. The consent
provider uses that challenge to fetch information on the OAuth2 request and then tells Ory if the subject accepted
or rejected the request.

The default consent provider is available via the Ory Managed Account Experience. To customize the consent provider, please
head over to the OAuth 2.0 documentation.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiGetOAuth2ConsentRequestRequest
*/
func (a *OAuth2ApiService) GetOAuth2ConsentRequest(ctx context.Context) ApiGetOAuth2ConsentRequestRequest {
    return ApiGetOAuth2ConsentRequestRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return OAuth2ConsentRequest
func (a *OAuth2ApiService) GetOAuth2ConsentRequestExecute(r ApiGetOAuth2ConsentRequestRequest) (*OAuth2ConsentRequest, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodGet
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2ConsentRequest
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.GetOAuth2ConsentRequest")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/requests/consent"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.consentChallenge == nil {
        return localVarReturnValue, nil, reportError("consentChallenge is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "consent_challenge", r.consentChallenge, "")
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        if localVarHTTPResponse.StatusCode == 410 {
            var v OAuth2RedirectTo
            err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
            if err != nil {
                newErr.error = err.Error()
                return localVarReturnValue, localVarHTTPResponse, newErr
            }
            newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
            newErr.model = v
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiGetOAuth2LoginRequestRequest struct {
    ctx            context.Context
    ApiService     *OAuth2ApiService
    loginChallenge *string
}

// OAuth 2.0 Login Request Challenge
func (r ApiGetOAuth2LoginRequestRequest) LoginChallenge(loginChallenge string) ApiGetOAuth2LoginRequestRequest {
    r.loginChallenge = &loginChallenge
    return r
}

func (r ApiGetOAuth2LoginRequestRequest) Execute() (*OAuth2LoginRequest, *http.Response, error) {
    return r.ApiService.GetOAuth2LoginRequestExecute(r)
}

/*
GetOAuth2LoginRequest Get OAuth 2.0 Login Request

When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider
to authenticate the subject and then tell the Ory OAuth2 Service about it.

Per default, the login provider is Ory itself. You may use a different login provider which needs to be a web-app
you write and host, and it must be able to authenticate ("show the subject a login screen")
a subject (in OAuth2 the proper name for subject is "resource owner").

The authentication challenge is appended to the login provider URL to which the subject's user-agent (browser) is redirected to. The login
provider uses that challenge to fetch information on the OAuth2 request and then accept or reject the requested authentication process.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiGetOAuth2LoginRequestRequest
*/
func (a *OAuth2ApiService) GetOAuth2LoginRequest(ctx context.Context) ApiGetOAuth2LoginRequestRequest {
    return ApiGetOAuth2LoginRequestRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return OAuth2LoginRequest
func (a *OAuth2ApiService) GetOAuth2LoginRequestExecute(r ApiGetOAuth2LoginRequestRequest) (*OAuth2LoginRequest, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodGet
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2LoginRequest
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.GetOAuth2LoginRequest")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/requests/login"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.loginChallenge == nil {
        return localVarReturnValue, nil, reportError("loginChallenge is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "login_challenge", r.loginChallenge, "")
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        if localVarHTTPResponse.StatusCode == 410 {
            var v OAuth2RedirectTo
            err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
            if err != nil {
                newErr.error = err.Error()
                return localVarReturnValue, localVarHTTPResponse, newErr
            }
            newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
            newErr.model = v
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiGetOAuth2LogoutRequestRequest struct {
    ctx             context.Context
    ApiService      *OAuth2ApiService
    logoutChallenge *string
}

func (r ApiGetOAuth2LogoutRequestRequest) LogoutChallenge(logoutChallenge string) ApiGetOAuth2LogoutRequestRequest {
    r.logoutChallenge = &logoutChallenge
    return r
}

func (r ApiGetOAuth2LogoutRequestRequest) Execute() (*OAuth2LogoutRequest, *http.Response, error) {
    return r.ApiService.GetOAuth2LogoutRequestExecute(r)
}

/*
GetOAuth2LogoutRequest Get OAuth 2.0 Session Logout Request

Use this endpoint to fetch an Ory OAuth 2.0 logout request.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiGetOAuth2LogoutRequestRequest
*/
func (a *OAuth2ApiService) GetOAuth2LogoutRequest(ctx context.Context) ApiGetOAuth2LogoutRequestRequest {
    return ApiGetOAuth2LogoutRequestRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return OAuth2LogoutRequest
func (a *OAuth2ApiService) GetOAuth2LogoutRequestExecute(r ApiGetOAuth2LogoutRequestRequest) (*OAuth2LogoutRequest, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodGet
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2LogoutRequest
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.GetOAuth2LogoutRequest")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/requests/logout"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.logoutChallenge == nil {
        return localVarReturnValue, nil, reportError("logoutChallenge is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "logout_challenge", r.logoutChallenge, "")
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        if localVarHTTPResponse.StatusCode == 410 {
            var v OAuth2RedirectTo
            err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
            if err != nil {
                newErr.error = err.Error()
                return localVarReturnValue, localVarHTTPResponse, newErr
            }
            newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
            newErr.model = v
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiGetTrustedOAuth2JwtGrantIssuerRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
    id         string
}

func (r ApiGetTrustedOAuth2JwtGrantIssuerRequest) Execute() (*TrustedOAuth2JwtGrantIssuer, *http.Response, error) {
    return r.ApiService.GetTrustedOAuth2JwtGrantIssuerExecute(r)
}

/*
GetTrustedOAuth2JwtGrantIssuer Get Trusted OAuth2 JWT Bearer Grant Type Issuer

Use this endpoint to get a trusted JWT Bearer Grant Type Issuer. The ID is the one returned when you
created the trust relationship.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @param id The id of the desired grant
    @return ApiGetTrustedOAuth2JwtGrantIssuerRequest
*/
func (a *OAuth2ApiService) GetTrustedOAuth2JwtGrantIssuer(ctx context.Context, id string) ApiGetTrustedOAuth2JwtGrantIssuerRequest {
    return ApiGetTrustedOAuth2JwtGrantIssuerRequest{
        ApiService: a,
        ctx:        ctx,
        id:         id,
    }
}

// Execute executes the request
//
//    @return TrustedOAuth2JwtGrantIssuer
func (a *OAuth2ApiService) GetTrustedOAuth2JwtGrantIssuerExecute(r ApiGetTrustedOAuth2JwtGrantIssuerRequest) (*TrustedOAuth2JwtGrantIssuer, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodGet
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *TrustedOAuth2JwtGrantIssuer
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.GetTrustedOAuth2JwtGrantIssuer")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/trust/grants/jwt-bearer/issuers/{id}"
    localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1)

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v GenericError
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiIntrospectOAuth2TokenRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
    token      *string
    scope      *string
}

// The string value of the token. For access tokens, this is the \\\"access_token\\\" value returned from the token endpoint defined in OAuth 2.0. For refresh tokens, this is the \\\"refresh_token\\\" value returned.
func (r ApiIntrospectOAuth2TokenRequest) Token(token string) ApiIntrospectOAuth2TokenRequest {
    r.token = &token
    return r
}

// An optional, space separated list of required scopes. If the access token was not granted one of the scopes, the result of active will be false.
func (r ApiIntrospectOAuth2TokenRequest) Scope(scope string) ApiIntrospectOAuth2TokenRequest {
    r.scope = &scope
    return r
}

func (r ApiIntrospectOAuth2TokenRequest) Execute() (*IntrospectedOAuth2Token, *http.Response, error) {
    return r.ApiService.IntrospectOAuth2TokenExecute(r)
}

/*
IntrospectOAuth2Token Introspect OAuth2 Access and Refresh Tokens

The introspection endpoint allows to check if a token (both refresh and access) is active or not. An active token
is neither expired nor revoked. If a token is active, additional information on the token will be included. You can
set additional data for a token by setting `session.access_token` during the consent flow.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiIntrospectOAuth2TokenRequest
*/
func (a *OAuth2ApiService) IntrospectOAuth2Token(ctx context.Context) ApiIntrospectOAuth2TokenRequest {
    return ApiIntrospectOAuth2TokenRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return IntrospectedOAuth2Token
func (a *OAuth2ApiService) IntrospectOAuth2TokenExecute(r ApiIntrospectOAuth2TokenRequest) (*IntrospectedOAuth2Token, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPost
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *IntrospectedOAuth2Token
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.IntrospectOAuth2Token")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/introspect"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.token == nil {
        return localVarReturnValue, nil, reportError("token is required and must be specified")
    }

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/x-www-form-urlencoded"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    if r.scope != nil {
        parameterAddToHeaderOrQuery(localVarFormParams, "scope", r.scope, "")
    }
    parameterAddToHeaderOrQuery(localVarFormParams, "token", r.token, "")
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiListOAuth2ClientsRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
    pageSize   *int64
    pageToken  *string
    clientName *string
    owner      *string
}

// Items per Page  This is the number of items per page to return. For details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).
func (r ApiListOAuth2ClientsRequest) PageSize(pageSize int64) ApiListOAuth2ClientsRequest {
    r.pageSize = &pageSize
    return r
}

// Next Page Token  The next page token. For details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).
func (r ApiListOAuth2ClientsRequest) PageToken(pageToken string) ApiListOAuth2ClientsRequest {
    r.pageToken = &pageToken
    return r
}

// The name of the clients to filter by.
func (r ApiListOAuth2ClientsRequest) ClientName(clientName string) ApiListOAuth2ClientsRequest {
    r.clientName = &clientName
    return r
}

// The owner of the clients to filter by.
func (r ApiListOAuth2ClientsRequest) Owner(owner string) ApiListOAuth2ClientsRequest {
    r.owner = &owner
    return r
}

func (r ApiListOAuth2ClientsRequest) Execute() ([]OAuth2Client, *http.Response, error) {
    return r.ApiService.ListOAuth2ClientsExecute(r)
}

/*
ListOAuth2Clients List OAuth 2.0 Clients

This endpoint lists all clients in the database, and never returns client secrets.
As a default it lists the first 100 clients.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiListOAuth2ClientsRequest
*/
func (a *OAuth2ApiService) ListOAuth2Clients(ctx context.Context) ApiListOAuth2ClientsRequest {
    return ApiListOAuth2ClientsRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return []OAuth2Client
func (a *OAuth2ApiService) ListOAuth2ClientsExecute(r ApiListOAuth2ClientsRequest) ([]OAuth2Client, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodGet
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue []OAuth2Client
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.ListOAuth2Clients")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/clients"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}

    if r.pageSize != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "page_size", r.pageSize, "")
    } else {
        var defaultValue int64 = 250
        r.pageSize = &defaultValue
    }
    if r.pageToken != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "")
    } else {
        var defaultValue string = "1"
        r.pageToken = &defaultValue
    }
    if r.clientName != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "client_name", r.clientName, "")
    }
    if r.owner != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "owner", r.owner, "")
    }
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiListOAuth2ConsentSessionsRequest struct {
    ctx            context.Context
    ApiService     *OAuth2ApiService
    subject        *string
    pageSize       *int64
    pageToken      *string
    loginSessionId *string
}

// The subject to list the consent sessions for.
func (r ApiListOAuth2ConsentSessionsRequest) Subject(subject string) ApiListOAuth2ConsentSessionsRequest {
    r.subject = &subject
    return r
}

// Items per Page  This is the number of items per page to return. For details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).
func (r ApiListOAuth2ConsentSessionsRequest) PageSize(pageSize int64) ApiListOAuth2ConsentSessionsRequest {
    r.pageSize = &pageSize
    return r
}

// Next Page Token  The next page token. For details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).
func (r ApiListOAuth2ConsentSessionsRequest) PageToken(pageToken string) ApiListOAuth2ConsentSessionsRequest {
    r.pageToken = &pageToken
    return r
}

// The login session id to list the consent sessions for.
func (r ApiListOAuth2ConsentSessionsRequest) LoginSessionId(loginSessionId string) ApiListOAuth2ConsentSessionsRequest {
    r.loginSessionId = &loginSessionId
    return r
}

func (r ApiListOAuth2ConsentSessionsRequest) Execute() ([]OAuth2ConsentSession, *http.Response, error) {
    return r.ApiService.ListOAuth2ConsentSessionsExecute(r)
}

/*
ListOAuth2ConsentSessions List OAuth 2.0 Consent Sessions of a Subject

This endpoint lists all subject's granted consent sessions, including client and granted scope.
If the subject is unknown or has not granted any consent sessions yet, the endpoint returns an
empty JSON array with status code 200 OK.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiListOAuth2ConsentSessionsRequest
*/
func (a *OAuth2ApiService) ListOAuth2ConsentSessions(ctx context.Context) ApiListOAuth2ConsentSessionsRequest {
    return ApiListOAuth2ConsentSessionsRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return []OAuth2ConsentSession
func (a *OAuth2ApiService) ListOAuth2ConsentSessionsExecute(r ApiListOAuth2ConsentSessionsRequest) ([]OAuth2ConsentSession, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodGet
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue []OAuth2ConsentSession
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.ListOAuth2ConsentSessions")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/sessions/consent"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.subject == nil {
        return localVarReturnValue, nil, reportError("subject is required and must be specified")
    }

    if r.pageSize != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "page_size", r.pageSize, "")
    } else {
        var defaultValue int64 = 250
        r.pageSize = &defaultValue
    }
    if r.pageToken != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "page_token", r.pageToken, "")
    } else {
        var defaultValue string = "1"
        r.pageToken = &defaultValue
    }
    parameterAddToHeaderOrQuery(localVarQueryParams, "subject", r.subject, "")
    if r.loginSessionId != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "login_session_id", r.loginSessionId, "")
    }
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiListTrustedOAuth2JwtGrantIssuersRequest struct {
    ctx          context.Context
    ApiService   *OAuth2ApiService
    maxItems     *int64
    defaultItems *int64
    issuer       *string
}

func (r ApiListTrustedOAuth2JwtGrantIssuersRequest) MaxItems(maxItems int64) ApiListTrustedOAuth2JwtGrantIssuersRequest {
    r.maxItems = &maxItems
    return r
}

func (r ApiListTrustedOAuth2JwtGrantIssuersRequest) DefaultItems(defaultItems int64) ApiListTrustedOAuth2JwtGrantIssuersRequest {
    r.defaultItems = &defaultItems
    return r
}

// If optional \"issuer\" is supplied, only jwt-bearer grants with this issuer will be returned.
func (r ApiListTrustedOAuth2JwtGrantIssuersRequest) Issuer(issuer string) ApiListTrustedOAuth2JwtGrantIssuersRequest {
    r.issuer = &issuer
    return r
}

func (r ApiListTrustedOAuth2JwtGrantIssuersRequest) Execute() ([]TrustedOAuth2JwtGrantIssuer, *http.Response, error) {
    return r.ApiService.ListTrustedOAuth2JwtGrantIssuersExecute(r)
}

/*
ListTrustedOAuth2JwtGrantIssuers List Trusted OAuth2 JWT Bearer Grant Type Issuers

Use this endpoint to list all trusted JWT Bearer Grant Type Issuers.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiListTrustedOAuth2JwtGrantIssuersRequest
*/
func (a *OAuth2ApiService) ListTrustedOAuth2JwtGrantIssuers(ctx context.Context) ApiListTrustedOAuth2JwtGrantIssuersRequest {
    return ApiListTrustedOAuth2JwtGrantIssuersRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return []TrustedOAuth2JwtGrantIssuer
func (a *OAuth2ApiService) ListTrustedOAuth2JwtGrantIssuersExecute(r ApiListTrustedOAuth2JwtGrantIssuersRequest) ([]TrustedOAuth2JwtGrantIssuer, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodGet
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue []TrustedOAuth2JwtGrantIssuer
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.ListTrustedOAuth2JwtGrantIssuers")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/trust/grants/jwt-bearer/issuers"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}

    if r.maxItems != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "MaxItems", r.maxItems, "")
    }
    if r.defaultItems != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "DefaultItems", r.defaultItems, "")
    }
    if r.issuer != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "issuer", r.issuer, "")
    }
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v GenericError
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiOAuth2AuthorizeRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
}

func (r ApiOAuth2AuthorizeRequest) Execute() (*ErrorOAuth2, *http.Response, error) {
    return r.ApiService.OAuth2AuthorizeExecute(r)
}

/*
OAuth2Authorize OAuth 2.0 Authorize Endpoint

Use open source libraries to perform OAuth 2.0 and OpenID Connect
available for any programming language. You can find a list of libraries at https://oauth.net/code/

The Ory SDK is not yet able to this endpoint properly.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiOAuth2AuthorizeRequest
*/
func (a *OAuth2ApiService) OAuth2Authorize(ctx context.Context) ApiOAuth2AuthorizeRequest {
    return ApiOAuth2AuthorizeRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return ErrorOAuth2
func (a *OAuth2ApiService) OAuth2AuthorizeExecute(r ApiOAuth2AuthorizeRequest) (*ErrorOAuth2, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodGet
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *ErrorOAuth2
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.OAuth2Authorize")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/oauth2/auth"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiOauth2TokenExchangeRequest struct {
    ctx          context.Context
    ApiService   *OAuth2ApiService
    grantType    *string
    clientId     *string
    code         *string
    redirectUri  *string
    refreshToken *string
}

func (r ApiOauth2TokenExchangeRequest) GrantType(grantType string) ApiOauth2TokenExchangeRequest {
    r.grantType = &grantType
    return r
}

func (r ApiOauth2TokenExchangeRequest) ClientId(clientId string) ApiOauth2TokenExchangeRequest {
    r.clientId = &clientId
    return r
}

func (r ApiOauth2TokenExchangeRequest) Code(code string) ApiOauth2TokenExchangeRequest {
    r.code = &code
    return r
}

func (r ApiOauth2TokenExchangeRequest) RedirectUri(redirectUri string) ApiOauth2TokenExchangeRequest {
    r.redirectUri = &redirectUri
    return r
}

func (r ApiOauth2TokenExchangeRequest) RefreshToken(refreshToken string) ApiOauth2TokenExchangeRequest {
    r.refreshToken = &refreshToken
    return r
}

func (r ApiOauth2TokenExchangeRequest) Execute() (*OAuth2TokenExchange, *http.Response, error) {
    return r.ApiService.Oauth2TokenExchangeExecute(r)
}

/*
Oauth2TokenExchange The OAuth 2.0 Token Endpoint

Use open source libraries to perform OAuth 2.0 and OpenID Connect
available for any programming language. You can find a list of libraries here https://oauth.net/code/

The Ory SDK is not yet able to this endpoint properly.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiOauth2TokenExchangeRequest
*/
func (a *OAuth2ApiService) Oauth2TokenExchange(ctx context.Context) ApiOauth2TokenExchangeRequest {
    return ApiOauth2TokenExchangeRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return OAuth2TokenExchange
func (a *OAuth2ApiService) Oauth2TokenExchangeExecute(r ApiOauth2TokenExchangeRequest) (*OAuth2TokenExchange, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPost
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2TokenExchange
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.Oauth2TokenExchange")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/oauth2/token"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.grantType == nil {
        return localVarReturnValue, nil, reportError("grantType is required and must be specified")
    }

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/x-www-form-urlencoded"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    if r.clientId != nil {
        parameterAddToHeaderOrQuery(localVarFormParams, "client_id", r.clientId, "")
    }
    if r.code != nil {
        parameterAddToHeaderOrQuery(localVarFormParams, "code", r.code, "")
    }
    parameterAddToHeaderOrQuery(localVarFormParams, "grant_type", r.grantType, "")
    if r.redirectUri != nil {
        parameterAddToHeaderOrQuery(localVarFormParams, "redirect_uri", r.redirectUri, "")
    }
    if r.refreshToken != nil {
        parameterAddToHeaderOrQuery(localVarFormParams, "refresh_token", r.refreshToken, "")
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiPatchOAuth2ClientRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
    id         string
    jsonPatch  *[]JsonPatch
}

// OAuth 2.0 Client JSON Patch Body
func (r ApiPatchOAuth2ClientRequest) JsonPatch(jsonPatch []JsonPatch) ApiPatchOAuth2ClientRequest {
    r.jsonPatch = &jsonPatch
    return r
}

func (r ApiPatchOAuth2ClientRequest) Execute() (*OAuth2Client, *http.Response, error) {
    return r.ApiService.PatchOAuth2ClientExecute(r)
}

/*
PatchOAuth2Client Patch OAuth 2.0 Client

Patch an existing OAuth 2.0 Client using JSON Patch. If you pass `client_secret`
the secret will be updated and returned via the API. This is the
only time you will be able to retrieve the client secret, so write it down and keep it safe.

OAuth 2.0 clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are
generated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @param id The id of the OAuth 2.0 Client.
    @return ApiPatchOAuth2ClientRequest
*/
func (a *OAuth2ApiService) PatchOAuth2Client(ctx context.Context, id string) ApiPatchOAuth2ClientRequest {
    return ApiPatchOAuth2ClientRequest{
        ApiService: a,
        ctx:        ctx,
        id:         id,
    }
}

// Execute executes the request
//
//    @return OAuth2Client
func (a *OAuth2ApiService) PatchOAuth2ClientExecute(r ApiPatchOAuth2ClientRequest) (*OAuth2Client, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPatch
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2Client
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.PatchOAuth2Client")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/clients/{id}"
    localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1)

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.jsonPatch == nil {
        return localVarReturnValue, nil, reportError("jsonPatch is required and must be specified")
    }

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/json"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    // body params
    localVarPostBody = r.jsonPatch
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        if localVarHTTPResponse.StatusCode == 404 {
            var v ErrorOAuth2
            err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
            if err != nil {
                newErr.error = err.Error()
                return localVarReturnValue, localVarHTTPResponse, newErr
            }
            newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
            newErr.model = v
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiRejectOAuth2ConsentRequestRequest struct {
    ctx                 context.Context
    ApiService          *OAuth2ApiService
    consentChallenge    *string
    rejectOAuth2Request *RejectOAuth2Request
}

// OAuth 2.0 Consent Request Challenge
func (r ApiRejectOAuth2ConsentRequestRequest) ConsentChallenge(consentChallenge string) ApiRejectOAuth2ConsentRequestRequest {
    r.consentChallenge = &consentChallenge
    return r
}

func (r ApiRejectOAuth2ConsentRequestRequest) RejectOAuth2Request(rejectOAuth2Request RejectOAuth2Request) ApiRejectOAuth2ConsentRequestRequest {
    r.rejectOAuth2Request = &rejectOAuth2Request
    return r
}

func (r ApiRejectOAuth2ConsentRequestRequest) Execute() (*OAuth2RedirectTo, *http.Response, error) {
    return r.ApiService.RejectOAuth2ConsentRequestExecute(r)
}

/*
RejectOAuth2ConsentRequest Reject OAuth 2.0 Consent Request

When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider
to authenticate the subject and then tell Ory now about it. If the subject authenticated, he/she must now be asked if
the OAuth 2.0 Client which initiated the flow should be allowed to access the resources on the subject's behalf.

The consent challenge is appended to the consent provider's URL to which the subject's user-agent (browser) is redirected to. The consent
provider uses that challenge to fetch information on the OAuth2 request and then tells Ory if the subject accepted
or rejected the request.

This endpoint tells Ory that the subject has not authorized the OAuth 2.0 client to access resources on his/her behalf.
The consent provider must include a reason why the consent was not granted.

The response contains a redirect URL which the consent provider should redirect the user-agent to.

The default consent provider is available via the Ory Managed Account Experience. To customize the consent provider, please
head over to the OAuth 2.0 documentation.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiRejectOAuth2ConsentRequestRequest
*/
func (a *OAuth2ApiService) RejectOAuth2ConsentRequest(ctx context.Context) ApiRejectOAuth2ConsentRequestRequest {
    return ApiRejectOAuth2ConsentRequestRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return OAuth2RedirectTo
func (a *OAuth2ApiService) RejectOAuth2ConsentRequestExecute(r ApiRejectOAuth2ConsentRequestRequest) (*OAuth2RedirectTo, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPut
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2RedirectTo
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.RejectOAuth2ConsentRequest")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/requests/consent/reject"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.consentChallenge == nil {
        return localVarReturnValue, nil, reportError("consentChallenge is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "consent_challenge", r.consentChallenge, "")
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/json"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    // body params
    localVarPostBody = r.rejectOAuth2Request
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiRejectOAuth2LoginRequestRequest struct {
    ctx                 context.Context
    ApiService          *OAuth2ApiService
    loginChallenge      *string
    rejectOAuth2Request *RejectOAuth2Request
}

// OAuth 2.0 Login Request Challenge
func (r ApiRejectOAuth2LoginRequestRequest) LoginChallenge(loginChallenge string) ApiRejectOAuth2LoginRequestRequest {
    r.loginChallenge = &loginChallenge
    return r
}

func (r ApiRejectOAuth2LoginRequestRequest) RejectOAuth2Request(rejectOAuth2Request RejectOAuth2Request) ApiRejectOAuth2LoginRequestRequest {
    r.rejectOAuth2Request = &rejectOAuth2Request
    return r
}

func (r ApiRejectOAuth2LoginRequestRequest) Execute() (*OAuth2RedirectTo, *http.Response, error) {
    return r.ApiService.RejectOAuth2LoginRequestExecute(r)
}

/*
RejectOAuth2LoginRequest Reject OAuth 2.0 Login Request

When an authorization code, hybrid, or implicit OAuth 2.0 Flow is initiated, Ory asks the login provider
to authenticate the subject and then tell the Ory OAuth2 Service about it.

The authentication challenge is appended to the login provider URL to which the subject's user-agent (browser) is redirected to. The login
provider uses that challenge to fetch information on the OAuth2 request and then accept or reject the requested authentication process.

This endpoint tells Ory that the subject has not authenticated and includes a reason why the authentication
was denied.

The response contains a redirect URL which the login provider should redirect the user-agent to.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiRejectOAuth2LoginRequestRequest
*/
func (a *OAuth2ApiService) RejectOAuth2LoginRequest(ctx context.Context) ApiRejectOAuth2LoginRequestRequest {
    return ApiRejectOAuth2LoginRequestRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return OAuth2RedirectTo
func (a *OAuth2ApiService) RejectOAuth2LoginRequestExecute(r ApiRejectOAuth2LoginRequestRequest) (*OAuth2RedirectTo, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPut
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2RedirectTo
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.RejectOAuth2LoginRequest")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/requests/login/reject"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.loginChallenge == nil {
        return localVarReturnValue, nil, reportError("loginChallenge is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "login_challenge", r.loginChallenge, "")
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/json"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    // body params
    localVarPostBody = r.rejectOAuth2Request
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiRejectOAuth2LogoutRequestRequest struct {
    ctx             context.Context
    ApiService      *OAuth2ApiService
    logoutChallenge *string
}

func (r ApiRejectOAuth2LogoutRequestRequest) LogoutChallenge(logoutChallenge string) ApiRejectOAuth2LogoutRequestRequest {
    r.logoutChallenge = &logoutChallenge
    return r
}

func (r ApiRejectOAuth2LogoutRequestRequest) Execute() (*http.Response, error) {
    return r.ApiService.RejectOAuth2LogoutRequestExecute(r)
}

/*
RejectOAuth2LogoutRequest Reject OAuth 2.0 Session Logout Request

When a user or an application requests Ory OAuth 2.0 to remove the session state of a subject, this endpoint is used to deny that logout request.
No HTTP request body is required.

The response is empty as the logout provider has to chose what action to perform next.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiRejectOAuth2LogoutRequestRequest
*/
func (a *OAuth2ApiService) RejectOAuth2LogoutRequest(ctx context.Context) ApiRejectOAuth2LogoutRequestRequest {
    return ApiRejectOAuth2LogoutRequestRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
func (a *OAuth2ApiService) RejectOAuth2LogoutRequestExecute(r ApiRejectOAuth2LogoutRequestRequest) (*http.Response, error) {
    var (
        localVarHTTPMethod = http.MethodPut
        localVarPostBody   interface{}
        formFiles          []formFile
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.RejectOAuth2LogoutRequest")
    if err != nil {
        return nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/requests/logout/reject"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.logoutChallenge == nil {
        return nil, reportError("logoutChallenge is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "logout_challenge", r.logoutChallenge, "")
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarHTTPResponse, newErr
    }

    return localVarHTTPResponse, nil
}

type ApiRevokeOAuth2ConsentSessionsRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
    subject    *string
    client     *string
    all        *bool
}

// OAuth 2.0 Consent Subject  The subject whose consent sessions should be deleted.
func (r ApiRevokeOAuth2ConsentSessionsRequest) Subject(subject string) ApiRevokeOAuth2ConsentSessionsRequest {
    r.subject = &subject
    return r
}

// OAuth 2.0 Client ID  If set, deletes only those consent sessions that have been granted to the specified OAuth 2.0 Client ID.
func (r ApiRevokeOAuth2ConsentSessionsRequest) Client(client string) ApiRevokeOAuth2ConsentSessionsRequest {
    r.client = &client
    return r
}

// Revoke All Consent Sessions  If set to `true` deletes all consent sessions by the Subject that have been granted.
func (r ApiRevokeOAuth2ConsentSessionsRequest) All(all bool) ApiRevokeOAuth2ConsentSessionsRequest {
    r.all = &all
    return r
}

func (r ApiRevokeOAuth2ConsentSessionsRequest) Execute() (*http.Response, error) {
    return r.ApiService.RevokeOAuth2ConsentSessionsExecute(r)
}

/*
RevokeOAuth2ConsentSessions Revoke OAuth 2.0 Consent Sessions of a Subject

This endpoint revokes a subject's granted consent sessions and invalidates all
associated OAuth 2.0 Access Tokens. You may also only revoke sessions for a specific OAuth 2.0 Client ID.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiRevokeOAuth2ConsentSessionsRequest
*/
func (a *OAuth2ApiService) RevokeOAuth2ConsentSessions(ctx context.Context) ApiRevokeOAuth2ConsentSessionsRequest {
    return ApiRevokeOAuth2ConsentSessionsRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
func (a *OAuth2ApiService) RevokeOAuth2ConsentSessionsExecute(r ApiRevokeOAuth2ConsentSessionsRequest) (*http.Response, error) {
    var (
        localVarHTTPMethod = http.MethodDelete
        localVarPostBody   interface{}
        formFiles          []formFile
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.RevokeOAuth2ConsentSessions")
    if err != nil {
        return nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/sessions/consent"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.subject == nil {
        return nil, reportError("subject is required and must be specified")
    }

    parameterAddToHeaderOrQuery(localVarQueryParams, "subject", r.subject, "")
    if r.client != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "client", r.client, "")
    }
    if r.all != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "all", r.all, "")
    }
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarHTTPResponse, newErr
    }

    return localVarHTTPResponse, nil
}

type ApiRevokeOAuth2LoginSessionsRequest struct {
    ctx        context.Context
    ApiService *OAuth2ApiService
    subject    *string
    sid        *string
}

// OAuth 2.0 Subject  The subject to revoke authentication sessions for.
func (r ApiRevokeOAuth2LoginSessionsRequest) Subject(subject string) ApiRevokeOAuth2LoginSessionsRequest {
    r.subject = &subject
    return r
}

// OAuth 2.0 Subject  The subject to revoke authentication sessions for.
func (r ApiRevokeOAuth2LoginSessionsRequest) Sid(sid string) ApiRevokeOAuth2LoginSessionsRequest {
    r.sid = &sid
    return r
}

func (r ApiRevokeOAuth2LoginSessionsRequest) Execute() (*http.Response, error) {
    return r.ApiService.RevokeOAuth2LoginSessionsExecute(r)
}

/*
RevokeOAuth2LoginSessions Revokes OAuth 2.0 Login Sessions by either a Subject or a SessionID

This endpoint invalidates authentication sessions. After revoking the authentication session(s), the subject
has to re-authenticate at the Ory OAuth2 Provider. This endpoint does not invalidate any tokens.

If you send the subject in a query param, all authentication sessions that belong to that subject are revoked.
No OpenID Connect Front- or Back-channel logout is performed in this case.

Alternatively, you can send a SessionID via `sid` query param, in which case, only the session that is connected
to that SessionID is revoked. OpenID Connect Back-channel logout is performed in this case.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiRevokeOAuth2LoginSessionsRequest
*/
func (a *OAuth2ApiService) RevokeOAuth2LoginSessions(ctx context.Context) ApiRevokeOAuth2LoginSessionsRequest {
    return ApiRevokeOAuth2LoginSessionsRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
func (a *OAuth2ApiService) RevokeOAuth2LoginSessionsExecute(r ApiRevokeOAuth2LoginSessionsRequest) (*http.Response, error) {
    var (
        localVarHTTPMethod = http.MethodDelete
        localVarPostBody   interface{}
        formFiles          []formFile
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.RevokeOAuth2LoginSessions")
    if err != nil {
        return nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/oauth2/auth/sessions/login"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}

    if r.subject != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "subject", r.subject, "")
    }
    if r.sid != nil {
        parameterAddToHeaderOrQuery(localVarQueryParams, "sid", r.sid, "")
    }
    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarHTTPResponse, newErr
    }

    return localVarHTTPResponse, nil
}

type ApiRevokeOAuth2TokenRequest struct {
    ctx          context.Context
    ApiService   *OAuth2ApiService
    token        *string
    clientId     *string
    clientSecret *string
}

func (r ApiRevokeOAuth2TokenRequest) Token(token string) ApiRevokeOAuth2TokenRequest {
    r.token = &token
    return r
}

func (r ApiRevokeOAuth2TokenRequest) ClientId(clientId string) ApiRevokeOAuth2TokenRequest {
    r.clientId = &clientId
    return r
}

func (r ApiRevokeOAuth2TokenRequest) ClientSecret(clientSecret string) ApiRevokeOAuth2TokenRequest {
    r.clientSecret = &clientSecret
    return r
}

func (r ApiRevokeOAuth2TokenRequest) Execute() (*http.Response, error) {
    return r.ApiService.RevokeOAuth2TokenExecute(r)
}

/*
RevokeOAuth2Token Revoke OAuth 2.0 Access or Refresh Token

Revoking a token (both access and refresh) means that the tokens will be invalid. A revoked access token can no
longer be used to make access requests, and a revoked refresh token can no longer be used to refresh an access token.
Revoking a refresh token also invalidates the access token that was created with it. A token may only be revoked by
the client the token was generated for.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiRevokeOAuth2TokenRequest
*/
func (a *OAuth2ApiService) RevokeOAuth2Token(ctx context.Context) ApiRevokeOAuth2TokenRequest {
    return ApiRevokeOAuth2TokenRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
func (a *OAuth2ApiService) RevokeOAuth2TokenExecute(r ApiRevokeOAuth2TokenRequest) (*http.Response, error) {
    var (
        localVarHTTPMethod = http.MethodPost
        localVarPostBody   interface{}
        formFiles          []formFile
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.RevokeOAuth2Token")
    if err != nil {
        return nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/oauth2/revoke"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.token == nil {
        return nil, reportError("token is required and must be specified")
    }

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/x-www-form-urlencoded"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    if r.clientId != nil {
        parameterAddToHeaderOrQuery(localVarFormParams, "client_id", r.clientId, "")
    }
    if r.clientSecret != nil {
        parameterAddToHeaderOrQuery(localVarFormParams, "client_secret", r.clientSecret, "")
    }
    parameterAddToHeaderOrQuery(localVarFormParams, "token", r.token, "")
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarHTTPResponse, newErr
    }

    return localVarHTTPResponse, nil
}

type ApiSetOAuth2ClientRequest struct {
    ctx          context.Context
    ApiService   *OAuth2ApiService
    id           string
    oAuth2Client *OAuth2Client
}

// OAuth 2.0 Client Request Body
func (r ApiSetOAuth2ClientRequest) OAuth2Client(oAuth2Client OAuth2Client) ApiSetOAuth2ClientRequest {
    r.oAuth2Client = &oAuth2Client
    return r
}

func (r ApiSetOAuth2ClientRequest) Execute() (*OAuth2Client, *http.Response, error) {
    return r.ApiService.SetOAuth2ClientExecute(r)
}

/*
SetOAuth2Client Set OAuth 2.0 Client

Replaces an existing OAuth 2.0 Client with the payload you send. If you pass `client_secret` the secret is used,
otherwise the existing secret is used.

If set, the secret is echoed in the response. It is not possible to retrieve it later on.

OAuth 2.0 Clients are used to perform OAuth 2.0 and OpenID Connect flows. Usually, OAuth 2.0 clients are
generated for applications which want to consume your OAuth 2.0 or OpenID Connect capabilities.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @param id OAuth 2.0 Client ID
    @return ApiSetOAuth2ClientRequest
*/
func (a *OAuth2ApiService) SetOAuth2Client(ctx context.Context, id string) ApiSetOAuth2ClientRequest {
    return ApiSetOAuth2ClientRequest{
        ApiService: a,
        ctx:        ctx,
        id:         id,
    }
}

// Execute executes the request
//
//    @return OAuth2Client
func (a *OAuth2ApiService) SetOAuth2ClientExecute(r ApiSetOAuth2ClientRequest) (*OAuth2Client, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPut
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2Client
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.SetOAuth2Client")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/clients/{id}"
    localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1)

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}
    if r.oAuth2Client == nil {
        return localVarReturnValue, nil, reportError("oAuth2Client is required and must be specified")
    }

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/json"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    // body params
    localVarPostBody = r.oAuth2Client
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        if localVarHTTPResponse.StatusCode == 400 {
            var v ErrorOAuth2
            err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
            if err != nil {
                newErr.error = err.Error()
                return localVarReturnValue, localVarHTTPResponse, newErr
            }
            newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
            newErr.model = v
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        if localVarHTTPResponse.StatusCode == 404 {
            var v ErrorOAuth2
            err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
            if err != nil {
                newErr.error = err.Error()
                return localVarReturnValue, localVarHTTPResponse, newErr
            }
            newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
            newErr.model = v
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        var v ErrorOAuth2
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiSetOAuth2ClientLifespansRequest struct {
    ctx                        context.Context
    ApiService                 *OAuth2ApiService
    id                         string
    oAuth2ClientTokenLifespans *OAuth2ClientTokenLifespans
}

func (r ApiSetOAuth2ClientLifespansRequest) OAuth2ClientTokenLifespans(oAuth2ClientTokenLifespans OAuth2ClientTokenLifespans) ApiSetOAuth2ClientLifespansRequest {
    r.oAuth2ClientTokenLifespans = &oAuth2ClientTokenLifespans
    return r
}

func (r ApiSetOAuth2ClientLifespansRequest) Execute() (*OAuth2Client, *http.Response, error) {
    return r.ApiService.SetOAuth2ClientLifespansExecute(r)
}

/*
SetOAuth2ClientLifespans Set OAuth2 Client Token Lifespans

Set lifespans of different token types issued for this OAuth 2.0 client. Does not modify other fields.

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @param id OAuth 2.0 Client ID
    @return ApiSetOAuth2ClientLifespansRequest
*/
func (a *OAuth2ApiService) SetOAuth2ClientLifespans(ctx context.Context, id string) ApiSetOAuth2ClientLifespansRequest {
    return ApiSetOAuth2ClientLifespansRequest{
        ApiService: a,
        ctx:        ctx,
        id:         id,
    }
}

// Execute executes the request
//
//    @return OAuth2Client
func (a *OAuth2ApiService) SetOAuth2ClientLifespansExecute(r ApiSetOAuth2ClientLifespansRequest) (*OAuth2Client, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPut
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *OAuth2Client
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.SetOAuth2ClientLifespans")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/clients/{id}/lifespans"
    localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1)

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/json"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    // body params
    localVarPostBody = r.oAuth2ClientTokenLifespans
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v GenericError
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiTrustOAuth2JwtGrantIssuerRequest struct {
    ctx                       context.Context
    ApiService                *OAuth2ApiService
    trustOAuth2JwtGrantIssuer *TrustOAuth2JwtGrantIssuer
}

func (r ApiTrustOAuth2JwtGrantIssuerRequest) TrustOAuth2JwtGrantIssuer(trustOAuth2JwtGrantIssuer TrustOAuth2JwtGrantIssuer) ApiTrustOAuth2JwtGrantIssuerRequest {
    r.trustOAuth2JwtGrantIssuer = &trustOAuth2JwtGrantIssuer
    return r
}

func (r ApiTrustOAuth2JwtGrantIssuerRequest) Execute() (*TrustedOAuth2JwtGrantIssuer, *http.Response, error) {
    return r.ApiService.TrustOAuth2JwtGrantIssuerExecute(r)
}

/*
TrustOAuth2JwtGrantIssuer Trust OAuth2 JWT Bearer Grant Type Issuer

Use this endpoint to establish a trust relationship for a JWT issuer
to perform JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication
and Authorization Grants [RFC7523](https://datatracker.ietf.org/doc/html/rfc7523).

    @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    @return ApiTrustOAuth2JwtGrantIssuerRequest
*/
func (a *OAuth2ApiService) TrustOAuth2JwtGrantIssuer(ctx context.Context) ApiTrustOAuth2JwtGrantIssuerRequest {
    return ApiTrustOAuth2JwtGrantIssuerRequest{
        ApiService: a,
        ctx:        ctx,
    }
}

// Execute executes the request
//
//    @return TrustedOAuth2JwtGrantIssuer
func (a *OAuth2ApiService) TrustOAuth2JwtGrantIssuerExecute(r ApiTrustOAuth2JwtGrantIssuerRequest) (*TrustedOAuth2JwtGrantIssuer, *http.Response, error) {
    var (
        localVarHTTPMethod  = http.MethodPost
        localVarPostBody    interface{}
        formFiles           []formFile
        localVarReturnValue *TrustedOAuth2JwtGrantIssuer
    )

    localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OAuth2ApiService.TrustOAuth2JwtGrantIssuer")
    if err != nil {
        return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
    }

    localVarPath := localBasePath + "/admin/trust/grants/jwt-bearer/issuers"

    localVarHeaderParams := make(map[string]string)
    localVarQueryParams := url.Values{}
    localVarFormParams := url.Values{}

    // to determine the Content-Type header
    localVarHTTPContentTypes := []string{"application/json"}

    // set Content-Type header
    localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
    if localVarHTTPContentType != "" {
        localVarHeaderParams["Content-Type"] = localVarHTTPContentType
    }

    // to determine the Accept header
    localVarHTTPHeaderAccepts := []string{"application/json"}

    // set Accept header
    localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
    if localVarHTTPHeaderAccept != "" {
        localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
    }
    // body params
    localVarPostBody = r.trustOAuth2JwtGrantIssuer
    req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
    if err != nil {
        return localVarReturnValue, nil, err
    }

    localVarHTTPResponse, err := a.client.callAPI(req)
    if err != nil || localVarHTTPResponse == nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
    localVarHTTPResponse.Body.Close()
    localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
    if err != nil {
        return localVarReturnValue, localVarHTTPResponse, err
    }

    if localVarHTTPResponse.StatusCode >= 300 {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: localVarHTTPResponse.Status,
        }
        var v GenericError
        err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
        if err != nil {
            newErr.error = err.Error()
            return localVarReturnValue, localVarHTTPResponse, newErr
        }
        newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v)
        newErr.model = v
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
    if err != nil {
        newErr := &GenericOpenAPIError{
            body:  localVarBody,
            error: err.Error(),
        }
        return localVarReturnValue, localVarHTTPResponse, newErr
    }

    return localVarReturnValue, localVarHTTPResponse, nil
}