Cloud Software Group, Inc. EBX®
ドキュメント > 開発者ガイド > REST データサービス > JSON 形式
ナビゲーションモードドキュメント > 開発者ガイド > REST データサービス > JSON 形式

拡張形式

はじめに

JSON 拡張形式は、マスターデータ、技術情報、およびメタデータを取得するために使用されます。検証、並べ替えなどのいくつかの機能を含めることができるように拡張された方法で設計されています。拡張形式をアクティブにするには、dataform-data などのサフィックスのない REST カテゴリを URL で使用する必要があります。

グローバル構造

JSON リクエスト本文

リクエストの本文は JSON オブジェクトで表され、その内容は操作とカテゴリによって異なります。

データカテゴリ

リクエストの本文には、マスターデータ値を保持する content プロパティが少なくとも含まれています。

リクエストで言及できるのは書き込み可能なフィールドのみです。これには、次の場合は含まれません。

JSON 応答本文

応答の本文は JSON オブジェクトで表され、その内容は操作とカテゴリによって異なります。

データカテゴリ

Select 操作には、2 つの異なる部分が含まれます。

meta という名前の最初のものには、応答の完全な構造が含まれています。

2 番目の contentrowspagination... などの再グループ化には、リクエストに対応する値が含まれています。

注意

ノード、レコードとフィールド、プロパティと値は、解決された権限 (権限を参照) に応じて非表示になる場合があります。

メタモデル

このセクションは、includeMetamodel パラメーターを使用してオンデマンドでアクティブ化できます。content セクションの構造と JSON タイプについて説明します。

このセクションは、Select 操作ではデフォルトで無効になっています。

以下も参照してください。

テーブルの構造

テーブルメタモデルは、次のプロパティを持つ JSON オブジェクトで表されます。

JSON プロパティ

JSON 形式

説明

必須

name

String

モデルで定義されている許可されたテーブルの名前を指定します。

はい

label

String

テーブルのラベルを指定します。未定義の場合、スキーマノードの名前が返されます。

はい

description

String

テーブルの説明を指定します。

いいえ

type

String

ノードのタイプを指定します。値は常に table と等しくなります。

はい

minOccurs

Number

許可された最小レコード数を指定します。

はい

maxOccurs

Number または String

許可された最大レコード数または unbounded を指定します。

はい

history

Boolean

テーブルの内容を履歴化するかどうかを指定します。履歴がアクティブ化されている場合、その値は true であり、それ以外の場合は false です。

以下も参照してください。

いいえ

primaryKeyFields

Array

パスの配列として表される主キーの構成を指定します。

はい

inheritance

Boolean

テーブルのデータセット継承をアクティブにするかどうかを指定します。継承がアクティブになっている場合、その値は true であり、それ以外の場合は false です。

以下も参照してください。

いいえ

fields

Array

フィールドの配列として表されるレコードノードの直接の子を指定します。各フィールドには、サブフィールドが再帰的に含まれる場合もあります。

はい

フィールドの構造

許可された各フィールドは、次のプロパティを持つ JSON オブジェクトで表されます。

JSON プロパティ

JSON 形式

説明

必須

name

String

モデルで定義されている許可フィールドの名前を指定します。

はい

label

String

ノードのラベルを指定します。未定義の場合、スキーマノードの名前が返されます。

はい

description

String

フィールドの説明を指定します。

いいえ

type

String

フィールドのタイプを指定します。これには、単純型grouptableforeignKeyassociation などがあります。

はい

minOccurs

Number

許可された最小オカレンスの数を指定します。

はい

maxOccurs

Number または String

許可された最大オカレンスまたは unbounded の数を指定します。

はい

readOnly

Boolean

フィールドアクセス許可がデータモデルアクセスプロパティから読み取り専用として定義されているかどうかを指定します。つまり、そのデータを読み書きできるかどうかです。フィールドが読み取り専用の場合、その値は true であり、それ以外の場合は false です。

以下も参照してください。

はい

autoIncrement

Boolean

フィールドを自動インクリメントするかどうかを指定します。このプロパティは、整数フィールド型でのみ使用できます。フィールドが自動インクリメントされる場合、その値は true であり、それ以外の場合は false です。

以下も参照してください。

いいえ

checkNullInput

Boolean

