open-rpc / spec

The OpenRPC specification
https://spec.open-rpc.org
Apache License 2.0
166 stars 49 forks source link

Components object does not support `x-` specification extensions #376

Open jlacivita opened 1 year ago

jlacivita commented 1 year ago

The spec for Components object says:

This object MAY be extended with Specification Extensions.

However, the schema does not allow for this:

    "components": {
      "title": "components",
      "type": "object",
      "properties": {
        "schemas": {
          "title": "schemaComponents",
          "type": "object",
          "patternProperties": {
            "[0-z]+": {
              "$ref": "#/definitions/JSONSchema"
            }
          }
        },
        "links": {
          "title": "linkComponents",
          "type": "object",
          "patternProperties": {
            "[0-z]+": {
              "$ref": "#/definitions/linkObject"
            }
          }
        },
        "errors": {
          "title": "errorComponents",
          "type": "object",
          "patternProperties": {
            "[0-z]+": {
              "$ref": "#/definitions/errorObject"
            }
          }
        },
        "examples": {
          "title": "exampleComponents",
          "type": "object",
          "patternProperties": {
            "[0-z]+": {
              "$ref": "#/definitions/exampleObject"
            }
          }
        },
        "examplePairings": {
          "title": "examplePairingComponents",
          "type": "object",
          "patternProperties": {
            "[0-z]+": {
              "$ref": "#/definitions/examplePairingObject"
            }
          }
        },
        "contentDescriptors": {
          "title": "contentDescriptorComponents",
          "type": "object",
          "patternProperties": {
            "[0-z]+": {
              "$ref": "#/definitions/contentDescriptorObject"
            }
          }
        },
        "tags": {
          "title": "tagComponents",
          "type": "object",
          "patternProperties": {
            "[0-z]+": {
              "$ref": "#/definitions/tagObject"
            }
          }
        }
      }
    }

Is this a bug, or a copy/paste error in the spec?

Supporting x- extensions in the components object would be quite useful for storing specific types of reusable objects that are domain-specific.

github-actions[bot] commented 1 year ago

Welcome to OpenRPC! Thank you for taking the time to create an issue. Please review the guidelines

BelfordZ commented 1 year ago

That makes a lot of sense to me, thanks for the suggestion.

do you want to make a PR / issue on meta-schema?