Swagger - Multiple responses with the same http status code with drf-yasg

Viewed 11

I have endpoint that may return json or excel file:

class ReportView(GenericAPIView):

@swagger_auto_schema(
    responses={
        200: openapi.Schema(
            type=openapi.TYPE_FILE,
            title='Report.xlsx'
        ),
        200: openapi.Schema(
            type=openapi.TYPE_OBJECT,
        ),
    }
)
def get(self, request):
    if request.query_params.get('format') == 'xlsx':
        return excel response
    return json response

How could I define two 200-responses at the same time?

I read some and found out about oneOf:

     responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ResponseOne'
                  - $ref: '#/components/schemas/ResponseTwo'
              example:   # <--- Workaround for Swagger UI < 3.39.0
                foo: bar

How could I implement it with drf_yasg?

0 Answers
Related