ユーザー入力時に、null フィールドの制約のチェックをアクティブにするかどうかを指定します。その値は、アクティブ化されている場合は true、それ以外の場合は false です。

フィールドのプロパティ osd:checkNullInputtrue に設定されている場合、制約チェックがアクティブになります。

はい

inheritedField

Object

継承されたフィールドの値ソースに関連する情報を保持します。

{
  "inheritedField": {
    "sourceRecord": "/path/to/record", // (optional)
    "sourceNode": "./path/to/Node"
  }
}
以下も参照してください。

いいえ

foreignKey

Object

ターゲットテーブルに関連する情報を保持します。

以下も参照してください。

いいえ (*)

association

Object

関連付けテーブルに関連する情報を保持します。

以下も参照してください。

いいえ (*)

enumeration

String

フィールドが列挙値であるかどうかを指定します。可能な値は次のとおりです。

  • dynamic

  • foreignKey

  • nomenclature

  • programmatic

  • resource

  • static

以下も参照してください。

その値に従って、selector リクエストパラメーターを使用して可能な値を取得するためにフィールドを使用できるかどうかを示します。

いいえ

enumerationDependencies

JSON オブジェクトArray

メタデータ列挙の依存関係リストを指定します。externalKeydynamic、または programmatic の列挙型でのみ使用できます。

以下も参照してください。

いいえ

valueFunction

Boolean

フィールドが計算値であるかどうかを指定します。

以下も参照してください。

いいえ

linkedField

Object

リンクされたフィールドに関連する情報を保持します。

いいえ

pathInDataset

String

スキーマノードから始まる相対フィールドパスを指定します。

いいえ (**)

pathInRecord

String

テーブルノードから始まる相対フィールドパスを指定します。

いいえ (*)

filterable

Boolean

filter リクエストパラメーターを使用してレコードをフィルタリングするためにフィールドを使用できるかどうかを指定します。

いいえ (*)

hiddenFilterPolicy

String

非表示のフィルターポリシーを指定します。

可能な値は、textSearchOnlytrue、または false です。

いいえ (*)

sortable

Boolean

sort リクエストパラメーターを使用して、フィールドを並べ替え条件で使用できるかどうかを指定します。

いいえ (*)

constraints

JSON オブジェクトArray

フィールドの非プログラム制約を指定します。

以下も参照してください。

いいえ

fields

JSON オブジェクトArray

各フィールドグループの構造と入力を保持します。

いいえ

isBusinessObjectRelation

Boolean

フィールド構造が現在のテーブル内にあるのか、ビジネスオブジェクトを通じて与えられるのかを指定します。

いいえ

(*) テーブル、レコード、およびレコードフィールドの操作でのみ使用できます。

(**) データセットツリー操作でのみ使用できます。

外部キーフィールドの構造

外部キーフィールドのメタモデルは、JSON オブジェクトで表されます。

{
  "dataspace": "BAuthors",
  "dataset": "Authors",
  "tablePath": "/root/Authors",
  "details": "http://.../BAuthors/Authors/root/Authors"
}

次のプロパティを保持します。

JSON プロパティ

JSON 形式

説明

必須

dataspace

String

ターゲットデータスペースまたはスナップショット識別子を指定します。指定しない場合は、テーブルのデータスペースと同じデータスペースに対応します。

いいえ

dataset

String

ターゲットデータセットの識別子を指定します。指定しない場合は、テーブルのデータセットと同じデータセットに対応します。

いいえ

tablePath

String

ターゲットテーブルのパスを指定します。

はい

details

String

ターゲットテーブルの REST リソース URL を指定します。

以下も参照してください。

いいえ

historyDetails

String

履歴ターゲットテーブルの REST リソース URL を指定します。

以下も参照してください。

いいえ

関連付けフィールドの構造

関連フィールドのメタモデルは、JSON オブジェクトで表されます。このオブジェクトは、関連付けタイプに依存するプロパティを保持します。

次のプロパティを保持します。

JSON プロパティ

JSON 形式

説明

必須

type

String

関連付けタイプを指定します。可能な値は、tableRefInverselinkTablexpathLink です。

以下も参照してください。

はい

dataspace

String

ターゲットデータスペースまたはスナップショット識別子を指定します。指定しない場合は、テーブルのデータスペースと同じデータスペースに対応します。

