Как сделать два взаимоисключающих свойства raml?

У меня есть тип в raml1.0 с 4 свойствами, и мне нужно реализовать этот случай: два свойства из четырех существуют только исключительно, поэтому, если одно из них существует, другое не должно существовать, и если они оба возникают, сообщение об ошибке проппера брошен пользователю.

Например:

types:
  TypeOne:
    description: "Need the first two properties exist only mutually exclusively"
    type: object
    additionalProperties: false
    properties:
      Prop1:
        description: "This is the first property"
        type: string
        required: true
      Prop2:
        description: "This should not exist if Prop1 exist"
        type: String
        required: true (only if Prop1 does not exist) 
      Prop3:
        description: "This is optional if Prop1 exists"
        type: string
        required: false
      Prop4:
        description: "This is optional if Prop2 exists"
        type: string
        required: false

Любая помощь высоко ценится. Кстати, каждый из этих типов - сложный объект. Я упростил его здесь только для презентации.

1 ответ

Решение

Попробуй это:

types:
  Base:
    properties:
      Prop3:
        description: "This is optional if Prop1 exists"
        type: string
        required: false
      Prop4:
        description: "This is optional if Prop2 exists"
        type: string
        required: false
  TypeOne:
    type: Base
    additionalProperties: false
    properties:
      Prop1:
        description: "This is the first property"
        type: string
        required: true
  TypeTwo:
    type: Base
    additionalProperties: false
    properties:
      Prop2:
        description: "This is the first property"
        type: string
        required: true
  MainType:
    type: TypeOne | TypeTwo

Документацию для типов объединения можно найти здесь: https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/

Другие вопросы по тегам