Dimension Service API  2.0.0
api index

Dimension Service API Resources

Indexes

Indexes are the searchable collection of dimension node items via OpenSearch application which are stored at the tenant level and filtered at the dimension level. Providing a fast full-text search of dimension information stored in the dimension service data store.
Resource Description
GET index Retrieves the current tenant environment's indexing information, if available.
POST index Enables automatic indexing for the current tenant environment and all its dimensions if it was not previously enabled. Otherwise, updates the indexing information. This operation triggers an initial tenant indexing job.
DELETE index Deletes the current tenant environment's indexing information. This operation effectively removes automatic indexing from the specified tenant and all its dimensions.

Dimensions

A dimension represents a collection of items that all share a broad, common purpose or type. Within a collection there may be varying degrees of granularity (detail) and various ways of organizing and subdividing the items. A dimension is configured both by its structure and also the data it contains, represented by nodes that fit within the structure.
Resource Description
GET dimensions Returns a list of all accessible dimensions. Accept-Language HTTP Header will be used to set the languages the client is able to understand, and which locale variant is preferred.
POST dimensions Creates a new Dimension. A dimension requires an externally-provided name identifier, unique among all other dimensions (belonging to the same tenant or organization, if applicable), for use by external systems to refer to or access the dimension. Additionally, each dimension will be assigned a permanent,...
POST dimensions/resolve Batch operation used to resolve a heterogeneous list of object references in a single operation.
GET dimensions/id/{id} Returns a single object describing a specific dimension identified by its system-generated, permanent ID. There is an alternate resource available for accessing a dimension by its externally-provided name. Accept-Language HTTP Header will be used to set the languages the client is able to understand,...
GET dimensions/name/{name} Returns a single object describing a specific dimension identified by its externally-provided name. There is an alternate resource available for accessing a dimension by its system-generated, permanent ID. Accept-Language HTTP Header will be used to set the languages the client is able to understand,...
DELETE dimensions/id/{id} Logically deletes a single dimension, identified by its system-generated, permanent ID. As a result of this operation, all data stored within this dimension, including the structure of its aspects, attributes, etc., will immediately become inaccessible. This is a privileged operation. There is an alternate...
DELETE dimensions/name/{name} Logically deletes a single dimension, identified by its externally-provided name. As a result of this operation, all data stored within this dimension, including the structure of its aspects, attributes, etc., will immediately become inaccessible. This is a privileged operation. There is an alternate...
PUT {+dimension}/name Renames a dimension by assigning a new external name. As a result of this operation, the externally-provided name previously used will become inaccessible and the name provided by this operation must be used in all future requests that access the dimension by name. This is a privileged operation.
POST {+dimension}/labels Updates the list of human-readable descriptive text strings associated with a dimension. This is a privileged operation. (Note: Concurrent requests to update a label or group of labels may result in data being overwritten.)
DELETE {+dimension}/labels/{locale} Logically deletes a single label identified by locale from the specified dimension. This is a privileged operation.
GET {+dimension}/index Retrieves the dimension's indexing information, if available.
POST {+dimension}/index Enables automatic indexing for the referenced dimension if tenant automatic indexing is enabled and if it was not previously enabled. Otherwise, updates the indexing information. This operation triggers an initial dimension indexing job.
DELETE {+dimension}/index Deletes the dimension's indexing information. This operation effectively removes automatic indexing from the specified dimension.

Aspects