いいえ

dataset

String

ターゲットデータセットの識別子を指定します。指定しない場合は、テーブルのデータセットと同じデータセットに対応します。

いいえ

tablePath

String

ターゲットテーブルのパスを指定します。

はい

details

String

ターゲットテーブルの REST リソース URL を指定します。

以下も参照してください。

いいえ

fieldToSource

String

関連付けのソーステーブルを参照するフィールドを指定します。

関連付けタイプが tableRefInverse または linkTable の場合に定義されます。

いいえ

fieldToTarget

String

ターゲットテーブルへのフィールドのパスを指定します。

関連付けタイプが linkTable の場合に定義されます。

いいえ

linkTablePath

String

リンクテーブルのパスを指定します。

関連付けタイプが linkTable の場合に定義されます。

いいえ

predicate

String

現在のノードを基準にして、関連付けの基準を指定します。

関連付けタイプが xpathLink の場合に定義されます。

いいえ

filter

String

関連するオブジェクトをフィルタリングするための XPath 述語式を指定します。

いいえ

リンクされたフィールドの構造

リンクされたフィールドのメタモデルは、JSON オブジェクトで表されます。

{
  "relationshipField": "/au_id",
  "tablePath": "/root/Authors",
  "linkedFieldPath": "/birth_date",
  "details": "http://.../BAuthors/Authors/root/Authors"
}

次のプロパティを保持します。

JSON プロパティ

JSON 形式

説明

必須

relationshipField

String

このリンクされたフィールドによって使用される関係を保持するフィールドのパスを指定します。

以下も参照してください。

はい

tablePath

String

このリンクされたフィールドによって参照されるテーブルのパスを指定します。

はい

linkedFieldPath

String

このリンクされたフィールドによって参照されるパスを指定します。

以下も参照してください。

はい

details

URI

ターゲットテーブルの REST リソース URL を指定します。

以下も参照してください。

いいえ

以下も参照してください。

列挙依存関係の構造

メタモデル列挙依存オブジェクトは、JSON オブジェクトで表されます。

{
  "localModify": false,
  "dataspace": "BAuthors",
  "dataset": "Authors",
  "targetPath": "/root/Authors",
  "details": "http://.../BAuthors/Authors/root/Authors"
}

次のプロパティを保持します。

JSON プロパティ

JSON 形式

説明

必須

localModify

Boolean

列挙依存フィールドが、同じレコード内のフィールドに対して実行された変更によって影響を受けるかどうかを指定します。

はい

dataspace

String

列挙型依存関係のターゲットデータスペースまたはスナップショット識別子を指定します。指定しない場合は、レコードのデータスペースと同じデータスペースに対応します。

いいえ

dataset

String

列挙型依存関係のターゲットデータセットの識別子を指定します。指定しない場合は、レコードのデータセットと同じデータセットに対応します。

いいえ

targetPath

String

列挙型依存関係のターゲットパスを指定します。

はい

details

String

列挙型依存関係のターゲット REST リソーステーブル URL を指定します。

以下も参照してください。

いいえ

並べ替え基準

リクエストに適用される並べ替え基準は、includeSortCriteria パラメーター (デフォルトでは非アクティブ) を使用して、オンデマンドで返すことができます。有効にすると、sortCriteria プロパティが応答ルートノードに直接追加されます。

sortCriteria プロパティは、順序付けられた並べ替え基準を含む JSON Array として表されます。各並べ替え基準は、次のプロパティを持つ JSON オブジェクトに対応しています。

JSON プロパティ

JSON 形式

説明

必須

path

String

フィールドのパス。

はい

order

String

可能な値は、asclascdesc、またはldesc です。

はい

sortByRelevancy プロパティは JSON Array で表され、それ自体が次のプロパティを持つ JSON オブジェクトを保持します。

JSON プロパティ

JSON 形式

説明

必須

order

String

並べ替えを昇順で行うか降順で行うかを定義します。可能な値は、lasc または ldesc です。

詳細については、sortByRelevancy を参照してください。

はい

検証レポート

