# Restrictions

The latest implementation of the OpenAPI Specifications in Talend Data Mapper includes some limitations.

## Unsupported features

* Objects that mix properties and additionalProperties are unsupported. See the following example:

  ```
  schemas:
          Coord:
            type: object
            properties:
              latitude:
                type: number
              longitude:
                type: number
            additionalProperties:
              type: number
  ```

* The multipleOf keyword is ignored as a constraint on a property. See the following example:

  ```
  schema:
            type: array
            items:
              type: integer
              multipleOf: 2
  ```

  Talend Data Mapper ignores the restriction.

* The default values in properties are ignored as seen in the following schema:

  ```
  schema:
            type: object
            properties:
               a:
                 type: string
                 default: Hello
  ```

  The value Hello will not be imported as the default value of the element a.

* The nullable keyword is ignored in the schema as seen in the following example:

  ```
  schema:
            type: array
            items:
              type: string
              nullable: true
  ```

  The nullable attribute is not imported.

* Objects with any properties are unsupported. In the OpenAPI, the additionalProperties keyword can be used with a boolean value. The semantic is then different from a map of key or value pairs, and indicates that any additional property is accepted.

  Talend Data Mapper does not have the concept of an open structure when additional elements can appear at runtime (dynamic schema). In a similar way, the properties defined as such are ignored:

  ```
  "PutResourceAttributesResult": {
        "properties": {},
        "type": "object"
      },
      "headers" : { }
  ```

* The OpenAPI Specifications 3.0 describes an [extension mechanism](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#specificationExtensions), which is unsupported in Talend Data Mapper.

* The not keyword, as seen in the following code example, is unsupported in Talend Data Mapper:

  ```
  PetByAge:
        type: object
        properties: 
          age: 
            type: integer
          nickname: 
            not:
              type: integer
        required:
          - age
  ```

## Known issue

The support for OpenAPI 3.0 includes constructs based on the JSON Schema AnyOf and OneOf, which are translated into Choice elements by Talend Data Mapper. When these Choice elements are children elements (not top-level elements), the Talend Data Mapper Readers and Writers, including JSON, handle the elements properly. However, when such Choice elements are top-level elements or root elements of a Structure, the Talend Data Mapper Readers and Writers, including JSON, result into a parsing or writing data failure.