How to define an array of a type in an external file in Raml?

David Pelaez picture David Pelaez · Jan 19, 2016 · Viewed 8.4k times · Source

If I have a file defining a Datatype SimpleDuple, and in another file defining another datatype called DiscreetFilter I want to have a property values to be an array of SimpleDuple how would I use include there?

Consider the files for SimpleDuple:

#%RAML 1.0 DataType
type: object
properties:
  id: string
  name: string

And the other definition where I want to make a property be an array of SimpleDuples in the values property (but I had to use an inline definition).

#%RAML 1.0 DataType
type: object
properties:
  field: string
  name: string
  type: { enum: [ discreet ] }

  # Ideally this property would use an include
  # in some way to express the equivalent of SimpleDuple[]
  values: 
    type: array
    properties:
      id: string
      name: string

If those two types where on the same file I'd set the values property to SimpleDuple[]. If it wasn't an array I'd put the include as the value of the values property.

But how do I use an include and an array at the same time instead of using the inline definition I used in the copied code?

Answer

christian.vogel picture christian.vogel · Jan 19, 2016

You should be able to do the following:

chapter.raml

#%RAML 1.0 DataType

type: object
properties:
  name: string

storyboard.raml

#%RAML 1.0 DataType

type: object
properties:
  name: string
  chapters:
    type: array
    items: !include chapter.raml

Hope that helps?!