# 制限

Talend Data MapperにおけるOpenAPIの最新仕様の実装には、制限がいくつかあります。

## サポートされていない機能

* propertiesとadditionalPropertiesが混在するオブジェクトはサポートされていません。次の例をご覧ください。

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

* プロパティ上でmultipleOfキーワードは制約として無視されます。次の例をご覧ください。

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

  Talend Data Mapperでは制約が無視されます。

* 次のスキーマに示すように、properties内のデフォルト値は無視されます。

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

  値Helloは、エレメントaのデフォルト値としてインポートされません。

* 次の例に示すようにnullableキーワードはスキーマ内で無視されます。

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

  nullable属性はインポートされません。

* プロパティのあるオブジェクトはサポートされません。OpenAPIでは、additionalPropertiesキーワードをブール値と一緒に使用できます。その場合、セマンティックはキーまたは値のペアのマップとは異なり、追加のプロパティが受け入れられることが示されます。

  実行時に追加のエレメントが表示されることがある場合(ダイナミックスキーマ)、Talend Data Mapperにはopenストラクチャーのコンセプトがありません。同様に、そのように定義されているプロパティは無視されます。

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

* OpenAPI Specifications 3.0で説明されている[拡張機能](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#specificationExtensions) (英語のみ)は、Talend Data Mapperでサポートされていません。

* 次のコード例で示されているように、Talend Data Mapperではnotというキーワードがサポートされていません。

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

## 既知の問題

OpenAPI 3.0のサポートにはJSONスキーマであるAnyOfとOneOfに基づく構成が含まれています。これらのスキーマはTalend Data MapperによってChoiceエレメントに変換されています。これらのChoiceエレメントが子エレメントである(トップエレメントでない)場合、JSONを含むTalend Data Mapperリーダーとライターはエレメントを正しく処理します。ただし、Choiceエレメントがストラクチャーのトップレベルエレメントまたはルートエレメントである場合、JSONを含むTalend Data Mapperリーダーとライターは、データの解析または書き込みに失敗します。