Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does one setup OpenAPI redirect response with parameters?

I have an HTTP 302 (Redirect) that I implemented a new status parameter, that will append to the RedirectURL, so one can show a message something like

if the call URL is passed as

GET http://localhost:8080/info/status?redirectUrl=http://localhost:8080/redirect

then it will redirect as

http://localhost:8080/redirect?status=success

and it's counterpart

http://localhost:8080/redirect?status=error

but how does one describe this in OpenAPI specification? I can't seem to make use of parameters in the response and found some code that uses responseParameters but I had no luck to make it work... don't even know if it's something that is supported, at least, I get no errors compiling with both commands

  /info/setup:
    get:
      summary: Setup Url
      description: Setup Url to create new setup. Should be retrieved from api
        apps endpoint and redirect to, not called directly by the url defined
        here
      parameters:
        - in: query
          name: installationId
          description: The installation id
          required: true
          schema:
            type: string
        - in: query
          name: redirectUrl
          description: Url to redirect back to upon finished installation
          required: true
          schema:
            type: string
      responses:
        "302":
          description: Redirect
          responseParameters:
            - in: query
              name: status
              description: the status of the instalation
              schema:
                oneOf:
                  - type: string
                    example: success
                    description: When the installation was successful
                  - type: string
                    example: error
                    description: When the installation was erroneous
          headers:
            location:
              description: Setup state based redirect
              schema:
                oneOf:
                  - type: string
                    description: If setup is done and valid for installation id, will
                      redirect to given redirect url
                  - type: string
                    description: If no setup exist for installation id, will redirect to
                      SumUp oauth page
                  - type: string
                    description: If error during authorization with SumUpl, e.g. non
                      matching editions, will redirect to a setup page for
                      further user action

what is the common way of having such a scenario?

should we have 2 redirect URLs like

GET http://localhost:8080/info/status
   ?redirectUrl=http://localhost:8080/redirect
   &errorUrl=http://localhost:8080/redirect_error

I'm a bit of a loss on this simple predicament, maybe someone can help 😊

like image 882
balexandre Avatar asked Sep 08 '20 11:09

balexandre


People also ask

How do you specify optional parameters in Swagger?

You can use the default key to specify the default value for an optional parameter. The default value is the one that the server uses if the client does not supply the parameter value in the request. The value type must be the same as the parameter's data type.

How does API redirect work?

redirect() The redirect() method of the Response interface returns a Response resulting in a redirect to the specified URL. Note: This is mainly relevant to the ServiceWorker API. A controlling service worker could intercept a page's request and redirect it as desired.


Video Answer


1 Answers

Yes, this is an annoying issue with OpenAPI. You cannot really specify a redirect explicitly.

The best you can do is specify a response with a status code in the 3xx redirect range (301, 302, 303, 307, 308) that has a "location" header parameter of type "string".

You should then add a description and summary - pretty much what you have already done.

There is this issue in the OpenAPI specification github: https://github.com/OAI/OpenAPI-Specification/issues/2512

Hopefully something will be done soonish.

like image 60
Na'aman Hirschfeld Avatar answered Oct 24 '22 09:10

Na'aman Hirschfeld