diff --git a/docs/_site/api/DataWarehouseAutomation.DataObjectMappingList.html b/docs/_site/api/DataWarehouseAutomation.DataObjectMappingList.html index 9665e82..8077bc5 100644 --- a/docs/_site/api/DataWarehouseAutomation.DataObjectMappingList.html +++ b/docs/_site/api/DataWarehouseAutomation.DataObjectMappingList.html @@ -162,6 +162,40 @@

Properties

+ + +

+ Classifications + +

+ +

Free-form and optional classification for the mapping for use in data logistics generation logic.

+
+
+ +
+
[JsonPropertyName("classifications")]
+[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
+public List<DataClassification>? Classifications { get; set; }
+
+ + + + + +

Property Value

+
+
List<DataClassification>
+
+
+ + + + + + + +

@@ -195,6 +229,75 @@

Property Value

+ + +

+ Extensions + +

+ +

The collection of extension Key/Value pairs.

+
+
+ +
+
[JsonPropertyName("extensions")]
+[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
+public List<Extension>? Extensions { get; set; }
+
+ + + + + +

Property Value

+
+
List<Extension>
+
+
+ + + + + + + + + + +

+ Name + +

+ +

The name of the Data Object Mapping List. This is typically provided by one of the data object mappings in the list. +It has been added to allow easy identification of the objects in case a list contains many mappings.

+
+
+ +
+
[JsonPropertyName("name")]
+[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
+public string? Name { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + diff --git a/docs/_site/handlebars/extension_exists.html b/docs/_site/handlebars/extension_exists.html index ad1cb02..b30ecf9 100644 --- a/docs/_site/handlebars/extension_exists.html +++ b/docs/_site/handlebars/extension_exists.html @@ -93,10 +93,10 @@

{{exists}}

The helper can target specific segments in the metadata, and evaluates if either the segment exists at all (without specifying an optional search value) or if the provided optional search value exists in that segment.

Only the multiActiveKey and targetDataItem properties are currently supported.

Usage

-
{{#exists "<category / json segment>" "<optional value>"}}
+
{{#exists "<category / json segment>" "<optional value>"}}
 

Example

-
{{#exists multiActiveKey}}There is a multi-active key!{{else}}No multi-active key is found in this data object mapping.{{/exists}}
+
{{#exists multiActiveKey}}There is a multi-active key!{{else}}No multi-active key is found in this data object mapping.{{/exists}}
 {{#exists multiActiveKey "DATE_OF_BIRTH"}}There is a multi-active key which is not DATE_OF_BIRTH{{else}}No multi-active key with DATE_OF_BIRTH is found in this data object mapping.{{/exists}}
 {{#exists targetDataItem}}There is a target data item in this mapping!{{else}}No target data items are defined in this mapping.{{/exists}}
 
diff --git a/docs/_site/handlebars/extension_lookupextension.html b/docs/_site/handlebars/extension_lookupextension.html index e0ecd69..4817f5e 100644 --- a/docs/_site/handlebars/extension_lookupextension.html +++ b/docs/_site/handlebars/extension_lookupextension.html @@ -93,10 +93,10 @@

{{lookupExtension}}

The lookupExtension helper allows a lookup of an extension by key value.

Pass in the extensions list and the string key value.

Usage

-
{{lookupExtension <extension list> "<string value>"}}
+
{{lookupExtension <extension list> "<string value>"}}
 

Example

-
The lookup value for the 'type' extension is '{{lookupExtension sourceDataObjects.0.extensions "type"}}'.
+
The lookup value for the 'type' extension is '{{lookupExtension sourceDataObjects.0.extensions "type"}}'.
 

Depending on the metadata, this may result in:

The lookup value for the 'type' extension is 'procedure'.
diff --git a/docs/_site/handlebars/extension_now.html b/docs/_site/handlebars/extension_now.html
index b2cd0b4..478b8bd 100644
--- a/docs/_site/handlebars/extension_now.html
+++ b/docs/_site/handlebars/extension_now.html
@@ -91,10 +91,10 @@ 

{{now}}

Get the date and time at the moment of execution.

Usage

-
{{now}}
+
{{now}}
 

Example

-
The time is {{now}}.
+
The time is {{now}}.
 

This returns the date/time at present.

diff --git a/docs/_site/handlebars/extension_randomdate.html b/docs/_site/handlebars/extension_randomdate.html index b15ab4d..43e9e88 100644 --- a/docs/_site/handlebars/extension_randomdate.html +++ b/docs/_site/handlebars/extension_randomdate.html @@ -92,10 +92,10 @@

{{randomdate}}

Generate a random date somewhere higher than the provided characters as four-digit integer (year) input.

This was originally added to generate test data, and is used for referential-integrity testing purposes.

Usage

-
{{randomdate 2020}}
+
{{randomdate 2020}}
 

Example

-
Here is a random date: {{randomdate 2020}}.
+
Here is a random date: {{randomdate 2020}}.
 

This may return:

2022-08-03T00:00:00.000000
diff --git a/docs/_site/handlebars/extension_randomnumber.html b/docs/_site/handlebars/extension_randomnumber.html
index 79906ed..31b7725 100644
--- a/docs/_site/handlebars/extension_randomnumber.html
+++ b/docs/_site/handlebars/extension_randomnumber.html
@@ -92,10 +92,10 @@ 

{{randomnumber}}

Generate a random number with the numeric positions provided as input integer.

This was originally added to generate test data, and is used for referential-integrity testing purposes.

Usage

-
{{randomnumber 5}}
+
{{randomnumber 5}}
 

Example

-
And here is a random string: {{randomnumber 5}}.
+
And here is a random string: {{randomnumber 5}}.
 

This may return:

1346
diff --git a/docs/_site/handlebars/extension_randomstring.html b/docs/_site/handlebars/extension_randomstring.html
index 1426b22..35c6b21 100644
--- a/docs/_site/handlebars/extension_randomstring.html
+++ b/docs/_site/handlebars/extension_randomstring.html
@@ -91,10 +91,10 @@ 

{{randomstring}}

Generate a random string no longer than the provided characters as integer input.

Usage

-
{{randomstring 10}}
+
{{randomstring 10}}
 

Example

-
And here is a random string: {{randomstring 10}}.
+
And here is a random string: {{randomstring 10}}.
 

This returns:

Cg8uKuBFS5
diff --git a/docs/_site/handlebars/extension_replicate.html b/docs/_site/handlebars/extension_replicate.html
index 02de4ed..8533ace 100644
--- a/docs/_site/handlebars/extension_replicate.html
+++ b/docs/_site/handlebars/extension_replicate.html
@@ -92,10 +92,10 @@ 

{{replicate}}

Returns the input string value a number of times, as specified by the input integer.

This is often used to generate test data.

Usage

-
{{#replicate 10}}
+
{{#replicate 10}}
 

Example

-
{{#replicate 3}}
+
{{#replicate 3}}
 This value is replicated 3 times!
 {{/replicate}}
 
diff --git a/docs/_site/handlebars/extension_space.html b/docs/_site/handlebars/extension_space.html index 090adff..e352030 100644 --- a/docs/_site/handlebars/extension_space.html +++ b/docs/_site/handlebars/extension_space.html @@ -91,10 +91,10 @@

{{space}}

Space will space out (!?) the name of the input value to 30 characters using tabs for alignment, indentation.

Usage

-
{{space "<value>"}}
+
{{space "<value>"}}
 

Example

-
This is {{space "Hello World"}} ...spaced out.
+
This is {{space "Hello World"}} ...spaced out.
 

This results in:

This is Hello World                                              ...spaced out.
diff --git a/docs/_site/handlebars/extension_stringcompare.html b/docs/_site/handlebars/extension_stringcompare.html
index e8c8d72..3680bfa 100644
--- a/docs/_site/handlebars/extension_stringcompare.html
+++ b/docs/_site/handlebars/extension_stringcompare.html
@@ -91,10 +91,10 @@ 

{{stringcompare}}

Block helper to evaluate if the input matches a specified string. Also optionally supports an {{else}} block.

Usage

-
{{#stringcompare string1 string2}} do something {{else}} do something else {{/stringcompare}}
+
{{#stringcompare string1 string2}} do something {{else}} do something else {{/stringcompare}}
 

Example

-
A and B {{#stringcompare "A" "B"}}are the same. {{else}}are not the same. {{/stringcompare}}
+
A and B {{#stringcompare "A" "B"}}are the same. {{else}}are not the same. {{/stringcompare}}
 

This results in:

A and B are not the same.
diff --git a/docs/_site/handlebars/extension_stringdiff.html b/docs/_site/handlebars/extension_stringdiff.html
index 9010272..eab87ce 100644
--- a/docs/_site/handlebars/extension_stringdiff.html
+++ b/docs/_site/handlebars/extension_stringdiff.html
@@ -91,10 +91,10 @@ 

{{stringdiff}}

Block helper to evaluate if the input does not match a specified string. Also optionally supports an {{else}} block.

Usage

-
{{#stringdiff string1 string2}} do something {{else}} do something else {{/stringdiff}}
+
{{#stringdiff string1 string2}} do something {{else}} do something else {{/stringdiff}}
 

Example

-
A and B {{#stringdiff "A" "B"}}are not the same. {{else}}are the same. {{/stringdiff}}
+
A and B {{#stringdiff "A" "B"}}are not the same. {{else}}are the same. {{/stringdiff}}
 

This results in:

A and B are not the same.
diff --git a/docs/_site/handlebars/extension_stringreplace.html b/docs/_site/handlebars/extension_stringreplace.html
index 95b8748..ed1363f 100644
--- a/docs/_site/handlebars/extension_stringreplace.html
+++ b/docs/_site/handlebars/extension_stringreplace.html
@@ -91,10 +91,10 @@ 

{{stringreplace}}

Parses an input string value, and replaces a specified part of the contents with a replacement value.

Usage

-
{{stringreplace "<input string value>" "<lookup character>" "<replacement character>"}}
+
{{stringreplace "<input string value>" "<lookup character>" "<replacement character>"}}
 

Example

-
This replaces the o's in Hello Word with an !: {{StringReplace "Hello World" "o" "!"}}
+
This replaces the o's in Hello Word with an !: {{StringReplace "Hello World" "o" "!"}}
 

This results in:

This replaces the o's in Hello Word with an !: Hell! W!rld
diff --git a/docs/_site/handlebars/extension_stringwrap.html b/docs/_site/handlebars/extension_stringwrap.html
index b8cadc7..a24f683 100644
--- a/docs/_site/handlebars/extension_stringwrap.html
+++ b/docs/_site/handlebars/extension_stringwrap.html
@@ -91,10 +91,10 @@ 

{{stringwrap}}

Wraps an input character string with two specified characters.

Usage

-
{{stringwrap "<start character>" "<end character>"}}
+
{{stringwrap "<start character>" "<end character>"}}
 

Example

-
This adds brackets around the string value: {{stringwrap "Example" "[" "]"}}
+
This adds brackets around the string value: {{stringwrap "Example" "[" "]"}}
 

This results in:

[Example]
diff --git a/docs/_site/handlebars/extension_targetdataitemexists.html b/docs/_site/handlebars/extension_targetdataitemexists.html
index ba30a8a..c4ab851 100644
--- a/docs/_site/handlebars/extension_targetdataitemexists.html
+++ b/docs/_site/handlebars/extension_targetdataitemexists.html
@@ -93,10 +93,10 @@ 

{{targetDataItemExists}}

The helper performs a search in the target data items within a data item mapping, so evaluate if the input value exists there as a data item name.

This is used in some cases to handle special column names.

Usage

-
{{stringwrap "<character value>"}}
+
{{stringwrap "<character value>"}}
 

Example

-
{{#targetDataItemExists "FIRST_NAME"}}FIRST_NAME exists{{else}}FIRST_NAME does not exist{{/targetDataItemExists}}
+
{{#targetDataItemExists "FIRST_NAME"}}FIRST_NAME exists{{else}}FIRST_NAME does not exist{{/targetDataItemExists}}
 

This results in:

FIRST_NAME exists
diff --git a/docs/_site/overview/Index.html b/docs/_site/overview/Index.html
index 1eac7a7..0dfcd90 100644
--- a/docs/_site/overview/Index.html
+++ b/docs/_site/overview/Index.html
@@ -89,6 +89,7 @@ 
Table of Contents

Data Solution Automation Metadata

+

Welcome to the documentation of the schema for data solution automation.

The interface for data solution automation metadata provides an agreed (canonical) format for the exchange of relevant metadata for data solution/warehouse automation. The intent is to define a sufficiently generic format, that can be used to record and share information about data solution automation metadata, so that more time can be spent on concepts, patterns, and solution ideas - instead of reinventing the wheel on what exactly is required to automate a data solution.

This in itself aims to facilitate greater interoperability between various data solution / data warehouse automation and data logistics generations approaches and ecosystems.

The schema definition can be directly viewed here, and is part of this GitHub repository. The repository contains various supporting components such as:

@@ -101,9 +102,9 @@

Data Solution Automation Metadata

The schema is and examples are validated / extended using https://www.jsonschemavalidator.net/. Standards are followed from json-schema.org. Also see some miscellaneous examples.

In principle, the schema can be used to generate an entire Data Warehouse, Data Lake and equivalent and/or similar.

Schema

-

The proposed JSON schema has standard components for table (DataObjects) and column (DataItem) structures that are reused for sources and targets. At the mapping level only the classification, filter and load direction are added, the rest is generic reuse of definitions.

+

The JSON schema for data solution automation has standard components for table (DataObjects) and column (DataItem) structures that are reused for sources and targets. At the mapping level only the classification, filter and load direction are added, the rest is generic reuse of definitions.

The schema is available in the GitHub under: https://github.com/RoelantVos/Data_Warehouse_Automation_Metadata_Interface.

-

The schema definition specifically is located here: [https://github.com/RoelantVos/Data_Warehouse_Automation_Metadata_Interface/blob/master/Generic%20interface/interfaceDataWarehouseAutomationMetadata.json](https://github.com/RoelantVos/Data_Warehouse_Automation_Metadata_Interface/blob/master/Generic interface/interfaceDataWarehouseAutomationMetadata.json).

+

The schema definition itself is located here: https://github.com/data-solution-automation-engine/data-warehouse-automation-metadata-schema/blob/main/GenericInterface/interfaceDataWarehouseAutomationMetadataV2_0.json.

It is also referenced in the Class Library.

How does the interface schema work?

The interface is a JSON Schema Definition that has been designed following draft 7 of the JSON schema. It contains a series of reusable defined objects (‘definitions’) that are implemented as a source-to-target mapping object called a ‘Data Object Mapping’.

diff --git a/docs/_site/overview/getting-started.html b/docs/_site/overview/getting-started.html index a086780..f4edfa6 100644 --- a/docs/_site/overview/getting-started.html +++ b/docs/_site/overview/getting-started.html @@ -121,7 +121,7 @@

Generating code

// Display the results to the user Console.WriteLine(result);
-

Validating JSON files against the schema definition

+

Validating JSON files against the schema definition

Examples are provided to validate Json metadata files in order to assert if they comply with the schema definition. These examples are located in the 'test_project' on the Github.

This project is used for regression testing, making sure that the inputs and outputs provided by the various tools in the Data Warehouse Automation ecosystem provide the metadata in the correct formats.

Validating Json files against the generic schema is easy, a method is provided as part of the JsonHandling class included in the DataWarehouseAutomation.dll. Consider the example below, where a filename (including path) for the schema definition as well as a Json file are provided.

diff --git a/docs/_site/overview/jsonschema.html b/docs/_site/overview/jsonschema.html index c28af8e..ef4087d 100644 --- a/docs/_site/overview/jsonschema.html +++ b/docs/_site/overview/jsonschema.html @@ -101,6 +101,33 @@

JSON Schema Definition

"properties": { "dataObjectMappings": { "$ref": "#/definitions/dataObjectMappings" + }, + "name": { + "$id": "#/definitions/dataObjectMappings/properties/name", + "title": "Name", + "description": "Optional name of the data object mapping list.", + "type": "string" + }, + "classifications": { + "$id": "#/definitions/dataObjectMappings/properties/classifications", + "title": "Classifications", + "description": "Classification for the data object mapping list.", + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/dataClassification" + }, + "minItems": 0, + "uniqueItems": true + }, + "extensions": { + "$id": "#/definitions/dataObjectMappings/properties/extensions", + "description": "Key/Value pair extension object.", + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/extension" + }, + "minItems": 0, + "uniqueItems": true } }, "definitions": { @@ -523,7 +550,7 @@

JSON Schema Definition

"$id": "#/definitions/dataConnection", "title": "Data Connection", "description": "Connectivity details, that can be used for either a DataObject or DataQuery.", - "required": [ "dataConnectionString" ], + "required": [ "name" ], "type": [ "object", "null" ], "properties": { "id": { @@ -581,9 +608,9 @@

JSON Schema Definition

"description": "An optional identifier.", "type": [ "string", "null" ] }, - "businessKeyComponentMapping": { - "$id": "#/definitions/businessKeyDefinition/properties/businessKeyComponentMapping", - "title": "businessKeyComponentMapping", + "businessKeyComponentMappings": { + "$id": "#/definitions/businessKeyDefinition/properties/businessKeyComponentMappings", + "title": "businessKeyComponentMappings", "description": "Items that define the Business Key e.g. the collection of columns for a Business Key.", "type": "array", "items": { @@ -773,7 +800,7 @@

JSON Schema Definition

} } } -} +}
diff --git a/docs/_site/xrefmap.yml b/docs/_site/xrefmap.yml index 202fdb6..f5982f6 100644 --- a/docs/_site/xrefmap.yml +++ b/docs/_site/xrefmap.yml @@ -1187,6 +1187,19 @@ references: commentId: T:DataWarehouseAutomation.DataObjectMappingList fullName: DataWarehouseAutomation.DataObjectMappingList nameWithType: DataObjectMappingList +- uid: DataWarehouseAutomation.DataObjectMappingList.Classifications + name: Classifications + href: api/DataWarehouseAutomation.DataObjectMappingList.html#DataWarehouseAutomation_DataObjectMappingList_Classifications + commentId: P:DataWarehouseAutomation.DataObjectMappingList.Classifications + fullName: DataWarehouseAutomation.DataObjectMappingList.Classifications + nameWithType: DataObjectMappingList.Classifications +- uid: DataWarehouseAutomation.DataObjectMappingList.Classifications* + name: Classifications + href: api/DataWarehouseAutomation.DataObjectMappingList.html#DataWarehouseAutomation_DataObjectMappingList_Classifications_ + commentId: Overload:DataWarehouseAutomation.DataObjectMappingList.Classifications + isSpec: "True" + fullName: DataWarehouseAutomation.DataObjectMappingList.Classifications + nameWithType: DataObjectMappingList.Classifications - uid: DataWarehouseAutomation.DataObjectMappingList.DataObjectMappings name: DataObjectMappings href: api/DataWarehouseAutomation.DataObjectMappingList.html#DataWarehouseAutomation_DataObjectMappingList_DataObjectMappings @@ -1200,6 +1213,32 @@ references: isSpec: "True" fullName: DataWarehouseAutomation.DataObjectMappingList.DataObjectMappings nameWithType: DataObjectMappingList.DataObjectMappings +- uid: DataWarehouseAutomation.DataObjectMappingList.Extensions + name: Extensions + href: api/DataWarehouseAutomation.DataObjectMappingList.html#DataWarehouseAutomation_DataObjectMappingList_Extensions + commentId: P:DataWarehouseAutomation.DataObjectMappingList.Extensions + fullName: DataWarehouseAutomation.DataObjectMappingList.Extensions + nameWithType: DataObjectMappingList.Extensions +- uid: DataWarehouseAutomation.DataObjectMappingList.Extensions* + name: Extensions + href: api/DataWarehouseAutomation.DataObjectMappingList.html#DataWarehouseAutomation_DataObjectMappingList_Extensions_ + commentId: Overload:DataWarehouseAutomation.DataObjectMappingList.Extensions + isSpec: "True" + fullName: DataWarehouseAutomation.DataObjectMappingList.Extensions + nameWithType: DataObjectMappingList.Extensions +- uid: DataWarehouseAutomation.DataObjectMappingList.Name + name: Name + href: api/DataWarehouseAutomation.DataObjectMappingList.html#DataWarehouseAutomation_DataObjectMappingList_Name + commentId: P:DataWarehouseAutomation.DataObjectMappingList.Name + fullName: DataWarehouseAutomation.DataObjectMappingList.Name + nameWithType: DataObjectMappingList.Name +- uid: DataWarehouseAutomation.DataObjectMappingList.Name* + name: Name + href: api/DataWarehouseAutomation.DataObjectMappingList.html#DataWarehouseAutomation_DataObjectMappingList_Name_ + commentId: Overload:DataWarehouseAutomation.DataObjectMappingList.Name + isSpec: "True" + fullName: DataWarehouseAutomation.DataObjectMappingList.Name + nameWithType: DataObjectMappingList.Name - uid: DataWarehouseAutomation.DataObjectQuery name: DataObjectQuery href: api/DataWarehouseAutomation.DataObjectQuery.html diff --git a/docs/overview/Index.md b/docs/overview/Index.md index fbc1d0c..5234857 100644 --- a/docs/overview/Index.md +++ b/docs/overview/Index.md @@ -8,10 +8,10 @@ This in itself aims to facilitate greater interoperability between various data The schema definition can be directly viewed [here](https://github.com/RoelantVos/Data_Warehouse_Automation_Metadata_Interface/blob/master/GenericInterface/interfaceDataWarehouseAutomationMetadata.json), and is part of [this GitHub repository](https://github.com/RoelantVos/Data_Warehouse_Automation_Metadata_Interface). The repository contains various supporting components such as: -- A simple Class Library (DLL) that has implemented the schema structure, as well as a validation function to test JSON files / messages against the schema -- Starter documentation. -- A sample implementation that generates code using [Handlebars.Net](http://roelantvos.com/blog/using-handlebars-to-generate-data-vault-hub-load-processes/). The example that uses the Handlebars generates code using a sample JSON file that conforms to the interface schema. -- A simple regression test application that demonstrates different usages of the schema. +* A simple Class Library (DLL) that has implemented the schema structure, as well as a validation function to test JSON files / messages against the schema +* Starter documentation. +* A sample implementation that generates code using [Handlebars.Net](http://roelantvos.com/blog/using-handlebars-to-generate-data-vault-hub-load-processes/). The example that uses the Handlebars generates code using a sample JSON file that conforms to the interface schema. +* A simple regression test application that demonstrates different usages of the schema. The schema is and examples are validated / extended using . Standards are followed from [json-schema.org](http://json-schema.org/). Also see [some miscellaneous examples](http://json-schema.org/learn/miscellaneous-examples.html). diff --git a/docs/overview/jsonschema.md b/docs/overview/jsonschema.md index ce1117e..e5e01cc 100644 --- a/docs/overview/jsonschema.md +++ b/docs/overview/jsonschema.md @@ -13,6 +13,33 @@ "properties": { "dataObjectMappings": { "$ref": "#/definitions/dataObjectMappings" + }, + "name": { + "$id": "#/definitions/dataObjectMappings/properties/name", + "title": "Name", + "description": "Optional name of the data object mapping list.", + "type": "string" + }, + "classifications": { + "$id": "#/definitions/dataObjectMappings/properties/classifications", + "title": "Classifications", + "description": "Classification for the data object mapping list.", + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/dataClassification" + }, + "minItems": 0, + "uniqueItems": true + }, + "extensions": { + "$id": "#/definitions/dataObjectMappings/properties/extensions", + "description": "Key/Value pair extension object.", + "type": [ "array", "null" ], + "items": { + "$ref": "#/definitions/extension" + }, + "minItems": 0, + "uniqueItems": true } }, "definitions": { @@ -435,7 +462,7 @@ "$id": "#/definitions/dataConnection", "title": "Data Connection", "description": "Connectivity details, that can be used for either a DataObject or DataQuery.", - "required": [ "dataConnectionString" ], + "required": [ "name" ], "type": [ "object", "null" ], "properties": { "id": { @@ -493,9 +520,9 @@ "description": "An optional identifier.", "type": [ "string", "null" ] }, - "businessKeyComponentMapping": { - "$id": "#/definitions/businessKeyDefinition/properties/businessKeyComponentMapping", - "title": "businessKeyComponentMapping", + "businessKeyComponentMappings": { + "$id": "#/definitions/businessKeyDefinition/properties/businessKeyComponentMappings", + "title": "businessKeyComponentMappings", "description": "Items that define the Business Key e.g. the collection of columns for a Business Key.", "type": "array", "items": { @@ -685,5 +712,5 @@ } } } -} +} ```