Aspects group the data nodes within a dimension. All member nodes within a single aspect will represent distinct values but at a uniform level of detail. For example, a node representing the State of Texas may belong to the same aspect as the State of New York because they are both states, but each also represents a distinctly separate state. As part of a dimension's structure, an aspect does not define which nodes exist, instead it defines a place where such nodes could exist.
Resource Description
GET {+dimension}/aspects Returns a list of all accessible aspects defined within a dimension. Accept-Language HTTP Header will be used to set the languages the client is able to understand, and which locale variant is preferred.
POST {+dimension}/aspects Creates a new Aspect within a Dimension. Aspects require a name identifier, unique among all other aspects in the same dimension, for use by external systems to refer to or access the aspect. Additionally, each aspect will be assigned a permanent, system-generated ID at the time of creation; however,...
GET {+dimension}/aspects/id/{id} Returns a single object describing a specific aspect identified by its system-generated ID.
GET {+dimension}/aspects/name/{name} Returns a single object describing a specific aspect identified by its externally-provided name.
DELETE {+dimension}/aspects/id/{id} Logically deletes a single aspect, identified by its system-generated, permanent ID. As a result of this operation, all related data stored for this aspect, including the nodes it contains, etc., will immediately become inaccessible. This is a privileged operation. (Note: The special root aspect of a...
DELETE {+dimension}/aspects/name/{name} Logically deletes a single aspect, identified by its externally-provided name. As a result of this operation, all related data stored for this aspect, including the nodes it contains, etc., will immediately become inaccessible. This is a privileged operation. (Note: The special root aspect of a dimension...
PUT {+dimensionAspect}/name Renames the aspect by assigning a new external name. As a result of this operation, the externally-provided name previously used will become inaccessible and the name provided by this operation must be used in all future requests that access the aspect by name. This is a privileged operation.
POST {+dimensionAspect}/labels Updates the list of human-readable descriptive text strings associated with an aspect. This is a privileged operation. (Note: Concurrent requests to update a label or group of labels may result in data being overwritten.)
DELETE {+dimensionAspect}/labels/{locale} Logically deletes a single label identified by locale from the specified aspect. This is a privileged operation.

Nodes

A dimension's data is stored within one or more nodes, and the nodes must fit within exactly one of the dimension's pre-defined aspects. A node cannot move from one aspect to another, because generally the aspect is intrinsic to what the node represents. The primary data represented by a node are its identifiers (used by external systems to reference the node) and the relationships between it and any other nodes within the same dimension.

Nodes can also store supplemental information; this is covered by the Attributes topic.

Resource Description
GET {+dimension}/nodes Searches all nodes within a specific dimension and returns a paged list of matching nodes.
POST {+dimension}/nodes/search Searches all nodes within a specific dimension and returns a paged list of matching nodes. This endpoint supports sorting and more advanced functionality.
POST {+dimensionAspect}/nodes Creates a new dimension node within a specific aspect. Nodes require a name identifier, unique among all other nodes in the same dimension, for use by external systems to refer to or access the node. Additionally, each node will be assigned a permanent, system-generated ID at the time of creation; however,...
POST {+dimensionAspect}/nodes/batch Batch operation to create multiple new dimension nodes within a specified aspect. This is a privileged operation.
GET {+dimension}/nodes/id/{id} Returns a single object describing a specific node identified by its system-generated ID.
GET {+dimension}/nodes/name/{name} Returns a single object describing a specific node identified by its externally-provided name.
POST {+dimension}/nodes/id Given a list of node IDs within a single dimension, returns an expanded list of dimension node objects which include details of each node's label, name, parent aspects, and the values of specifically-requested attributes (if any). Nodes appear in the result in the same order as originally specified in...
POST {+dimension}/nodes/name Given a list of node names within a single dimension, returns an expanded list of dimension node objects which include details of each node's label, ID, name, parent aspects, and the values of specifically-requested attributes (if any). Nodes appear in the result in the same order as originally specified...
POST {+dimensionAspect}/nodes/id Given a dimension node ID list, returns an expanded list of dimension nodes with more details including aspect IDs, labels and names, in the context of a particular dimension aspect. Nodes in the result list are in the same order as the input list. A null object in the result list corresponds to an input...
POST {+dimensionAspect}/nodes/name Given a dimension node name list, returns an expanded list of dimension nodes with more details including aspect IDs, labels and names, in the context of a particular dimension aspect. Nodes in the result list are in the same order as the input list. A null object in the result list corresponds to an...
DELETE {+dimension}/nodes/id/{id} Logically deletes a single node identified by its system-generated, permanent ID. As a result of this operation, all related data stored for this node, including any attribute values, relationships to other nodes, etc., will immediately become inaccessible. This is a privileged operation. (Note: The...
DELETE {+dimension}/nodes/name/{name} Logically deletes a single node identified by its externally-provided name. As a result of this operation, all related data stored for this node, including any attribute values, relationships to other nodes, etc., will immediately become inaccessible. This is a privileged operation. (Note: The special...
PUT {+dimensionNode}/name Renames the node by assigning a new external name. As a result of this operation, the externally-provided name previously used will become inaccessible and the name provided by this operation must be used in all future requests that access the node by name. This is a privileged operation.
POST {+dimensionNode}/labels Updates the list of human-readable descriptive text strings associated with a specific node. This is a privileged operation. (Note: Concurrent requests to update a label or group of labels may result in data being overwritten.)
DELETE {+dimensionNode}/labels/{locale} Logically deletes a single label identified by locale from the specified node. This is a privileged operation.
GET {+dimensionAspect}/nodes Searches all nodes within a specific dimension aspect and returns a paged list of matching nodes.
GET {+dimensionAspect}/nodes/id/{id} Returns a single object describing a specific node identified by its system-generated ID. The requested node must exist within the specified aspect.
GET {+dimensionAspect}/nodes/name/{name} Returns a single object describing a specific node identified by its externally-provided name. The requested node must exist within the specified aspect.
POST {+dimensionNode}/ancestor Sets or updates the ancestor of a specific node. The ancestor must belong to a different aspect than the one assigned to the specific node. This is a privileged operation.

Attributes

Attributes store supplemental information about an item. An attribute is defined in one place (e.g. a dimension) but may often have multiple values, each associated with a different item (e.g. that dimension's nodes). Depending on which item you query, you may observe different values for the same attribute definition. Every attribute is typed to hold a specific kind of data, with optional constraints placed on the values it will accept. For example, dimension nodes representing places in a geography could support a "population" attribute. In that case, the attribute might also be constrained to only integer values greater than or equal to zero.
Resource Description
GET {+dimension}/node-attributes Returns a list of all accessible node attributes defined within a dimension.
POST {+dimension}/node-attributes Creates a new attribute whose values are stored in nodes of the same dimension. Attributes require a name identifier and a constraint. The AttributeConstraint describes the attribute's data type and any other boundary conditions. The attribute's name must be unique among all other attributes in the same...
GET {+dimension}/node-attributes/id/{id} Returns a single object describing a specific node attribute, identified by its system-generated ID.
GET {+dimension}/node-attributes/name/{name} Returns a single object describing a specific node attribute, identified by its externally-provided name.
DELETE {+dimension}/node-attributes/id/{id} Logically deletes a single node attribute, identified by its system-generated, permanent ID. As a result of this operation, all related values stored for this attribute, across all nodes in the dimension, will immediately become inaccessible. This is a privileged operation.
DELETE {+dimension}/node-attributes/name/{name} Logically deletes a single node attribute, identified by its externally-provided name. As a result of this operation, all related values stored for this attribute, across all nodes in the dimension, will immediately become inaccessible. This is a privileged operation.
PUT {+nodeAttribute}/name Renames the node attribute by assigning a new external name. As a result of this operation, the externally-provided name previously used will become inaccessible and the name provided by this operation must be used in all future requests that access the attribute by name. This is a privileged operat...
GET {+dimensionNode}/attributes Returns a list of all defined, non-null attribute values for a node. Attributes that do not have a value assigned to this node and also do not define a default value will not be listed.
GET {+dimensionNode}/attributes/id/{id} Returns a single object describing the attribute value for a node, identified by the attribute's system-generated ID.
GET {+dimensionNode}/attributes/name/{name} Returns a single object describing the attribute value for a node, identified by the attribute's externally-provided name.
DELETE {+dimensionNode}/attributes/id/{id} Deletes a single attribute value for a specific node, identified by the attribute's system-generated, permanent ID. Subsequent GET operations for the attribute on this node will return either no value or the attribute's default value, when defined. This is a privileged operation.
DELETE {+dimensionNode}/attributes/name/{name} Deletes a single attribute value for a specific node, identified by the attribute's externally-provided name. Subsequent GET operations for the attribute on this node will return either no value or the attribute's default value, when defined. This is a privileged operation.
PUT {+dimensionNode}/attributes/id/{id} Sets a single attribute value for a specific node, identified by the attribute's system-generated, permanent ID. The new value must match the type and satisfy all constraints defined for the attribute. This is a privileged operation.
PUT {+dimensionNode}/attributes/name/{name} Sets a single attribute value for a specific node, identified by the attribute's externally-provided name. The new value must match the type and satisfy all constraints defined for the attribute. This is a privileged operation.
POST {+nodeAttribute}/labels Updates the list of human-readable descriptive text strings associated with a specific attribute. This is a privileged operation. (Note: Concurrent requests to update a label or group of labels may result in data being overwritten.)
DELETE {+nodeAttribute}/labels/{locale} Logically deletes a single label identified by locale from the specified attribute. This is a privileged operation.