検証は、includeValidation パラメーターを使用してオンデマンドでアクティブ化できます (デフォルトでは非アクティブ)。有効にすると、validation プロパティが 1 つまたは複数のメッセージとともにターゲットノードに直接追加されます。ターゲットノードのパスがないメッセージの場合、validation プロパティがルートノードに追加されます。

validation プロパティは JSON Array で表され、メッセージごとに JSON オブジェクトを保持し、検証項目に対応し、次のプロパティを持ちます。

JSON プロパティ

JSON 形式

説明

必須

level

String

検証項目の重大度。可能な値は、infowarnerrorfatal です。

はい

message

String

検証項目の説明。

はい

details

String

絶対 URL に対応します。

検証項目に関連付けられているリソースの URL。

関連するリソースが存在し、それが含まれている場合、テーブルスコープとデータセットスコープでのみ使用できます。

以下も参照してください。

いいえ

制約

このセクションは、ノードに読み取り/書き込み権限がある場合に自動的にアクティブになります。これは、データモデルで宣言された非プログラム的な制約を提供します。

constraints プロパティは、JSON Array で表されます。すべての制約は、JSON オブジェクトの形式を取ります。それらには次のプロパティがあります。

JSON プロパティ

JSON 形式

説明

必須

type

String

制約のタイプを指定します。

以下も参照してください。

はい

level

String

制約の重大度レベルを指定します。可能な値は、fatalerrorwarning、またはinfo です。

はい

content

Object

非プログラム制約の値を指定します。この値は、String や JSON オブジェクトなどの単純型にすることができます。

いいえ

min

Integer

excludeSegment 制約タイプの最小値を指定します。

いいえ

max

Integer

excludeSegment 制約タイプの最大値を指定します。

いいえ

message

String

フィールドの値が制約に準拠していない場合に返される検証メッセージを指定します。

はい

blocksCommit

String

ブロッキングまたは非ブロッキング制約の制御ポリシー管理を指定します。

詳細については、ブロッキングと非ブロッキングの制約を参照してください。

いいえ

制約タイプ

このセクションでは、プログラム以外の制約タイプをリストします。

タイプ

説明

mandatory

フィールドが必須であることを定義します。

fixedLengthStatic

このフィールドに必要な正確な文字数を定義します。

fixedLengthDynamic

これに必要な正確な文字数を提供するフィールドを指定します。

minLengthStatic

このフィールドに許可される最小文字数を定義します。

minLengthDynamic

これに許可される最小文字数を提供するフィールドを指定します。

maxLengthStatic

このフィールドに許可される最大文字数を定義します。

maxLengthDynamic

このフィールドに許可される最大文字数を提供するフィールドを指定します。

excludeSegment

このフィールドに許可されていない値の包括的範囲を定義します。

excludeValue

このフィールドに許可されていない値のリストを定義します。

fractionDigits

このフィールドに許可される小数点以下の最大数を定義します。

pattern

フィールドの値と一致する必要がある正規表現パターンを定義します。

totalDigits

この整数または 10 進数フィールドに許可される最大桁数を定義します。

boundaryMinInclusiveStatic

このフィールドに許可される最小値 (最小値を含む) を定義します。

boundaryMinExclusiveStatic

このフィールドに許可される最小値 (最小値を除く) を定義します。

boundaryMinInclusiveDynamic

このフィールドに許可される最小値 (最小値を含む) を提供するフィールドを定義します。

boundaryMinExclusiveDynamic

このフィールドに許可される最小値 (最小値を除く) を提供するフィールドを定義します。

boundaryMaxInclusiveStatic

このフィールドに許可される最大値 (最大値を含む) を定義します。

boundaryMaxExclusiveStatic

このフィールドに許可される最大値 (最大値を除く) を定義します。

boundaryMaxInclusiveDynamic

このフィールドに許可される最大値 (最大値を含む) を提供するフィールドを定義します。

boundaryMaxExclusiveDynamic

このフィールドに許可される最大値 (最大値を除く) を提供するフィールドを定義します。

コンテンツ

このセクションは、includeContent パラメーター (デフォルトでアクティブ) を使用して、オンデマンドで非アクティブ化できます。これは、許可されたユーザーのレコード値、データセット、またはコンテンツフィールドの 1 つのフィールドのコンテンツを提供します。また、ラベル、技術情報、URL などの追加情報もあります。

