webapi-parser icon indicating copy to clipboard operation
webapi-parser copied to clipboard

Translating JSON "OneOf" to RAML DataTypes

Open HugaertsDries opened this issue 5 years ago • 2 comments

I'm trying to translate the following JSON schema to a RAML datatype using the provided tutorial. But it seems to fail parsing on the JSON "OneOf" keyword. Is this not yet supported?

Input JSON:

{
 "$schema" : "http://json-schema.org/draft-04/schema#",
 "title" : "Product",
 "type" : "object",
 "oneOf" : [ {
    "$ref" : "#/definitions/PromotionalProduct_-1109912719"
 }, {
    "$ref" : "#/definitions/DefaultProduct_-1835798300"
 } ],
 "id" : "#/definitions/Product_-1110706969"
}

output RAML:

  Product_-1110706969:
    displayName: Product
    type: object
    (amf-xone):
      - PromotionalProduct_-1109912719
      - DefaultProduct_-1835798300

HugaertsDries avatar Nov 05 '19 11:11 HugaertsDries

Hi @HugaertsDries. What do you expect anyOf to be converted to?

I'm not certain it's possible to represent anyOf using RAML 1.0, because

given data must be valid against exactly one of the given subschemas

and I can't recall a way to express that behaviour in RAML (do you @jstoiko?)

You might want to use oneOf which is a Union Type in RAML 1.0, but there's an issue with it: https://github.com/aml-org/amf/issues/565

postatum avatar Nov 06 '19 07:11 postatum

@postatum thanks for the reply!

I was only looking into representing oneOf. So I have not yet looked into the use case of anyOf. But I'll keep a close eye on the issue you provided.

HugaertsDries avatar Nov 06 '19 09:11 HugaertsDries