{
  "swagger": "2.0",
  "info": {
    "version": "1.0",
    "title": "To-do Demo",
    "description": "This OAS2 (Swagger 2) file represents a real API that lives at http://todos.stoplight.io.\n\nFor authentication information, click the apikey security scheme in the editor sidebar.",
    "contact": {
      "name": "Stoplight",
      "url": "https://stoplight.io"
    },
    "license": {
      "name": "MIT"
    }
  },
  "host": "todos.stoplight.io",
  "schemes": ["http"],
  "consumes": ["application/json"],
  "produces": ["application/json"],
  "securityDefinitions": {
    "Basic": {
      "type": "basic"
    },
    "API Key": {
      "type": "apiKey",
      "name": "apikey",
      "in": "query"
    }
  },
  "paths": {
    "/todos/{todoId}": {
      "parameters": [{
        "name": "todoId",
        "in": "path",
        "required": true,
        "type": "string"
      }],
      "get": {
        "operationId": "GET_todo",
        "summary": "Get Todo",
        "tags": ["Todos"],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/todo-full"
            },
            "examples": {
              "application/json": {
                "id": 1,
                "name": "get food",
                "completed": false,
                "completed_at": "1955-04-23T13:22:52.685Z",
                "created_at": "1994-11-05T03:26:51.471Z",
                "updated_at": "1989-07-29T11:30:06.701Z"
              },
              "/todos/foobar": "{\n\t\"foo\": \"bar\"\n}\n",
              "/todos/chores": {
                "id": 9000,
                "name": "Do Chores",
                "completed": false,
                "created_at": "2014-08-28T14:14:28.494Z",
                "updated_at": "2014-08-28T14:14:28.494Z"
              },
              "new": {
                "name": "esse qui proident labore",
                "completed": null,
                "id": 920778,
                "completed_at": "2014-01-07T07:49:55.123Z",
                "created_at": "1948-04-21T12:04:21.282Z",
                "updated_at": "1951-12-19T11:10:34.039Z",
                "user": {
                  "name": "irure deserunt fugiat",
                  "age": 121.45395681110494
                },
                "float": -47990796.228164576
              }
            }
          },
          "404": {
            "$ref": "./todos.common.json#/responses/404"
          },
          "500": {
            "$ref": "./todos.common.json#/responses/500"
          }
        },
        "parameters": [{
          "in": "query",
          "name": "",
          "type": "string"
        }]
      },
      "put": {
        "operationId": "PUT_todos",
        "summary": "Update Todo",
        "tags": ["Todos"],
        "parameters": [{
          "name": "body",
          "in": "body",
          "schema": {
            "$ref": "#/definitions/todo-partial",
            "example": {
              "name": "my todo's new name",
              "completed": false
            }
          }
        }],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/todo-full"
            },
            "examples": {
              "application/json": {
                "id": 9000,
                "name": "It's Over 9000!!!",
                "completed": true,
                "completed_at": null,
                "created_at": "2014-08-28T14:14:28.494Z",
                "updated_at": "2015-08-28T14:14:28.494Z"
              }
            }
          },
          "401": {
            "$ref": "./todos.common.json#/responses/401"
          },
          "404": {
            "$ref": "./todos.common.json#/responses/404"
          },
          "500": {
            "$ref": "./todos.common.json#/responses/500"
          }
        },
        "security": [{
            "Basic": []
          },
          {
            "API Key": []
          }
        ]
      },
      "delete": {
        "operationId": "DELETE_todo",
        "summary": "Delete Todo",
        "tags": ["Todos"],
        "responses": {
          "204": {
            "description": ""
          },
          "401": {
            "$ref": "./todos.common.json#/responses/401"
          },
          "404": {
            "$ref": "./todos.common.json#/responses/404"
          },
          "500": {
            "$ref": "./todos.common.json#/responses/500"
          }
        },
        "security": [{
            "Basic": []
          },
          {
            "API Key": []
          }
        ]
      }
    },
    "/todos": {
      "post": {
        "operationId": "POST_todos",
        "summary": "Create Todo",
        "tags": ["Todos"],
        "parameters": [{
          "name": "body",
          "in": "body",
          "schema": {
            "$ref": "#/definitions/todo-partial",
            "example": {
              "name": "my todo's name",
              "completed": false
            }
          }
        }],
        "responses": {
          "201": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/todo-full"
            },
            "examples": {
              "application/json": {
                "id": 9000,
                "name": "It's Over 9000!!!",
                "completed": null,
                "completed_at": null,
                "created_at": "2014-08-28T14:14:28.494Z",
                "updated_at": "2014-08-28T14:14:28.494Z"
              },
              "/todos/chores": {
                "id": 9000,
                "name": "Do Chores",
                "completed": false,
                "created_at": "2014-08-28T14:14:28.494Z",
                "updated_at": "2014-08-28T14:14:28.494Z"
              }
            }
          },
          "401": {
            "$ref": "./todos.common.json#/responses/401"
          },
          "500": {
            "$ref": "./todos.common.json#/responses/500"
          }
        },
        "security": [{
            "API Key": []
          },
          {
            "Basic": []
          }
        ],
        "description": "This creates a Todo object.\n\nTesting `inline code`."
      },
      "get": {
        "operationId": "GET_todos",
        "summary": "List Todos",
        "tags": ["Todos"],
        "parameters": [{
            "$ref": "#/parameters/limit"
          },
          {
            "$ref": "#/parameters/skip"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/todo-full"
              }
            },
            "examples": {
              "application/json": [{
                  "id": 1,
                  "name": "design the thingz",
                  "completed": true
                },
                {
                  "id": 2,
                  "name": "mock the thingz",
                  "completed": true
                },
                {
                  "id": 3,
                  "name": "code the thingz",
                  "completed": false
                }
              ],
              "empty": []
            },
            "headers": {
              "foo": {
                "type": "string",
                "default": "bar"
              }
            }
          },
          "500": {
            "$ref": "./todos.common.json#/responses/500"
          }
        },
        "description": "​"
      }
    }
  },
  "parameters": {
    "limit": {
      "name": "limit",
      "in": "query",
      "description": "This is how it works.",
      "required": false,
      "type": "integer",
      "maximum": 100
    },
    "skip": {
      "name": "skip",
      "in": "query",
      "required": false,
      "type": "string"
    }
  },
  "definitions": {
    "todo-partial": {
      "title": "Todo Partial",
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "completed": {
          "type": ["boolean", "null"]
        }
      },
      "required": ["name", "completed"]
    },
    "todo-full": {
      "title": "Todo Full",
      "allOf": [{
          "$ref": "#/definitions/todo-partial"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000
            },
            "completed_at": {
              "type": ["string", "null"],
              "format": "date-time"
            },
            "created_at": {
              "type": "string",
              "format": "date-time"
            },
            "updated_at": {
              "type": "string",
              "format": "date-time"
            },
            "user": {
              "$ref": "./todos.common.json#/definitions/user"
            }
          },
          "required": ["id", "user"]
        }
      ]
    }
  },
  "tags": [{
    "name": "Todos"
  }]
}
