advanced-rest-client / api-type-document

⛔️ DEPRECATED This component is being deprecated. Use `api-documentation` instead.
0 stars 2 forks source link

JSON schema's "allOf" results in no declared properties of a RAML type #24

Open deiteris opened 3 years ago

deiteris commented 3 years ago

When a JSON schema object combines two properties using allOf, the API console doesn't show any declared properties of the type.

The following RAML reproduces the issue:

#%RAML 1.0

title: Example API
version: v1
mediaType:
  - application/json

types:
  allOfSchema: |
    {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "type": "object",
      "allOf": [
        {
          "properties": {
            "original": {
              "description": "Original property",
              "type": "string"
            }
          }
        },
        {
          "properties": {
            "extension": {
              "description": "Extension property",
              "type": "string"
            }
          }
        }
      ]
    }

/example:
  get:
    body:
      type: allOfSchema
      example: |
        {
          "extension": ""
        }

And results in the following graph: https://pastebin.com/Eysrm4S1

I assume this happens because shacl:and is not taken into account, while shacl:property is empty in this case.


{
    ...
    "doc:declares": [
      {
        "@id": "#1",
        "@type": [
          "shacl:NodeShape",
          "raml-shapes:AnyShape",
          "shacl:Shape",
          "raml-shapes:Shape",
          "doc:DomainElement"
        ],
        "shacl:closed": [
          {
            "@value": false
          }
        ],
        "shacl:property": [],
        "shacl:name": [
          {
            "@value": "allOfSchema"
          }
        ],
        "shacl:and": [
          {
            "@id": "#2",
            "@type": [
              "shacl:NodeShape",
              "raml-shapes:AnyShape",
              "shacl:Shape",
              "raml-shapes:Shape",
              "doc:DomainElement"
            ],
           ...
          }
        ]
      }
    ]
}
deiteris commented 3 years ago

I was able to fix this for my own purposes with the following changes: https://github.com/deiteris/api-type-document/commit/c2f095d4045eddc08e3b101d641824c7e5948fa3

I can either create a PR if these changes are sufficient, or it may give you a better idea of how it will be better to be fixed.