Overview
Item classification is the process of assigning a series of labels to an item from a predefined list of labels. Specific industries or regions have data privacy laws and data compliance regulations that require items to be classified in order to protect, and control access to, sensitive information. Though the specifics of each data protection law, regulation, or standard may vary, all require that data is classified, and all will perform audits to ensure that organizations are in compliance.
ArcGIS Enterprise administrators (either the default administrator, or an administrator assigned a custom role that includes the Organization website privilege) can define a set of labels that take into account the specific laws or regulations their item classifications need to include. This allows organization members to use those labels to set the level of sensitivity of the data an item has, specify who the information can be accessed by or shared with, and outline when information can be made publicly accessible.
Administrators define these sets of labels through a classification schema. A classification schema is a JSON object that contains a hierarchy of classification and dissemination properties. The schema is provided as a JSON file and assigned to the organization, after which all new items added to the organization, and any preexisting items, must be classified.
While classification schemas can be complex, organizations may benefit from creating an initial schema that focuses on a core number of classification labels that cover broad restriction categories. As time goes on, the schema can be updated to include more classification labels to account for any changes to regulation requirements, for internal classification purposes, or to accommodate any new regulations the organization needs to follow.
Defining a classification schema
A classification schema is made up of four sub-objects:
- Base properties: the schema's high-level properties.
- Classification Metadata: the primary classification label for organization items (e.g. Unclassified, In-confidence, Sensitive, etc.).
- Attributes: the various classification and dissemination information used to classify items.
- Layouts: the order in which the attributes are presented on the classification form.
Each area is defined in more detail below.
Base properties
A classification schema's base properties are the higher-level properties that define elements of the schema itself and how classification labels will be displayed during and after classification.
The sample code below demonstrates how the base properties have been set up for a specific schema. This sample does not show the full classification schema; the other tabs have code samples that demonstrate more of the schema's syntax.
{
"name": "academic-institution-classification-schema",
"version": "2.0",
"grammarVersion": "2.0",
"attributeCategories": [],
"bannerExpression": "function bannerExpression(schemaJsonString, valueJsonString, attributeId) {\n var valueJson = Dictionary(valueJsonString)\n var schemaJson = Dictionary(schemaJsonString)\n var selectionText = \"\"\n if (HasKey(valueJson, \"classification\")) {\n selectionText = selectionText + valueJson[\"classification\"]\n if (HasKey(valueJson, \"distribution\")) {\n selectionText = selectionText + \"//\" + valueJson[\"distribution\"]\n }\n if (HasKey(valueJson, \"reviewDate\") && valueJson[\"classification\"] != \"Unclassified\") {\n selectionText = selectionText + \"/\" + \"To be reviewed on\" + \" \" + valueJson[\"reviewDate\"]\n }\n }\n return selectionText;\n}\nbannerExpression(schemaJsonString, valueJsonString, attributeId)",
"selectionTextExpression": "function selectionTextExpression(schemaJsonString, valueJsonString, attributeId) {\n var valueJson = Dictionary(valueJsonString)\n var schemaJson = Dictionary(schemaJsonString)\n var selectionText = \"\"\n if (HasKey(valueJson, \"classification\")) {\n selectionText = selectionText + valueJson[\"classification\"]\n if (HasKey(valueJson, \"distribution\")) {\n selectionText = selectionText + \"//\" + valueJson[\"distribution\"]\n }\n if (HasKey(valueJson, \"reviewDate\") && valueJson[\"classification\"] != \"Unclassified\") {\n selectionText = selectionText + \"/\" + \"To be reviewed on\" + \" \" + valueJson[\"reviewDate\"]\n }\n }\n return selectionText;\n}\nselectionTextExpression(schemaJsonString, valueJsonString, attributeId)",
}
There are two properties (banner
and selection
) that accept Arcade expressions as an input. The code samples below provide a closer look at Arcade expression examples for each property.
function bannerExpression(schemaJsonString, valueJsonString, attributeId) {
var valueJson = Dictionary(valueJsonString);
var schemaJson = Dictionary(schemaJsonString);
var selectionText = "";
if (HasKey(valueJson, "classification")) {
selectionText = selectionText + valueJson["classification"];
if (HasKey(valueJson, "distribution")) {
selectionText = selectionText + "//" + valueJson["distribution"];
}
if (HasKey(valueJson, "reviewDate") && valueJson["classification"] != "Unclassified") {
selectionText = selectionText + "/" + "To be reviewed on" + " " + valueJson["reviewDate"];
The table below outlines the required and optional base properties for the classification schema.
Property | Required | Description |
---|---|---|
name | Specifies the name of the classification schema.
| |
version | Specifies the version number of the classification schema. The version can be updated each time the classification schema is modified, though the value that should be assigned to represent that update is up to the discretion of organization administrators.
| |
grammar | Specifies the grammar version the schema classification adheres to. This value must match the current grammar version, which is returned by the Classification resource.
| |
help | Sets the help text that is returned whenever a user hovers over the Information button on the classification form.
| |
help | Sets the URL of the schema help document that is opened when a user clicks on the Information button on the classification form. The help document will open up as a new tab. Help documentation is created, maintained, and hosted by the organization and is not provided by Esri.
| |
banner | Generates the banner text for an item using Arcade expressions. After an item has been classified, the classification marking is stored as a JSON object on the item, which includes the banner text, and is returned as part of the item's details. Note that not every classification value needs to be part of an item's banner. Specified or assigned values that are not included as part of the banner text are still retained. If this property is not included in the schema, or its value is set to an empty string, generic encoding logic for the
| |
selection | Generates the selection text using Arcade expressions. Selection text is displayed in the Current Selections portion of the classification form. If this property is not included in the schema, or its value is set to an empty string, generic encoding logic for the
| |
attribute | An array of attribute categories. Attributes assigned one of these categories for their
|
Classification Metadata
The schema's classification metadata defines the primary classification attribute for organization items, as well as defines the attribute's default value, lists all possible classification values, and how those values will appear when selected on the classification form. All properties described in this section are required.
The sample code below demonstrates how the classification metadata properties have been set up for a specific schema. This sample does not show the full classification schema, just the base properties that immediately precedes classification
, though only classification
is shown by default.
"classificationMetadata": {
"primaryAttribute": "classification",
"defaultValue": "Unclassified",
"classificationValueProperties": [
{
"value": "Unclassified",
"acronym": "Unclassified",
"backgroundColor": "Grey",
"textColor": "Black"
},
The table below outlines the properties for classification
.
Property | Required | Description |
---|---|---|
primary | Specifies the attribute that will appear as the primary classification field on the classification form.
| |
default | Sets the default value for the for
| |
classification | An array of objects that define properties for each value
|
Attributes
Attributes correspond to both the classification marking an item receives and the input fields that are displayed on the classification form. The attributes
object is a map that associates a key (the attribute name) with a series of values (the components that make up an attribute).
Each attribute has three required properties: a label
that specifies the display text for the input field on the classification form, a type
that determines what type of data the input field accepts, and a u
that the input field is displayed as on the classification form. Outside of these required properties are a number of optional properties that can set default values for an attribute or determine how an attribute and its selected values are stored on the item or displayed during classification.
The sample code below demonstrates how the attributes
object has been set up for a specific schema. This sample does not show the full classification schema, just the base properties and classification metadata that immediately precede attributes
, though only attributes
is shown by default. To the right of the sample code is an image that shows how attributes and their properties inform how they are displayed as input fields on the classification form.
"attributes": {
"classification": {
"label": "Classification",
"description": "Classification",
"type": "string",
"uiElement": "single-select",
"validValues": [
{
"label": "Unclassified",
"value": "Unclassified"
},
{
"label": "In-confidence",
The table below outlines the required and optional properties for attributes
.
Property | Required | Description |
---|---|---|
label | Specifies the label of the attribute that will be used on the classification form.
| |
description | Provides a description for the attribute. This value is used as placeholder text for
| |
type | Identifies the attribute's data type. The supported data types are:
| |
i | A Boolean value that specifies if the attribute is required, meaning that it must be filled out on the classification form. If this property is included in the JSON object, it cannot be defined as an empty string. Accepted values are
| |
u | Determines how the attribute's input fields are displayed on the classification form. There are seven potential UI elements an attribute can be set as:
| |
default | Sets a default value for the
| |
default | Sets a default value for attributes that have the
| |
default | Provides the units for the value set in the
| |
valid | An array that provides a list of options for attributes with either
| |
valid | A map that defines the grouping of options for attributes with either | |
value | Defines a list of options for attributes using an Arcade expression. This property should be used if | |
arcade | A map of keys and values that allows the Arcade expression defined for | |
i | Uses an Arcade expression that evaluates to a Boolean value that determines whether the attribute should be shown or hidden on the classification form. | |
attribute | Uses an Arcade expression to either return an empty string or an error message when a value is selected for an attribute on the classification form. | |
attribute | Designates which of the
| |
selection | Specifies the order in which selected attributes appear in the Current Selections text on the classification form. The value specified for
| |
selection | Specifies the label for an attribute when it appears in the Current Selections* text on the classification form.
| |
banner | Specifies the order in which attributes appear in the banner information stored on the item. The value specified for
| |
banner | Specifies the label for the attribute when it appears in banner information stored on the item.
| |
label | Sets the delimiter between an attribute's label and value when it's displayed in the banner information and in the Current Selections text.
| |
value | Sets the delimiter between the multiple values for an attribute when it's displayed in the banner information and in the Current Selections text. This property applies to attributes that have either the
| |
attribute | Sets the delimiter between each attribute listed in the banner information and in the Current Selections text.
| |
label | Specifies the help text that is returned whenever a user hovers over the Information button next to an attribute on the classification form.
|
Layouts
The layouts
object specifies the order of how the attributes are organized and displayed on the classification form. The layouts
object is a series of nested objects:
default
: An object that includes the details of a specific layout. This object contains the following sub-object:layout
: An object that maps each attribute to their placement on the classification form. This object contains a series of objects that each relate to the attributes defined in the schema:Elements attribute
: TheKey attribute
value should be replaced with the name of an attribute. For example, if the schema includes the attributeKey declassify
,Date attribute
would be changed toKey declassify
. EachDate attribute
object must contain the following property:Key form
: This property uses an integer value that specifies the numerlogical placement of the attribute on the classification form. For example, if anDisplay Order attribute
object has itsKey declassify
property set asDate 3
, that attribute would appear as the third UI element on the classification form.
The sample code below demonstrates how the layouts
object has been set up for a specific schema. Note that the attribute
values have been replaced with the names of the attributes that have been defined in the schema. This code sample does include the full classification schema (base properties, classification metadata, attributes, and layouts), though only the layouts
portion is shown by default.
It is important to note that the primary
will always be the first attribute displayed on the classification form.
"layouts": {
"default": {
"layoutElements": {
"classification": {
"formDisplayOrder": 1
},
"distribution": {
"formDisplayOrder": 2
},
"reviewDate": {
"formDisplayOrder": 3
}
}
}
}
}