

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 仕様の形式
<a name="schemas_jsonformat"></a>

クラウドディレクトリスキーマは、データディレクトリ内のデータに構造を追加します。クラウドディレクトリには、スキーマを定義するための 2 つのメカニズムが用意されています。開発者は、特定の API 操作を使用してスキーマを構築したり、スキーマアップロード機能を使用してスキーマ全体をアップロードすることができます。スキーマドキュメントは、API コールまたはコンソール経由でアップロードできます。このセクションでは、スキーマドキュメント全体をアップロードするときに使用する形式について説明します。

## JSON スキーマ形式
<a name="schemas_json"></a>

スキーマドキュメントは、次の JSON ドキュメントの全体的な形式です。

```
{
    "facets": {
        "{{facet name}}": {
            "facetAttributes": {
                "{{attribute name}}": {{Attribute JSON Subsection}}
            }
        }
    }
}
```

スキーマドキュメントには、ファセット名とファセットのマップが含まれています。各ファセットには、それぞれ属性を含むマップが含まれています。スキーマ内のすべてのファセット名は一意でなければなりません。ファセット内のすべての属性名は一意でなければなりません。

### 属性 JSON サブセクション
<a name="schemas_attributejsonsub"></a>

ファセットには属性が含まれています。各属性は、属性に格納できる値のタイプを定義します。次の JSON 形式で属性を記述します。

```
{
    "attributeDefinition": {{Attribute Definition Subsection}},
    "attributeReference": {{Attribute Reference Subsection}},
    "requiredBehavior": {{"REQUIRED_ALWAYS" or "NOT_REQUIRED"}}
}
```

属性定義または属性リファレンスのいずれかを指定する必要があります。それぞれの詳細については、関連するサブセクションを参照してください。

必須の動作フィールドは、この属性が必須かどうかを示します。このフィールドを指定する必要があります。指定できる値は次のとおりです。
+ `REQUIRED_ALWAYS`: この属性は、オブジェクトの作成時またはファセットの追加時に指定する必要があります。この属性は削除できません。
+ `NOT_REQUIRED`: この属性は、存在する場合もありますが、存在しない場合もあります。

### 属性定義サブセクション
<a name="schemas_attributedefinitionsub"></a>

属性は、属性値に関連する型とルールを定義します。次の JSON レイアウトでその形式について説明します。

```
{
    "attributeType": {{One of "STRING", "NUMBER", "BINARY", "BOOLEAN" or "DATETIME"}},
    "defaultValue": {{Default Value Subsection}},
    "isImmutable": {{true or false}},
    "attributeRules": "{{Attribute Rules Subsection}}"
}
```

### デフォルト値サブセクション
<a name="schemas_defaultvaluesub"></a>

次のデフォルト値のいずれかを正確に指定します。ロング値とブール値は、引用符の外側に (文字列ではなくそれぞれの Javascript 型として) 提供する必要があります。バイナリ値は、URL セーフ Base64 でエンコードされた文字列 (RFC 4648 で説明) を使用して提供されます。日時データ型は、エポック (1970 年 1 月 1 日 00:00:00 UTC) からの時間が秒単位で指定されます。

```
{ 
	"stringValue": "{{a string value}}",
	"longValue": {{an integer value}},
	"booleanValue": {{true or false}},
	"binaryValue": {{a URL-safe Base64 encoded string}},
	"datetimeValue": {{an integer value representing milliseconds since epoch}}
}
```

### 属性ルールサブセクション
<a name="schemas_attributerulessub"></a>

属性ルールは、属性値の制約を定義します。各属性に複数のルールを定義できます。属性ルールには、ルールタイプとそのルールのパラメータセットが含まれています。詳細については、「[属性ルール](schemas_attributerules.md)」セクションを参照してください。

```
{
    "{{rule name}}": {
        "parameters": {
            "{{rule parameter key 1}}": "{{value}}",
            "{{rule parameter key 2}}": "{{value}}"
        },
        "ruleType": "{{rule type value}}"
    }
}
```

