SuperGeek133
SuperGeek133

Reputation: 25

Swagger POST with non-json body

I'm defining a resource that you POST to with a non-JSON body. It's just a string like form parameters. Something like what happens with OAuth: grant_type=&code=&redirect_uri=

How can I document that on Swagger? Do I have to use formParam format instead of body? Everything I put into body it converts to JSON examples.

  TokenRequest:
    properties:
      grant_type:
        type: string
        description: OAuth Grant Type
        enum:
        - authorization_code
        - refresh
      code:
        type: string
        description: Authorization Code obtained from /authorize required if grant_type = au
      redirect_uri:
        type: string
        description: Defined Redirect URI Example - https://example.com/callback
      refresh_token:
        type: string
        description: Required if grant_type = refresh

Upvotes: 0

Views: 731

Answers (1)

William Cheng
William Cheng

Reputation: 10817

Here is an example on how to document the form data:

post:
  tags:
    - pet
  summary: Updates a pet in the store with form data
  description: ''
  operationId: updatePetWithForm
  consumes:
    - application/x-www-form-urlencoded
  produces:
    - application/xml
    - application/json
  parameters:
    - name: petId
      in: path
      description: ID of pet that needs to be updated
      required: true
      type: integer
      format: int64
    - name: name
      in: formData
      description: Updated name of the pet
      required: false
      type: string
    - name: status
      in: formData
      description: Updated status of the pet
      required: false
      type: string
  responses:
    '405':
      description: Invalid input
  security:
    - petstore_auth:
        - 'write:pets'
        - 'read:pets'

But in your case, it seems you want to define OAuth setting so please refer to Swagger Spec 2.0 for more information. Here is an example for PetStore:

securityDefinitions:
  petstore_auth:
    type: oauth2
    authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
    flow: implicit
    scopes:
      'write:pets': modify pets in your account
      'read:pets': read your pets
  api_key:
    type: apiKey
    name: api_key
    in: header

Upvotes: 1

Related Questions