title: Swagger throws "Could not resolve reference"
body: <p>As a part of my learning journey (with TestDriven.io) I'm learning about Swagger or OpenApi. I'm getting this error from Swagger:  <code>Could not resolve reference: Could not resolve pointer: /components/schemas/user does not exist in document</code> that reference is clearly in the json file so why is it complaining ? (this text here is to pass site's minimum character limit in the post and has no relevance to the question itself)</p>
  
  <pre><code>{
    "openapi": "3.0.2",
    "info": {
      "version": "0.0.1",
      "title": "Users Service",
      "description": "Swagger spec for documenting the users service"
    },
    "servers": [
      {
        "url": "http://localhost"
      }
    ],
    "paths": {
      "/users/ping": {
        "get": {
          "summary": "Just a sanity check",
          "responses": {
            "200": {
              "description": "Will return 'pong!'"
            }
          }
        }
      },
      "/users": {
        "get": {
          "summary": "Returns all users",
          "responses": {
            "200": {
              "description": "user object"
            }
          }
        }
      },
      "/users/{id}": {
        "get": {
          "summary": "Returns a user based on a single user ID",
          "parameters": [
            {
              "name": "id",
              "in": "path",
              "description": "ID of user to fetch",
              "required": true,
              "schema": {
                "type": "integer",
                "format": "int64"
              }
            }
          ],
          "responses": {
            "200": {
              "description": "user object"
            }
          }
        }
      },
      "/auth/register": {
        "post": {
          "summary": "Creates a new user",
          "requestBody": {
            "description": "User to add",
            "required": true,
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/user-full"
                }
              }
            }
          }
        },
  
        "responses": {
          "200": {
            "description": "user object"
          }
        }
      },
  
      "/auth/login": {
        "post": {
          "summary": "Logs a user in",
          "requestBody": {
            "description": "User to log in",
            "required": true,
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/user"
                }
              }
            }
          },
          "responses": {
            "200": {
              "description": "Successfully logged in"
            }
          }
        }
      },
      "/auth/status": {
        "get": {
          "summary": "Returns the logged in user's status",
          "security": [
            {
              "bearerAuth": []
            }
          ],
          "responses": {
            "200": {
              "description": "user object"
            }
          }
        }
      },
      "/auth/logout": {
        "get": {
          "summary": "Logs a user out",
          "security": [
            {
              "bearerAuth": []
            }
          ],
          "responses": {
            "200": {
              "description": "Successfully logged out"
            }
          }
        }
      },
      "components": {
        "securitySchemes": {
          "bearerAuth": {
            "type": "http",
            "scheme": "bearer"
          }
        },
  
        "schemas": {
          "user": {
            "properties": {
              "email": {
                "type": "string"
              },
              "password": {
                "type": "string"
              }
            }
          },
          "user-full": {
            "properties": {
              "username": {
                "type": "string"
              },
              "email": {
                "type": "string"
              },
              "password": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  }
  </code></pre>