Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Supporting two different request bodies at the same endpoint

I need to support two kinds of request-bodies for the same endpoint and same method (POST). Is it possible in Swagger?

This is important because both request-bodies are valid and a user can send either one of them. More specifically,

RequestBody 1:

{
    param1: value1
    param2: value2
    param3: {
        param3Key1:  x1
        param3Key2:  x2
        ...
    }
}

RequestBody 2:

{
    param1: value1
    param2: value2
    param4: {
        differentKey1:  y1
        differentKey2:  y2
        ...
    }
}

Is there a way to document this situation in Swagger?

One way to do that would be keeping both param3 and param4 in the docs. But, I want the users to specifically know that only one of them needs to be passed. I want to have an altogether different request-body for both of the situations.

like image 283
Akeshwar Jha Avatar asked Sep 12 '25 09:09

Akeshwar Jha


1 Answers

Couldn't find a straight-way. Here's a workaround that I'm following now:

Suppose the endpoint is /endpoint. I can create 2 endpoints in the swagger-ui by appending # followed by a string:

/endpoint#1

/endpoint#2

I can then define both my request-bodies separately under each of these endpoints. The curl command in swagger will hide the hash - so, both the endpoint are basically the same.

like image 72
Akeshwar Jha Avatar answered Sep 14 '25 00:09

Akeshwar Jha