eeditiones / roaster

Open API Router for eXist
GNU General Public License v3.0
23 stars 7 forks source link

Add support for $ref in API definitions #39

Open line-o opened 2 years ago

line-o commented 2 years ago

Given an API definition that includes the following user schema in components

"components": {
  "schemas": {
    "user": {
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" }
      }
    }
  }
}

The above user schema must be referencable by "$ref": "#/components/schemas/user" like in the response definition below:

"responses": {
  "200": {
    "description": "The response",
    "schema": {
      "$ref": "#/components/schemas/user" 
    }
  }
}

Components spec: https://oai.github.io/Documentation/specification-components.html

At least, following objects must be supported, as they tend to greatly reduce the size of the definition JSON

Due to their nature of being used very frequently, these should also be included:

The full list of objects that can be referenced can be found here https://spec.openapis.org/oas/v3.1.0#components-object

Do we want to allow refs from other or even external documents?

cwittern commented 1 year ago

Any progress on this issue?

line-o commented 1 year ago

@cwittern this is the number one item on our backlog (see https://github.com/orgs/eeditiones/projects/2). When time allows this is the first thing to work on.

line-o commented 1 year ago

There is however a possibility to preprocess an API definition with refs see https://faq.teipublisher.com/api/designingopenapi/

line-o commented 1 year ago

The steps in short are

cwittern commented 1 year ago

Thanks, yes, that's an easy way out.

line-o commented 7 months ago

There is a new module out that can not only validate your API definition but also resolve references. It's called oad