コンテンツは、サブノードごとにプロパティが設定された JSON オブジェクトで表されます。

ノード値

JSON プロパティ

JSON 形式

説明

必須

content

単純型のコンテンツ

グループとリストのコンテンツ

ノード値が含まれます。associationselection を除くすべてのノードで使用できます。ただし、コンテンツは、details プロパティで提供される URL を呼び出すことで取得できます。

いいえ

details

String

絶対 REST リソース URL に対応します。

呼び出されたときにノードの詳細を返します。

応答タイプはメタタイプによって異なります。

  • foreignKey:ターゲットレコード (テーブル、レコード、およびフィールド操作で使用可能)。

  • resource:ターゲットリソース (データセットノード、テーブル、レコード、およびフィールド操作で使用可能)。

  • association:関連するレコードを含むターゲットテーブル (テーブルおよびレコード操作で使用可能)。

  • selection:関連するレコードを含むターゲットテーブル (テーブルおよびレコード操作で使用可能)。

  • group:ターゲットデータセットグループノード (データセットツリー操作で使用可能)。

  • table:ターゲットテーブル (データセットツリー操作で使用可能)。

http://.../BReference/dataset/root/table/pk/associationField

いいえ

historyDetails

String

絶対 REST リソース URL に対応します。

呼び出されたときにノード履歴の詳細を返します。

以下も参照してください。

いいえ

label

String

現在のロケールの外部キーまたは列挙ラベルが含まれます。

現在のロケールがサポートされていない場合は、デフォルトのラベルが返されます。

いいえ

inheritanceMode

String

データセットの継承のみを考慮した、ノードの継承状態が含まれます。inheritedFieldMode プロパティと inheritanceMode プロパティの両方を同じノードで定義することはできません。

いいえ

inheritedFieldMode

String

データセットとフィールドの継承を考慮した、ノードのフィールドの継承状態が含まれます。両方の継承が使用される場合、フィールドの継承はデータセットの継承よりも優先されます。inheritedFieldMode プロパティと inheritanceMode プロパティの両方を同じノードで定義することはできません。

以下も参照してください。

いいえ

selector

String

絶対 URL に対応します。

selector 操作に適切な URL が含まれています。

http://.../BReference/dataset/root/table/pk/enumField?selector=true

いいえ

validation

Array

現在のノードコンテキストに関係する検証レポートが含まれています。

以下も参照してください。

いいえ

単純型のコンテンツ

単純なフィールド値は JSON オブジェクトに格納され、そのコンテンツは content プロパティの値です。

以下も参照してください。

グループとリストのコンテンツ

XML スキーマ

JSON 形式

メタタイプ

Group

xs:complexType

Object

サブノードごとのプロパティが含まれます。

単純オカレンスグループの例

{
  "road": {
    "content": "11 rue scribe"
  },
  "zipcode": {
    "content": "75009"
  },
  "country": {
    "content": "France"
  }
}

group

List

maxOccurs > 1

Array

JSON オブジェクトで表されるすべてのフィールドオカレンスの配列が含まれます。

各オブジェクトは、ノード値として表されます。

xs:int 型の複数オカレンスフィールドの例

[
  {
    "content": 0
  },
  {
    "content": 1
  },
  {
    "content": 2
  },
  {
    "content": 3
  }
]

複数オカレンスグループの例

[
  {
    "content": {
      "road": {
        "content": "11 rue scribe"
      },
      "zipcode": {
        "content": "75009"
      },
      "country": {
        "content": "France"
      }
    }
  },
  {
    "content": {
      "road": {
        "content": "711 Atlantic Ave"
      },
      "zipcode": {
        "content": "MA 02111"
      },
      "country": {
        "content": "United States"
      }
    }
  }
]

単純型のメタ

または

group

セレクタ—

列挙型を提供するフィールドで selector プロパティで表される URL を呼び出すと、次のプロパティを含む JSON オブジェクトが返されます。

{
  "rows": [
    {
      "content": "F",
      "label": "feminine"
    },
    {
      "content": "M",
      "label": "masculine"
    }
  ],
  "pagination": {
    "firstPage": null,
    "nextPage": null,
    "previousPage": null,
    "lastPage": null
  }
}
以下も参照してください。
ドキュメント > 開発者ガイド > REST データサービス> JSON 形式