Add missing colon so jekyll will run locally

#%RAML 0.8
---
title: Order Management API
baseUri: https://api.bring.com/po/api/v1

documentation:
- title: Introduction
  content: |
    There are different customer types in Order Management and depending on what kind of customer you are setts the usage pattern for Order Management API.

    This is a step-by-step guide on how to use the API.

    A typical usage pattern for an Warehousing cutomer type is to create an order in Order Management that will go to the correct warehouse for picking, packing and sending. Then follow up with creating a packing list from the warehouse with transport information. All steps can be followed in Order Management.

    An other usage pattern is for an purchase order customer that create purchase orders and lets all of his suppliers get the order from Order Management. The suppliers will check whether a customer is a Order Management customer. Follow up with creating a packing list with transport information. All events and status changes will go back to purchase order owner.

    Order Management has several interfaces (SOAP and XML/JSON). Choose the option that fits your needs best (see table below). The SOAP interface is the core interface with complete functionality.

    Please note that this API currently doesn't support json on all of its methods yet. Look in the example section to see which are supported.

    ## SOAP

    ### Versioning

    Order Management makes an effort to always be backwards compatible regarding data format for requests and responses of the Web Service. To achieve this, a SchemaVersion element is used in the request, indicating which version the client is on and what data-format the client expects in the result.

    We make an effort not to return new elements in the response when an old schema version is specified. When changes in the schema are made, the SchemaVersion is incremented by one. The new schema is used at the same endpoint URL as before and uses the same namespace for its XML elements. A TraceMessage element (info message) in the response is added to inform the client that its schema should be updated. Old schema versions might in the future be unsupported.

    Regarding the XML API (not Web Services), an XML Schema is not used at all. Therefore, clients of the XML API are expected to handle new elements that appear. Nevertheless, the response will be backwards compatible in the sense that elements are not renamed or deleted.

    ### WSDL

    [https://api.bring.com/po/api/ws/purchaseorder-v1.wsdl](https://api.bring.com/po/api/ws/purchaseorder-v1.wsdl)

    ## Error handling

    When using the Order Management, errors or service unavailability can occur, although we do our utmost to prevent any downtime. Thus it is important to use timeouts and other error handling techniques when making requests to the service.

    How you handle errors depends on the nature of your application, but one strategy for handling such situations is by providing a failover if the shipping guide responds with an error or does not respond at all (timeout).

    See [the list of error codes](#list-error-codes) for hints on how to implement error handling.

- title: Authentication
  content: |
    The Order Management API requires authentication for all its endpoints. See the [getting started guide on authentication](/api/#authentication) if you're not sure what this means.

    | Header | Example | Comment |
    |:-------|:--------|:--------|
    | `X-MyBring-API-Uid` | `john.doe@example.com` | Mybring login ID |
    | `X-MyBring-API-Key` | `1234abc-abcd-1234-5678-abcd1234abcd ` | Mybring login's API key |
    | `X-Bring-Client-URL` | `https://example.com/ ` | A URL that sort of identifies where you're using the APIs. |

    Those headers must be set for all endpoints documented below.

/purchaseorderCustomer/{customerId}:
  displayName: Check if customer is valid for order management
  description: |
      Check if a given customer number is an valid Order Management customer.
  get:
    description:
     Check if customer is valid for order management
    responses:
      200:
        displayName: Success
        description: |
          Returns `true` if given customer is a valid for order management.
        body:
          application/xml:
            example: !include examples/verify_customer.xml

/order/{customerId}/{orderId}:
  displayName: List order information
  description: |
      Get all information on a given order.
  get:
    description: List order information
    responses:
      200:
        displayName: Success
        description: |
          Complete order information including order items.
        body:
          application/xml:
            example: !include examples/retrieve_purchaseorder.xml

/order:
  displayName: Send an order
  description: |
      Send an order to Order Management. There are different types of order supported in Order Management.

       - Order / SalesOrder (as an pickorder for Warehousing)
            - Order Management act as an order repository.
            - When Warehousing functionality Order Management sends it to Warhousing system for picking and delivery.
       - PurchaseOrder
            - Order Management can give your suppliers access to purchase orders so they can get info, confirm, accept and deliver on them.
            - When Warehousing functionality Order Management sends it to Warhousing system for receiving notice.
  post:
    description: Send an order
    queryParameters:
      CustomerNo:
          description: Customer Number which Bring has provided. It cannot be demo customer number.
          type: string
          required: true
          example: 10000000000
      DateAndTimes subClass DocumentDate:
          description: The date on which order is booked.
          type: dateTime
          required: true
          example: 22.01.2017 11:36:22
      updateIndicator:
          description: Type of order data. Original, Update or Delete
          type: string
          required: true
          example: Original
      Party/subClass OrderingParty:
          description: Details of sender. Must have Name, Street, City, CountryCode.
          required: true
      Party/subClass DeliveryParty:
          description: Details of recipient. Must have Name, Street, City, CountryCode.
          required: true
      Party/subClass Supplier:
          description: Details of supplier. Must have Name, Street, City, CountryCode if used.
          required: false
      OrderLineSet:
          description: Set of order items.
          type: sequence
          required: true
      OrderItem articleLineId:
          description: Line id for this order line.
          type: integer
          required: true
          example: 10
      ArticleId:
          description: Article number or id.
          type: string
          required: false
          example: 123-4000
      ArticleQuantity:
          description: Quantity ordered.
          type: float
          required: true
          example: 2.0
      Description:
          description: Article description / name.
          type: string
          required: true
          example: Spear parts
      Description:
          description: Article description / name.
          type: string
          required: true
          example: Spear parts
      DateAndTimes subClass DeliveryDateRequested:
          description: The date on which order is requested delivered.
          type: dateTime
          required: true
          example: 22.01.2017 11:36:22

    body:
      application/xml:
        example: !include examples/create_purchaseorder.xml
    responses:
      200:
        displayName: Success
        description: |
          Successfully created a order.

/items/{customerId}/{orderId}:
  displayName: List order items
  description: |
      List all item lines on an order.
  get:
    description: List order items
    responses:
      200:
        displayName: Success
        description: |
          List of order items.
        body:
          application/xml:
            example: !include examples/retrieve_orderitems.xml

/transport/{customerId}/{orderId}:
  displayName: List transport orders for order
  description: |
      List all transport information for this order. One order can have multiple transport orders.
  get:
    description: List transport orders for order
    responses:
      200:
        displayName: Success
        description: |
          List of transport orders for given order, if any.
        body:
          application/xml:
            example: !include examples/retrieve_packinglist.xml

/transport:
  displayName: Add packaging list
  description: |
      When an order have been picked and sent, add packing list on order with transport information.
  post:
    description: Add packaging list
    body:
      application/xml:
        example: !include examples/create_packaging_list.xml
    responses:
      200:
        displayName: Success
        description: |
          Successfully added packaging list.

/senderStatus/{customerId}/{orderId}:
  displayName: Get status for order
  description: |
      Check status for an order. Open when not fully delivered or locked when fully delivered.
  get:
    description: Get status for order
    responses:
      200:
        displayName: Success
        description: Open or Locked.
        body:
          application/xml:
            example: !include examples/check_status.xml

/event:
  displayName: Create TMSEvents
  description: |
      Create tracking events on shipments associated with orders in Order Management.
  post:
    description: Create TMSEvents
    body:
      application/xml:
        example: !include examples/create_events.xml
    responses:
      200:
        displayName: Success
        description: |
          Successfully created a new resource

/articlebalance:
  displayName: Create or update article balance list
  post:
    description: Create or update article balance list
    body:
      application/xml:
        example: !include examples/create_articlebalance.xml
    responses:
      200:
        displayName: Success
        description: |
          Successfully created balance list

/articlebalance/{customerId}/{articleNo}:
  displayName: Get stock balance and info for one article
  get:
    description: Get stock balance and info for one article
    responses:
      200:
        displayName: Success
        description: |
        body:
          application/xml:
            example: !include examples/retrieve_articlebalance_one.xml

/articlebalance/info/{customerId}/{articleSearchString}:
  displayName: Get stock balance and info for all articles matching search string
  get:
    description: Get stock balance and info for all articles matching search string
    responses:
      200:
        displayName: Success
        description: |
        body:
          application/xml:
            example: !include examples/retrieve_articlebalance_search.xml

/errorCodes:
  displayName: List error codes
  get:
    description: List error codes
    responses:
      200:
        displayName: Success
        description: |
          Dynamic list of error codes used in the solution.
        body:
          application/xml:
            example: !include examples/error_codes.xml
          application/json:
            example: !include examples/error_codes.json

#%RAML 0.8
---
title: Order Management API
baseUri: https://api.bring.com/po/api/v1

documentation:
- title: Introduction
  content: |
    There are different customer types in Order Management and depending on what kind of customer you are setts the usage pattern for Order Management API.

    This is a step-by-step guide on how to use the API.

    A typical usage pattern for an Warehousing cutomer type is to create an order in Order Management that will go to the correct warehouse for picking, packing and sending. Then follow up with creating a packing list from the warehouse with transport information. All steps can be followed in Order Management.

    An other usage pattern is for an purchase order customer that create purchase orders and lets all of his suppliers get the order from Order Management. The suppliers will check whether a customer is a Order Management customer. Follow up with creating a packing list with transport information. All events and status changes will go back to purchase order owner.

    Order Management has several interfaces (SOAP and XML/JSON). Choose the option that fits your needs best (see table below). The SOAP interface is the core interface with complete functionality.

    Please note that this API currently doesn't support json on all of its methods yet. Look in the example section to see which are supported.

    ## SOAP

    ### Versioning

    Order Management makes an effort to always be backwards compatible regarding data format for requests and responses of the Web Service. To achieve this, a SchemaVersion element is used in the request, indicating which version the client is on and what data-format the client expects in the result.

    We make an effort not to return new elements in the response when an old schema version is specified. When changes in the schema are made, the SchemaVersion is incremented by one. The new schema is used at the same endpoint URL as before and uses the same namespace for its XML elements. A TraceMessage element (info message) in the response is added to inform the client that its schema should be updated. Old schema versions might in the future be unsupported.

    Regarding the XML API (not Web Services), an XML Schema is not used at all. Therefore, clients of the XML API are expected to handle new elements that appear. Nevertheless, the response will be backwards compatible in the sense that elements are not renamed or deleted.

    ### WSDL

    [https://api.bring.com/po/api/ws/purchaseorder-v1.wsdl](https://api.bring.com/po/api/ws/purchaseorder-v1.wsdl)

    ## Error handling

    When using the Order Management, errors or service unavailability can occur, although we do our utmost to prevent any downtime. Thus it is important to use timeouts and other error handling techniques when making requests to the service.

    How you handle errors depends on the nature of your application, but one strategy for handling such situations is by providing a failover if the shipping guide responds with an error or does not respond at all (timeout).

    See [the list of error codes](#list-error-codes) for hints on how to implement error handling.

- title: Authentication
  content: |
    The Order Management API requires authentication for all its endpoints. See the [getting started guide on authentication](/api/#authentication) if you're not sure what this means.

    | Header | Example | Comment |
    |:-------|:--------|:--------|
    | `X-MyBring-API-Uid` | `john.doe@example.com` | Mybring login ID |
    | `X-MyBring-API-Key` | `1234abc-abcd-1234-5678-abcd1234abcd ` | Mybring login's API key |
    | `X-Bring-Client-URL` | `https://example.com/ ` | A URL that sort of identifies where you're using the APIs. |

    Those headers must be set for all endpoints documented below.

/purchaseorderCustomer/{customerId}:
  displayName: Check if customer is valid for order management
  description: |
      Check if a given customer number is an valid Order Management customer.
  get:
    description:
     Check if customer is valid for order management
    responses:
      200:
        displayName: Success
        description: |
          Returns `true` if given customer is a valid for order management.
        body:
          application/xml:
            example: !include examples/verify_customer.xml

/order/{customerId}/{orderId}:
  displayName: List order information
  description: |
      Get all information on a given order.
  get:
    description: List order information
    responses:
      200:
        displayName: Success
        description: |
          Complete order information including order items.
        body:
          application/xml:
            example: !include examples/retrieve_purchaseorder.xml

/order:
  displayName: Send an order
  description: |
      Send an order to Order Management. There are different types of order supported in Order Management.

       - Order / SalesOrder (as an pickorder for Warehousing)
            - Order Management act as an order repository.
            - When Warehousing functionality Order Management sends it to Warhousing system for picking and delivery.
       - PurchaseOrder
            - Order Management can give your suppliers access to purchase orders so they can get info, confirm, accept and deliver on them.
            - When Warehousing functionality Order Management sends it to Warhousing system for receiving notice.
  post:
    description: Send an order
    queryParameters:
      CustomerNo:
          description: Customer Number which Bring has provided. It cannot be demo customer number.
          type: string
          required: true
          example: 10000000000
      DateAndTimes subClass DocumentDate:
          description: The date on which order is booked.
          type: dateTime
          required: true
          example: 22.01.2017 11:36:22
      updateIndicator
          description: Type of order data. Original, Update or Delete
          type: string
          required: true
          example: Original
      Party/subClass OrderingParty:
          description: Details of sender. Must have Name, Street, City, CountryCode.
          required: true
      Party/subClass DeliveryParty:
          description: Details of recipient. Must have Name, Street, City, CountryCode.
          required: true
      Party/subClass Supplier:
          description: Details of supplier. Must have Name, Street, City, CountryCode if used.
          required: false
      OrderLineSet:
          description: Set of order items.
          type: sequence
          required: true
      OrderItem articleLineId:
          description: Line id for this order line.
          type: integer
          required: true
          example: 10
      ArticleId:
          description: Article number or id.
          type: string
          required: false
          example: 123-4000
      ArticleQuantity:
          description: Quantity ordered.
          type: float
          required: true
          example: 2.0
      Description:
          description: Article description / name.
          type: string
          required: true
          example: Spear parts
      Description:
          description: Article description / name.
          type: string
          required: true
          example: Spear parts
      DateAndTimes subClass DeliveryDateRequested:
          description: The date on which order is requested delivered.
          type: dateTime
          required: true
          example: 22.01.2017 11:36:22

    body:
      application/xml:
        example: !include examples/create_purchaseorder.xml
    responses:
      200:
        displayName: Success
        description: |
          Successfully created a order.

/items/{customerId}/{orderId}:
  displayName: List order items
  description: |
      List all item lines on an order.
  get:
    description: List order items
    responses:
      200:
        displayName: Success
        description: |
          List of order items.
        body:
          application/xml:
            example: !include examples/retrieve_orderitems.xml

/transport/{customerId}/{orderId}:
  displayName: List transport orders for order
  description: |
      List all transport information for this order. One order can have multiple transport orders.
  get:
    description: List transport orders for order
    responses:
      200:
        displayName: Success
        description: |
          List of transport orders for given order, if any.
        body:
          application/xml:
            example: !include examples/retrieve_packinglist.xml

/transport:
  displayName: Add packaging list
  description: |
      When an order have been picked and sent, add packing list on order with transport information.
  post:
    description: Add packaging list
    body:
      application/xml:
        example: !include examples/create_packaging_list.xml
    responses:
      200:
        displayName: Success
        description: |
          Successfully added packaging list.

/senderStatus/{customerId}/{orderId}:
  displayName: Get status for order
  description: |
      Check status for an order. Open when not fully delivered or locked when fully delivered.
  get:
    description: Get status for order
    responses:
      200:
        displayName: Success
        description: Open or Locked.
        body:
          application/xml:
            example: !include examples/check_status.xml

/event:
  displayName: Create TMSEvents
  description: |
      Create tracking events on shipments associated with orders in Order Management.
  post:
    description: Create TMSEvents
    body:
      application/xml:
        example: !include examples/create_events.xml
    responses:
      200:
        displayName: Success
        description: |
          Successfully created a new resource

/articlebalance:
  displayName: Create or update article balance list
  post:
    description: Create or update article balance list
    body:
      application/xml:
        example: !include examples/create_articlebalance.xml
    responses:
      200:
        displayName: Success
        description: |
          Successfully created balance list

/articlebalance/{customerId}/{articleNo}:
  displayName: Get stock balance and info for one article
  get:
    description: Get stock balance and info for one article
    responses:
      200:
        displayName: Success
        description: |
        body:
          application/xml:
            example: !include examples/retrieve_articlebalance_one.xml

/articlebalance/info/{customerId}/{articleSearchString}:
  displayName: Get stock balance and info for all articles matching search string
  get:
    description: Get stock balance and info for all articles matching search string
    responses:
      200:
        displayName: Success
        description: |
        body:
          application/xml:
            example: !include examples/retrieve_articlebalance_search.xml

/errorCodes:
  displayName: List error codes
  get:
    description: List error codes
    responses:
      200:
        displayName: Success
        description: |
          Dynamic list of error codes used in the solution.
        body:
          application/xml:
            example: !include examples/error_codes.xml
          application/json:
            example: !include examples/error_codes.json


Allow the examples/uriParameters test raml to render with raml2html

#%RAML 1.0
title: Consistent Examples

types:
    HasFullExamples:
        properties:
            SomeField: string
        examples:
            firstExample:
                displayName: First Example!
                description: It's the first example
                value:
                    SomeField: Uno
            secondExample:
                displayName: Second Example!
                description: It's the second example
                value:
                    SomeField: Duo

    HasJsonExample:
        properties:
            TestField: string
        example: |
            {
                "TestField": "This example is defined in JSON."
            }

    NestedExample:
        properties:
            ChildObject:
                type: Nestee
            Message:
                type: string
                example: I'm layered, bro

    Nestee:
        properties:
            HereIsANumber:
                type: number
            HereIsAString:
                type: string
        example:
            displayName: Sneaky nested example
            description: It's sneaky!
            value:
                HereIsANumber: 42
                HereIsAString: Strange strong string

/FullExamples:
    get:
        responses:
            200:
                body:
                    application/json:
                        type: HasFullExamples

/JsonExample:
    get:
        responses:
            200:
                body:
                    application/json:
                        type: HasJsonExample

/HeaderExample:
    get:
        headers:
            X-MyImportantHeader:
                type: string
                example: Very Important
            X-MyDescriptiveHeader:
                type: string
                example:
                    displayName: Baloon Assertion
                    description: This descriptive header example
                    value: Red baloons are known to be the colour red.

/UriExample/{Id}/{Mood}:
    uriParameters:
        Id:
            type: string
            example: ABC123
        Mood:
            type: string
            example:
                displayName: How are ya
                description: ARE YOU ANGRY
                value: Serene.
    get:

/QueryParamsExample:
    get:
        queryParameters:
            Temperature:
                type: number
                description: In celsius you savages
                example:
                    displayName: Comfortable
                    description: Best combined with a sunny day
                    value: 24

/NestedExample:
    get:
        responses:
            200:
                body:
                    application/json:
                        type: NestedExample

#%RAML 1.0
title: Consistent Examples

types:
    HasFullExamples:
        properties:
            SomeField: string
        examples:
            firstExample:
                displayName: First Example!
                description: It's the first example
                value:
                    SomeField: Uno
            secondExample:
                displayName: Second Example!
                description: It's the second example
                value:
                    SomeField: Duo

    HasJsonExample:
        properties:
            TestField: string
        example: |
            {
                "TestField": "This example is defined in JSON."
            }

    NestedExample:
        properties:
            ChildObject:
                type: Nestee
            Message:
                type: string
                example: I'm layered, bro

    Nestee:
        properties:
            HereIsANumber:
                type: number
            HereIsAString:
                type: string
        example:
            displayName: Sneaky nested example
            description: It's sneaky!
            value:
                HereIsANumber: 42
                HereIsAString: Strange strong string

/FullExamples:
    get:
        responses:
            200:
                body:
                    application/json:
                        type: HasFullExamples

/JsonExample:
    get:
        responses:
            200:
                body:
                    application/json:
                        type: HasJsonExample

/HeaderExample:
    get:
        headers:
            X-MyImportantHeader:
                type: string
                example: Very Important
            X-MyDescriptiveHeader:
                type: string
                example:
                    displayName: Baloon Assertion
                    description: This descriptive header example
                    value: Red baloons are known to be the colour red.

/UriExample/{Id}/{Mood}:
    uriParameters:
        Id:
            type: string
            example: ABC123
        Mood:
            type: string
            example:
                displayName: How are ya
                description: ARE YOU ANGRY
                value: Serene.

/QueryParamsExample:
    get:
        queryParameters:
            Temperature:
                type: number
                description: In celsius you savages
                example:
                    displayName: Comfortable
                    description: Best combined with a sunny day
                    value: 24

/NestedExample:
    get:
        responses:
            200:
                body:
                    application/json:
                        type: NestedExample


Documentation improvements in descriptions of attributes

#%RAML 1.0 Library

# Name: dd-base-types.raml
#
# Date: 2018-08-21
#
#  This file defines the basic datatypes used in the DD API and DD-OPER API.

types:
  AdditionalQuality:
    type: number
    description: Provides detailed information on specific Quality numbers.

  Aspect:
    description: A (usually mathematically derived) related variable of a specific measurement, forecast, etc.
    type: object
    properties:
      name:
        type: string
      unit:
        type: string

  AspectSet:
    description: Defines a group of related variables for a single measurement, forecast, etc.
    type: object
    properties:
      name: AspectSetName
      aspects:
        type: Aspect[]
        minItems: 0

  AspectSetName:
    description: Name of an AspectSet. If implementing systems require an aspect-filter in the request-url and it is omitted, "default" is taken.
    type: string
    example: "MinimumMaximumAverage"

  AspectPointsValue:
    description: Object used for Event.Aspect.Points. Specifies the values in the list of points for one of the aspects in an AspectSet.
    type: object
    properties:
      name:
        type: string
        description: Name of the aspect.
      points: PointsValue[]

  AspectValue:
    description: Object used for Event.Aspect[] results. Specifies the value for one of the aspects in an AspectSet.
    type: object
    properties:
      name:
        type: string
        description: Name of the aspect.
      value:
        description: The value of the measured or computed data.
        type: ValueType
      limitSymbol?:
        description: Specifies that the value is e.g. higher (or lower) then the value in "value". Known limitSymbols are "<", ">", "<=", ">="
        type: string
      quality?:
        type: Quality
      additionalQuality?:
        type: AdditionalQuality

  BoundingBox:
    description: The specification of a bounding box using the longitude and latitude of the most SouthWest point followed by the most NorthEast points (GeoJSON).
    type: Double[]
    minItems: 4
    maxItems: 4
    examples:
      -bbox: [ 4.123456, 52.123456, 10.123456, 55.123456 ]

  Double:
    description: A value of type Double.
    type: number
    format: double

  EndTime:
    type: datetime
    example: 2018-01-01T00:00:00Z
    description:  The End date/time of the time series, or the End date/time of the interval for an individual value in the series. Uses the UCT (Zulu) notation.
      The endtime is exlusive, hence the requested period ends just before the given time.
      2018-01-01T00:00:00Z - 2018-01-01T00:00:10Z specifies a 10 minute period starting at midnight and
      ending at 2018-01-01T00:09:59.99999Z

  Error:
    description:  Error response in line with RFC7807. Although both optional the minimum information that should be given are the title and status.
    type: object
    properties:
      type?:
        description: Type of error.
        type: Url
      title?:
        description: Title of the error.
        type: string
      status?:
        type: integer
        description: The HTTP errrocode number.
      detail?:
        description: Details of the error
        type: string
      instance?:
        description: Reference to the error for the provider.
        type: string | nil
        # Additional fields, RFC7807 extension
      errors?:
        description: Error details. More than one error can occur within the problem.
        type: FilterError[]
      typeinfo?:
        description: Link to information on the type of error.  ??? Why not use 'type'. is link according RFC7807
        type: string | nil

  Event:
    description: In case of scalar time series the event contains time stamp and value, optionally extended with
      an interval specification (startTime/endTime/resultTime), and a quality indicator (quality, additionalQuality).
      In case of a time series with aspects and/or with values on multiple points, the events contains object for the aspects and/or points.
    type: object
    properties:
      timeStamp?:
        description: Timestamp of the occurrence of the event.
        type: datetime
      startTime?:
        description: Start time.
        type: StartTime
      endTime?:
        description: End time.
        type: EndTime
      resultTime?:
        description: Result time.
        type: datetime
      value?:
        description: The measured or computed value for a scalar value, i.e. in case there are no aspects and/or multiple points per event.
        type: ValueType
      limitSymbol?:
        description: Specifies that the value is e.g. higher (or lower) then the value in "value". Known limitSymbols are "<", ">", "<=", ">="
        type: string
      quality?:
        description: Indicator for the quality of the measured or computed value in the 'value' attribute.
        type: Quality
      additionalQuality?:
        description: Additional information on the value in the 'quality' attribute.
        type: AdditionalQuality
      aspects?:
        type: AspectValue[] | AspectPointsValue []
        description: When the time series contains aspects the value/quality/unit are given in an object for each aspect or aspect+point.
      points?:
        type: PointsValue[]
        description: When the time series contains multiple points the value/quantity/unit are given in an object for each point.

  Filter:
    type: string
    description: Defines a query filter. TODO: describe syntax.

  FilterError:
    type: object
    description: Defines the field of an error in the filtering syntax.
    properties:
      errorType:
        type: string
      context:
        type: string

  Geometry:
    description: A geometry in GeoJSON format. Digital Delta currently formally only
      supports the Point and MultiPoint types. However, implementations may choose
      to also provide time series on a Polygon
    type: object
    properties:
      type:
        description: The geometry type. Must have the value "Point" or "MultiPoint".
        type: string
        example: "Point"
      coordinates?:
        description: An array of doubles, representing a longitude, a latitude and optionally an altitude.
        type: Position | Positions
        examples:
          -point:  [4.234 , 5.23423]
          -multipoint:  [[4.2, 52.0], [3.2, 52.3,0]]

  Identifier:
    type: string
    description: An identifier can be anything expressed by a string.

  Institution:
    type: object
    properties:
      name:
        type: string
        description: The name of the institution that produced and/or owns the data
      description?:
        type: string
        description: Additional description of the institution

# IntervalLength is not required as object since it is only used as query parameter
  IntervalLength:
    type: string
    description: Interval length of the sequence.
    default: 10min

  Location:
    description: Generic DD API 2.0 Location object, structured according to GeoJSON. Most attributes are optional, since the content returned in the response depends on whether it is a /dd or a /dd-oper request. Location attributes are placed within the properties group of the GeoJSON  object.
    properties:
      type:
        description: Type of GeoJSON object. In the DD-API the only allowed type is "Feature".
        type: string
        enum: ["Feature"]
      geometry:
        description: The coordinate(s) of the Location are placed within the "geometry" section of the GeoJSON object. DD-API uses Point and Multi-Point locations, but is not restricted to these two.
        type: Geometry | nil
      properties?:
        description: The attributes of the Location object are placed within the properties group of the GeoJSON object.
        type: object
        properties:
          url?:
            description: Url describing the location object. (Not provided in case of /dd-oper requests.)
            type: string
          node?:
            description: Specification of the node where the location is stored.
            type: Node
          locationId?:
            description: Id of the location.
            type: string
          locationCode?:
            description: Code of the location.
            type: string
          locationName?:
            description: Name of the location.
            type: LocationName
          referenceLevel?:
            description: GeoJSON element. Specifies the reference plane for the altitude coordinates (third). For example "NAP".
            type: string
          crs?:
            description: GeoJSON element. According to GeoJSON the coordinate reference system element is only included when it is not "WGS84" (default).
            type: string
          locationNameSpace?:
            description: Location name space.
            type: LocationNameSpace
          displayNameDetail?:
            type: LocationName
            description: Remark: Only used in DD-OPER response.
          displayNameGlobal?:
            type: LocationName
            description: Remark: Only used in DD-OPER response.
          displayNameSpace?:
            type: LocationNameSpace
            description: Remark: Only used in DD-OPER response.
          parentName?:
            type: LocationName
            description: Remark: Only used in DD-OPER response.

  LocationName:
    type: string
    example: "Hoek-van-Holland"

  LocationNameSpace:
    type: string
    example: "NL.RWS.WM"

  Node:
    description: Node objects contain the properties of the DD-node that contains the data. A node is an operational implementation of the Digital Delta specification.
    type: object
    properties:
      id?:
        description: Id of the node.
        type: Identifier
      name:
        type: string
        description: The name of the node.
      description?:
        type: string
        description: The description of the node.
      baseUrl?:
        type: string
        description: The base URL of the node.

  ObservationType:
    description: Generic DD API 2.0 quantity/parameter object. The DD-OPER API response returns a subset of the attributes.
    type: object
    properties:
      id?:
        description: Id of the observation type.
        type: Identifier
      url?:
        description: The provider's URL for the time series.
        type: Url
      node?:
        description: Reference to the DD-node that contains the data of the time series.
        type: Node
      quantity?:
        description: Quantity (grootheid) of the observation type.
        type: string
      parameterCode?:
        description: Parameter code specifying the observationtype. Non-biological observation types follow the Aquo standards.
        type: string
      description?:
        description: Description of the observation type.
        type: string
      unit?:
        description: (Measurement) unit of the observation type.
        type: string
      compartment?:
        description: The compartment in which the measurement/computation is available. Standardised Aquo compartments.
        type: string
        example:  OW, DL, GW, LW
      quantityName?:
        description: Composed name of the quantity(.parameterCode) that was measured or computed.
          Remark: Only used in DD-OPER response.
        type: QuantityName
      aspectSet?:
        description: Optional, currently only provided and used by RWS.
        type: AspectSet

  PageLinks:
    description: The object contains urls and page size information to support back and forward paging
    type: object
    properties:
      totalObjectCount?:
        description: The actual number of objects available. When paging is used the response contains a subset of the total obejcts available up to the max page size.
        type: integer
      maxPageSize?:
        description: Maximum number of objects in the response. Defined by the Provider of the response.
        type: PageSize
      minPageSize?:
          description: Minimum number of objects in the response. Defined by the Provider of the response.
          type: PageSize
          minimum: 1
      self?:
        description: Url of the current request.
        type: Url | nil
      first?:
        description: Url to the first page of the result set.
        type: Url | nil
      prev:
        description: Url to the previous page of the result set.
        type: Url | nil
      next:
        description: Url to the next page of the result set.
        type: Url | nil
      last?:
        description: Url to the last page of the result set.
        type: Url | nil

  PageNumber:
    description: Page number in case the response is seprated in different pages.
    type: integer
    minimum: 1
    example: 1

  PageSize:
    description: Number of result objects per a single response page. Used for minimum, maximum and/or actual.
    type: integer
    minimum: 1
    maximum: 10000
    example: 10

  PointsValue:
    type: object
    properties:
      coordinates: Position
      value:
        description: The value of the measured or computed data.
        type: ValueType
      limitSymbol?:
        description: Specifies that the value is e.g. higher (or lower) then the value in "value". Known limitSymbols are "<", ">", "<=", ">="
        type: string
      quality?:
        description: Indicator for the quality of the measured or computed value in the 'value' attribute.
        type: Quality
      additionalQuality?:
        description: Additional information on the value in the 'quality' attribute.
        type: AdditionalQuality

  Position:
    description: |
      A location specified in an array with longitude, lattitude and optional altitude.
    type: Double[]
    minItems: 2
    maxItems: 3
    example: [4.234 , 5.23423]

  Positions:
    description: An array of Positions to specify a MultiPpoint location.
    type: Position[]
    minItems: 0
    examples:
      -multipoint: [[4.2, 52.0], [3.2, 52.3,0]]

  ProcessName:
    type: string
    description: The name of the mechanism to collect/derive the time series value.
      When accessing RWS' DD-API, providing a processName as query parameter is required. The process names are pre-defined (see examples).
      Extending the processname with a suffix, referencing a more detailed mechanism like a specific calculation model, is not allowed.
      Other implementions dot need to implement this query-parameter.
    example: measurement, forecast, astronomical, advise

  Provider:
    type: object
    description: Information regarding the system that is responible for the response.
      Provides support contact information in case there are issues with response format or content.
    properties:
      name?:
        description: Name of the provider (of the service).
        type: string
      supportUrl?:
        description: Url to information for the provider (of the service).
        type: string
      apiVersion?:
        description: API Version with which the result set was generated. Can be used to parse the response.
        type: string
      responseType?:
        description: Name of the type of the result set. Can be used to parse the response.
        type: string
      responseTimestamp?:
        type: Timestamp
        description: Timestamp when this response was created.

  Quality:
    description: Defines the quality of the result (confidence).
    type: number

  QuantityName:
    type: string
    description: A name referencing a category of time series. The quantity names are predefined.
      For example 'WaterLevel', 'WaterTemperature', 'WaveHeight'.
      Remark: Only used in DD-OPER
    example: WaterLevel

  Source:
    description: Describes the type of data in the time series, and the owner of the data.
    type: object
    properties:
      process:
        description: Name of the process.
        type: ProcessName
      name?:
        type: SourceName
        description: A name describing the source, e.g. a model name.
      description?:
        type: string
        description: Additional description of the data source (might contain a URL to a site with information on the model).
      realizationCount?:
        type: integer
        description: if present, and larger then 1, the results are part of an ensemble run
      institution:
        type: Institution

  SourceName:
    type: string
    description: A name describing the source, e.g. a model name
    example: rws_prediction

  StartTime:
    type: datetime
    example: 2016-01-01T12:45:00Z
    description:  Start date/time of the time series, or the Start date/time of the interval for an individual value in the series. Uses the UCT (Zulu) notation.

  Timeseries:
    description: Generic DD API 2.0 time series object. The DD-OPER API response returns a subset of the attributes.
    type: object
    properties:
      node?:
        description: Reference to the DD-node that contains the data of the time series.
        type: Node
      url?:
        description: The provider's URL for the time series.
        type: string
      id?:
        description: The IdL of the time series.
        type: Identifier
      source:
        description: Source of the time series.
        type: Source
      location:
        description: Location of the time series.
        type: Location
      observationType:
        description: Observation type of the time series (concentration, parameter, etc.).
        type: ObservationType
      startTime:
        description: Start date-time of the time series (the first timestamp/value pair available in the series).
        type: datetime
      endTime:
        description: End date-time of the time series (the last timestamp/value pair available in the series).
        type: datetime
      analysisTime?:
        description: Analysis date-time of the time series.
        type: datetime
      realization?:
        description: Realization count.
        type: number
      intervalLength?:
        description: Specifies the interval between events in the time series. If present and set to 'null', the time series is non-equidistant. TODO: decide on options for units.
        type: number
      valueType?:
        description: The data type of the measured or computed data (double, integer, categorized).
        type: string
      events?:
        type: Event[]
        description: If no startTime and no endTime are provided in the /time series-query, only meta-data is provided,
          so the events are not present.

  Timestamp:
    type: string
    description: Date and time in format "yyyy-mmm-ddThh:mm:ss.ffffffZ"  (UTC Zulu with minimal 3 digits of fractional seconds)
    example: "2018-07-05T15:11:36.123Z, 2018-07-05T15:11:36.123456Z, 2018-07-05T15:11:36.000Z"
    minLength: 24

  ValueType:
    type: number | string
    description: The type of values in the time series ('string' in case of categorized values, like 'natuurlijk' vs 'aangelegd').

  Url:
    type: string
    description: Correctly formatted url reference.

  Uuid:
    type: string
    pattern: "[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}"
    description: Unique identifier for the datasource. Version 4.
    example: 978fdf5c-95c8-43a5-82ff-d27d9e6d685f

#%RAML 1.0 Library

# Name: dd-base-types.raml
#
# Date: 2018-08-21
#
#  This file defines the basic datatypes used in the DD API and DD-OPER API.

types:
  AdditionalQuality:
    type: number
    description: Provides detailed information on specific Quality numbers.

  Aspect:
    description: A (usually mathematically derived) related variable of a specific measurement, forecast, etc.
    type: object
    properties:
      name:
        type: string
      unit:
        type: string

  AspectSet:
    description: Defines a group of related variables for a single measurement, forecast, etc.
    type: object
    properties:
      name: AspectSetName
      aspects:
        type: Aspect[]
        minItems: 0

  AspectSetName:
    description: Name of an AspectSet. If implementing systems require an aspect-filter in the request-url and it is omitted, "default" is taken.
    type: string
    example: "MinimumMaximumAverage"

  AspectPointsValue:
    description: Object used for Event.Aspect.Points. Specifies the values in the list of points for one of the aspects in an AspectSet.
    type: object
    properties:
      name:
        type: string
        description: Name of the aspect.
      points: PointsValue[]

  AspectValue:
    description: Object used for Event.Aspect[] results. Specifies the value for one of the aspects in an AspectSet.
    type: object
    properties:
      name:
        type: string
        description: Name of the aspect.
      value: ValueType
      limitSymbol?:
        description: Specifies that the value is e.g. higher (or lower) then the value in "value". Known limitSymbols are "<", ">", "<=", ">="
        type: string
      quality?:
        type: Quality
      additionalQuality?:
        type: AdditionalQuality

  BoundingBox:
    description: The specification of a bounding box using the longitude and latitude of the most SouthWest point followed by the most NorthEast points (GeoJSON).
    type: Double[]
    minItems: 4
    maxItems: 4
    examples:
      -bbox: [ 4.123456, 52.123456, 10.123456, 55.123456 ]

  Double:
    description: A value of type Double.
    type: number
    format: double

  EndTime:
    type: datetime
    example: 2018-01-01T00:00:00Z
    description:  The End date/time of the timeseries, or the End date/time of the interval for an individual value in the series. Uses the UCT (Zulu) notation.
      The endtime is exlusive, hence the requested period ends just before the given time.
      2018-01-01T00:00:00Z - 2018-01-01T00:00:10Z specifies a 10 minute period starting at midnight and
      ending at 2018-01-01T00:09:59.99999Z

  Error:
    description:  Error response in line with RFC7807. Although both optional the minimum information that should be given are the title and status.
    type: object
    properties:
      type?:
        description: Type of error.
        type: Url
      title?:
        description: Title of the error.
        type: string
      status?:
        type: integer
        description: The HTTP errrocode number.
      detail?:
        description: Details of the error
        type: string
      instance?:
        description: Reference to the error for the provider.
        type: string | nil
        # Additional fields, RFC7807 extension
      errors?:
        description: Error details. More than one error can occur within the problem.
        type: FilterError[]
      typeinfo?:
        description: Link to information on the type of error.  ??? Why not use 'type'. is link according RFC7807
        type: string | nil

  Event:
    description: In case of scalar time series the event contains time stamp and value, optionally extended with
      an interval specification (startTime/endTime/resultTime), and a quality indicator (quality, additionalQuality).
      In case of a timeseries with aspects and/or with values on multiple points, the events contains object for the aspects and/or points.
    type: object
    properties:
      timeStamp?:
        description: Timestamp of the occurrence of the event.
        type: datetime
      startTime?:
        description: Start time.
        type: StartTime
      endTime?:
        description: End time.
        type: EndTime
      resultTime?:
        description: Result time.
        type: datetime
      value?:
        description: The value (and optionally a 'quality' and 'additionalQuality' indicators) for a scalar event, i.e. in case there are no aspects and/or multiple points per event.
        type: ValueType
      limitSymbol?:
        description: Specifies that the value is e.g. higher (or lower) then the value in "value". Known limitSymbols are "<", ">", "<=", ">="
        type: string
      quality?:
        description: See description at 'value' attribute.
        type: Quality
      additionalQuality?:
        description: See description at 'value' attribute.
        type: AdditionalQuality
      aspects?:
        type: AspectValue[] | AspectPointsValue []
        description: When the time series contains aspects the value/quality/unit are given in an object for each aspect or aspect+point.
      points?:
        type: PointsValue[]
        description: When the time series contains multiple points the value/quantity/unit are given in an object for each point.

  Filter:
    type: string
    description: Defines a query filter. TODO: describe syntax.

  FilterError:
    type: object
    description: Defines the field of an error in the filtering syntax.
    properties:
      errorType:
        type: string
      context:
        type: string

  Geometry:
    description: A geometry in GeoJSON format. Digital Delta currently formally only
      supports the Point and MultiPoint types. However, implementations may choose
      to also provide time series on a Polygon
    type: object
    properties:
      type:
        description: The geometry type. Must have the value "Point" or "MultiPoint".
        type: string
        example: "Point"
      coordinates?:
        description: An array of doubles, representing a longitude, a latitude and optionally an altitude.
        type: Position | Positions
        examples:
          -point:  [4.234 , 5.23423]
          -multipoint:  [[4.2, 52.0], [3.2, 52.3,0]]

  Identifier:
    type: string
    description: An identifier can be anything expressed by a string.

  Institution:
    type: object
    properties:
      name:
        type: string
        description: The name of the institution that produced and/or owns the data
      description?:
        type: string
        description: Additional description of the institution

# IntervalLength is not required as object since it is only used as query parameter
  IntervalLength:
    type: string
    description: Interval length of the sequence.
    default: 10min

  Location:
    description: Generic DD API 2.0 Location object, structured according to GeoJSON. Most attributes are optional, since the content returned in the response depends on whether it is a /dd or a /dd-oper request. Location attributes are placed within the properties group of the GeoJSON  object.
    properties:
      type:
        description: Type of GeoJSON object. In the DD-API the only allowed type is "Feature".
        type: string
        enum: ["Feature"]
      geometry:
        description: The coordinate(s) of the Location are placed within the "geometry" section of the GeoJSON object. DD-API uses Point and Multi-Point locations, but is not restricted to these two.
        type: Geometry | nil
      properties?:
        description: The attributes of the Location object are placed within the properties group of the GeoJSON object.
        type: object
        properties:
          url?:
            description: Url describing the location object. (Not provided in case of /dd-oper requests.)
            type: string
          node?:
            description: Specification of the node where the location is stored.
            type: Node
          locationId?:
            description: Id of the location.
            type: string
          locationCode?:
            description: Code of the location.
            type: string
          locationName?:
            description: Name of the location.
            type: LocationName
          referenceLevel?:
            description: GeoJSON element. Specifies the reference plane for the altitude coordinates (third). For example "NAP".
            type: string
          crs?:
            description: GeoJSON element. According to GeoJSON the coordinate reference system element is only included when it is not "WGS84" (default).
            type: string
          locationNameSpace?:
            description: Location name space.
            type: LocationNameSpace
          displayNameDetail?:
            type: LocationName
            description: Remark, Only used in dd-oper response.
          displayNameGlobal?:
            type: LocationName
            description: Remark, Only used in dd-oper response.
          displayNameSpace?:
            type: LocationNameSpace
            description: Remark, Only used in dd-oper response.
          parentName?:
            type: LocationName
            description: Remark, Only used in dd-oper response.

  LocationName:
    type: string
    example: "Hoek-van-Holland"

  LocationNameSpace:
    type: string
    example: "NL.RWS.WM"

  Node:
    description: Node objects contain the properties of the data node. A node is an operational implementation of the Digital Delta specification.
    type: object
    properties:
      id?:
        description: Id of the node.
        type: Identifier
      name:
        type: string
        description: The name of the node.<br/>
      description?:
        type: string
        description: The description of the node.
      baseUrl?:
        type: string
        description: The base URL of the node.

  ObservationType:
    description: Generic DD API 2.0 parameter object. DD-OPER API response returns a subset of the attributes.
    type: object
    properties:
      id?:
        description: Id of the observation type.
        type: Identifier
      url?:
        description: Url with details.
        type: Url
      node?:
        description: Reference to the node.
        type: Node
      quantity?:
        description: Quantity (grootheid) of the observation type.
        type: string
      parameterCode?:
        description: Parameter code specifying the observationtype. Non-biological observation types follow the Aquo standards.
        type: string
      description?:
        description: Description of the observation type.
        type: string
      unit?:
        description: (Measurement) unit of the observation type.
        type: string
      compartment?:
        description: The compartment in which the measurement/computationt is available. Standardised Aquo compartments.
        type: string
        example:  OW, DL, GW, LW
      quantityName?:
        description: Composed name of the quantity(.parameterCode) that was measured or computed.
          Remark Only used in dd-oper response.
        type: QuantityName
      aspectSet?:
        description: Optional, currently only provided and used by RWS.
        type: AspectSet

  PageLinks:
    description: The object contains urls and page size information to support back and forward paging
    type: object
    properties:
      totalObjectCount?:
        description: The actual number of objects available. When paging is used the response contains a subset of the total obejcts available up to the max page size.
        type: integer
      maxPageSize?:
        description: Maximum number of objects in the response. Defined by the Provider of the response.
        type: PageSize
      minPageSize?:
          description: Minimum number of objects in the response. Defined by the Provider of the response.
          type: PageSize
          minimum: 1
      self?:
        description: Url of the current request.
        type: Url | nil
      first?:
        description: Url to the first page of the result set.
        type: Url | nil
      prev:
        description: Url to the previous page of the result set.
        type: Url | nil
      next:
        description: Url to the next page of the result set.
        type: Url | nil
      last?:
        description: Url to the last page of the result set.
        type: Url | nil

  PageNumber:
    description: Page number in case the response is seprated in different pages.
    type: integer
    minimum: 1
    example: 1

  PageSize:
    description: Number of result objects per a single response page. Used for minimum, maximum and/or actual.
    type: integer
    minimum: 1
    maximum: 10000
    example: 10

  PointsValue:
    type: object
    properties:
      coordinates: Position
      value:
        description: The 'value', 'quality' and 'additionalQuality' can be returned at this level (Event object) in case the AspectSet and/or Point nestings would be redundant and introduce unnecesssary levels in the response
        type: ValueType
      limitSymbol?:
        description: Specifies that the value is e.g. higher (or lower) then the value in "value". Known limitSymbols are "<", ">", "<=", ">="
        type: string
      quality?:
        description: See also value attribute.
        type: Quality
      additionalQuality?:
        description: See also value attribute.
        type: AdditionalQuality

  Position:
    description: |
      A location specified in an array with longitude, lattitude and optional altitude.
    type: Double[]
    minItems: 2
    maxItems: 3
    example: [4.234 , 5.23423]

  Positions:
    description: An array of Positions to specify a MultiPpoint location.
    type: Position[]
    minItems: 0
    examples:
      -multipoint: [[4.2, 52.0], [3.2, 52.3,0]]

  ProcessName:
    type: string
    description: The name of the mechanism to collect/derive the timeseries value.
      When accessing RWS' DD-API, providing a processName as query parameter is required. The process names are pre-defined (see examples).
      Extending the processname with a suffix, referencing a more detailed mechanism like a specific calculation model, is not allowed.
      Other implementions dot need to implement this query-parameter.
    example: measurement, forecast, astronomical, advise

  Provider:
    type: object
    description: Information regarding the system that is responible for the response.
      Provides support contact information in case there are issues with response format or content.
    properties:
      name?:
        description: Name of the provider (of the service).
        type: string
      supportUrl?:
        description: Url to information for the provider (of the service).
        type: string
      apiVersion?:
        description: API Version with which the result set was generated. Can be used to parse the response.
        type: string
      responseType?:
        description: Name of the type of the result set. Can be used to parse the response.
        type: string
      responseTimestamp?:
        type: Timestamp
        description: Timestamp when this response was created.

  Quality:
    description: Defines the quality of the result (confidence).
    type: number

  QuantityName:
    type: string
    description: A name referencing a category of timeseries. The quantity names are predefined.
      For example 'WaterLevel', 'WaterTemperature', 'WaveHeight'.
    example: WaterLevel

  Source:
    description: Describes the type of data in the time series, and the owner of the data.
    type: object
    properties:
      process:
        description: Name of the process.
        type: ProcessName
      name?:
        type: SourceName
        description: A name describing the source, e.g. a model name.
      description?:
        type: string
        description: Additional description of the data source (might contain a URL to a site with information on the model).
      realizationCount?:
        type: integer
        description: if present, and larger then 1, the results are part of an ensemble run
      institution:
        type: Institution

  SourceName:
    type: string
    description: A name describing the source, e.g. a model name
    example: rws_prediction

  StartTime:
    type: datetime
    example: 2016-01-01T12:45:00Z
    description:  Start date/time of the timeseries, or the Start date/time of the interval for an individual value in the series. Uses the UCT (Zulu) notation.

  Timeseries:
    description: Generic DD API 2.0 timeseries object.DD API 'OPER' response returns a subset of the attributes.
    type: object
    properties:
      node?:
        description: Reference to the Node.
        type: Node
      url?:
        description: URL of the time series.
        type: string
      id?:
        description: IdL of the time series.
        type: Identifier
      source:
        description: Source of the time series.
        type: Source
      location:
        description: Location of the time series.
        type: Location
      observationType:
        description: Observation type of the time series (concentration, parameter, etc.).
        type: ObservationType
      startTime:
        description: Start date-time of the time series.
        type: datetime
      endTime:
        description: End date-time of the time series.
        type: datetime
      analysisTime?:
        description: Analysis date-time of the time series.
        type: datetime
      realization?:
        description: Realization count.
        type: number
      intervalLength?:
        description: Specifies the interval between events in the timeseries. If present and set to 'null', the time series is non-equidistant. TODO: decide on options for units.
        type: number
      valueType?:
        description: The data type of the measured or computed data (double, integer, categorized).
        type: string
      events?:
        type: Event[]
        description: If no startTime and no endTime are provided in the /timeseries-query, only meta-data is provided,
          so the events are not present.

  Timestamp:
    type: string
    description: Date and time in format "yyyy-mmm-ddThh:mm:ss.ffffffZ"  (UTC Zulu with minimal 3 digits of fractional seconds)
    example: "2018-07-05T15:11:36.123Z, 2018-07-05T15:11:36.123456Z, 2018-07-05T15:11:36.000Z"
    minLength: 24

  ValueType:
    type: number | string
    description: The type of values in the time series ('string' in case of categorized values, like 'natuurlijk' vs 'aangelegd').

  Url:
    type: string
    description: Correctly formatted url reference.

  Uuid:
    type: string
    pattern: "[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}"
    description: Unique identifier for the datasource. Version 4.
    example: 978fdf5c-95c8-43a5-82ff-d27d9e6d685f