{
  "definitions": {
    "resource1": {
      "title": "resource1",
      "properties": {
        "title": { "type": "string" },
        "name": { "type": "string" },
        "age": { "type": "integer", "format": "int64" },
        "description": { "type": "string" },
        "list": {
          "type": "array",
          "title": "list",
          "items": { "$ref": "#/definitions/list" }
        },
        "list2": { "type": "array", "items": { "type": "string" } },
        "_id": { "type": "string", "description": "ObjectId" }
      }
    },
    "list": {
      "title": "list",
      "properties": {
        "label": { "type": "string" },
        "data": { "type": "array", "items": { "type": "string" } }
      }
    }
  },
  "paths": {
    "/test/resource1": {
      "get": {
        "tags": ["resource1"],
        "summary": "List multiple resource1 resources.",
        "description": "This operation allows you to list and search for resource1 resources provided query arguments.",
        "operationId": "getresource1s",
        "responses": {
          "200": {
            "description": "Resource(s) found.  Returned as array.",
            "schema": {
              "type": "array",
              "items": { "$ref": "#/definitions/resource1" }
            }
          },
          "401": { "description": "Unauthorized." }
        },
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "How many records to skip when listing. Used for pagination.",
            "required": false,
            "type": "integer",
            "default": 0
          },
          {
            "name": "limit",
            "in": "query",
            "description": "How many records to limit the output.",
            "required": false,
            "type": "integer",
            "default": 10
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Which fields to sort the records on.",
            "type": "string",
            "required": false,
            "default": ""
          },
          {
            "name": "select",
            "in": "query",
            "description": "Select which fields will be returned by the query.",
            "type": "string",
            "required": false,
            "default": ""
          },
          {
            "name": "populate",
            "in": "query",
            "description": "Select which fields will be fully populated with the reference.",
            "type": "string",
            "required": false,
            "default": ""
          }
        ]
      },
      "post": {
        "tags": ["resource1"],
        "summary": "Create a new resource1",
        "description": "Create a new resource1",
        "operationId": "createresource1",
        "responses": {
          "201": { "description": "The resource has been created." },
          "400": {
            "description": "An error has occured trying to create the resource."
          },
          "401": {
            "description": "Unauthorized.  Note that anonymous submissions are *enabled* by default."
          }
        },
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "Data used to create a new resource1",
            "required": true,
            "schema": { "$ref": "#/definitions/resource1" }
          }
        ]
      }
    },
    "/test/resource1/{resource1Id}": {
      "get": {
        "tags": ["resource1"],
        "summary": "Return a specific resource1 instance.",
        "description": "Return a specific resource1 instance.",
        "operationId": "getresource1",
        "responses": {
          "200": {
            "description": "Resource found",
            "schema": { "$ref": "#/definitions/resource1" }
          },
          "401": { "description": "Unauthorized." },
          "404": { "description": "Resource not found" },
          "500": { "description": "An error has occurred." }
        },
        "parameters": [
          {
            "name": "resource1Id",
            "in": "path",
            "description": "The ID of the resource1 that will be retrieved.",
            "required": true,
            "type": "string"
          }
        ]
      },
      "put": {
        "tags": ["resource1"],
        "summary": "Update a specific resource1 instance.",
        "description": "Update a specific resource1 instance.",
        "operationId": "updateresource1",
        "responses": {
          "200": {
            "description": "Resource updated",
            "schema": { "$ref": "#/definitions/resource1" }
          },
          "400": { "description": "Resource could not be updated." },
          "401": { "description": "Unauthorized." },
          "404": { "description": "Resource not found" },
          "500": { "description": "An error has occurred." }
        },
        "parameters": [
          {
            "name": "resource1Id",
            "in": "path",
            "description": "The ID of the resource1 that will be updated.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Data used to update resource1",
            "required": true,
            "schema": { "$ref": "#/definitions/resource1" }
          }
        ]
      },
      "delete": {
        "tags": ["resource1"],
        "summary": "Delete a specific resource1",
        "description": "Delete a specific resource1",
        "operationId": "deleteresource1",
        "responses": {
          "204": { "description": "Resource was deleted" },
          "400": { "description": "Resource could not be deleted." },
          "401": { "description": "Unauthorized." },
          "404": { "description": "Resource not found" },
          "500": { "description": "An error has occurred." }
        },
        "parameters": [
          {
            "name": "resource1Id",
            "in": "path",
            "description": "The ID of the resource1 that will be deleted.",
            "required": true,
            "type": "string"
          }
        ]
      }
    }
  }
}