### 属性リファレンスサブセクション
<a name="schemas_attributerefsub"></a>

属性リファレンスは、高度な機能です。属性リファレンスによって、複数のファセットは属性定義と格納された値を共有することができます。詳細については、「[属性リファレンス](schemas_attributereferences.md)」セクションを参照してください。次のテンプレートを使用して、JSON スキーマで属性参照を定義できます。

```
{
	"targetSchemaArn": "{{schema ARN}}"
	"targetFacetName": "{{facet name}}"
	"targetAttributeName": "{{attribute name}}"
}
```

## スキーマドキュメントの例
<a name="schemas_completeexample"></a>

以下は、有効な JSON 形式を示すスキーマドキュメントの例です。

**注記**  
`allowedValues` 文字列で表すすべての値は、カンマで区切り、スペースなしにする必要があります。たとえば、`"SENSITIVE,CONFIDENTIAL,PUBLIC"` と指定します。

### 基本的なスキーマドキュメント
<a name="schemas_basicschema"></a>

```
{
    "facets": {
        "Employee": {
            "facetAttributes": {
                "Name": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": false,
                        "attributeRules": {
                            "NameLengthRule": {
                                "parameters": {
                                    "min": "3",
                                    "max": "100"
                                },
                                "ruleType": "STRING_LENGTH"
                            }
                        }
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                },
                "EmailAddress": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {
                            "EmailAddressLengthRule": {
                                "parameters": {
                                    "min": "3",
                                    "max": "100"
                                },
                                "ruleType": "STRING_LENGTH"
                            }
                        }
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                },
                "Status": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": false,
                        "attributeRules": {
                            "rule1": {
                                "parameters": {
                                    "allowedValues": "ACTIVE,INACTIVE,TERMINATED"
                                },
                                "ruleType": "STRING_FROM_SET"
                            }
                        }
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                }
            },
            "objectType": "LEAF_NODE"
        },
        "DataAccessPolicy": {
            "facetAttributes": {
                "AccessLevel": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {
                            "rule1": {
                                "parameters": {
                                    "allowedValues": "SENSITIVE,CONFIDENTIAL,PUBLIC"
                                },
                                "ruleType": "STRING_FROM_SET"
                            }
                        }
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                }
            },
            "objectType": "POLICY"
        },
        "Group": {
            "facetAttributes": {
                "Name": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                }
            },
            "objectType": "NODE"
        }
    }
}
```

### スキーマドキュメントと型付きリンク
<a name="schemas_schematyped"></a>

```
{
    "sourceSchemaArn": "",
    "facets": {
        "employee_facet": {
            "facetAttributes": {
                "employee_login": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                },
                "employee_id": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                },
                "employee_name": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                },
                "employee_role": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                }
            },
            "objectType": "LEAF_NODE"
        },
        "device_facet": {
            "facetAttributes": {
                "device_id": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                },
                "device_type": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                }
            },
            "objectType": "NODE"
        },
        "region_facet": {
            "facetAttributes": {},
            "objectType": "NODE"
        },
        "group_facet": {
            "facetAttributes": {
                "group_type": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                }
            },
            "objectType": "NODE"
        },
        "office_facet": {
            "facetAttributes": {
                "office_id": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                },
                "office_type": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                },
                "office_location": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": true,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                }
            },
            "objectType": "NODE"
        }
    },
    "typedLinkFacets": {
        "device_association": {
            "facetAttributes": {
                "device_type": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": false,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                },
                "device_label": {
                    "attributeDefinition": {
                        "attributeType": "STRING",
                        "isImmutable": false,
                        "attributeRules": {}
                    },
                    "requiredBehavior": "REQUIRED_ALWAYS"
                }
            },
            "identityAttributeOrder": [
                "device_label",
                "device_type"
            ]
        }
    }
}
```