A deterministic version of a JSON schema object

Светлин Славов picture Светлин Славов · Oct 9, 2015 · Viewed 7.3k times · Source

I am trying to use the Swagger Editor to create a custom JSON/YAML for my API. Basically I want to describe a POST request to an endpoint with Accept and Content-Type headers and POST-data in the form of JSON as in the following template {"document": "Some text paragraph", "documentType": "text/plain"}.

This is my swagger.yml file

swagger: '2.0'
info:
  title: Random title
  description: Blah blah
  version: 1.2.3
host: endpoint.com
schemes:
  - https
securityDefinitions:
  basicAuth:
    type: basic
    description: HTTP Basic Authentication.
basePath: /v1
paths:
  '/{pipelineID}':
    parameters:
      - $ref: '#/parameters/pipelineID'
    post:
      summary: Hello world
      description: World hello
      security:
        - basicAuth: []
      consumes:
        - application/json
      produces:
        - application/json
      tags:
        - TextAnnotation
      parameters:
        - name: body
          in: body
          description: JSON
          required: true
          schema:
            - $ref: "#/definitions/json"
        - name: Accept
          in: header
          required: true
        - name: Content-Type
          in: header
          required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
parameters:
  pipelineID:
    name: pipelineID
    description: Pipeline ID
    in: path
    type: string
    required: true
definitions:
  json:
    - type: ServiceRequest
      properties:
        - "document":
          - type: string
          "documentType":
          - type: string

Swagger editor's error:

Swagger Error
A deterministic version of a JSON Schema object.
Jump to line 59

Line 59 is where the definitions start, more specifically, json

What am I doing wrong?

Answer

I have found the bugger in this one. Here's the absolutely valid and working JSON

"definitions": {
    "ServiceRequest": {
        "type": "object",
        "description": "Payload data to be sent with request. Format: JSON",
        "required": [
            "documentType",
            "document"
        ],
        "properties": {
            "documentType": {
                "type": "string",
                "default": "text/plain"
            },
            "document": {
                "type": "string",
                "default": "Your text here"
            }
        }
    }
}

which produces correct curl request.