raml-org / webapi-parser

API Spec parser based on AMF. Currently supports RAML 0.8, RAML 1.0, OAS 2.0 and OAS 3.0(beta).
Other
68 stars 24 forks source link

Translating JSON "OneOf" to RAML DataTypes #51

Open HugaertsDries opened 4 years ago

HugaertsDries commented 4 years ago

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
postatum commented 4 years ago

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

HugaertsDries commented 4 years ago

@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.