openapi: 3.0.1 info: title: Node API Specification description: This specification describes the endpoints of the node service version: 0-SNAPSHOT servers: - url: http://localhost description: local development host tags: - name: Node management description: Management functions for nodes - name: Node Custom Data Management description: Management functions for node custom data paths: /node/v1/nodes: get: tags: - Node management summary: Get nodes description: Reads nodes operationId: getNodes parameters: - name: query in: query required: false content: application/json: schema: $ref: '#/components/schemas/NodeQueryV1' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/count' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK headers: Page-Offset: $ref: '#/components/headers/Page-Offset' Page-Limit: $ref: '#/components/headers/Page-Limit' Page-Total: $ref: '#/components/headers/Page-Total' Data-Projected: $ref: '#/components/headers/Data-Projected' content: application/json: schema: type: array items: $ref: '#/components/schemas/NodeV1' application/x-ndjson: schema: type: array items: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' security: - iam-tenant-token: [] post: tags: - Node management summary: Create new root node description: Creates a new root node with the given details operationId: createRootNode parameters: - $ref: '#/components/parameters/Application-Firewall-Key' requestBody: content: application/json: schema: $ref: '#/components/schemas/NodeInV1' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] /node/v1/nodes/~list: post: tags: - Node management summary: List nodes description: Read nodes via a posted query operationId: listNodes parameters: - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/count' - $ref: '#/components/parameters/Application-Firewall-Key' requestBody: content: application/json: schema: $ref: '#/components/schemas/NodeQueryV1' responses: "200": description: OK headers: Page-Offset: $ref: '#/components/headers/Page-Offset' Page-Limit: $ref: '#/components/headers/Page-Limit' Page-Total: $ref: '#/components/headers/Page-Total' Data-Projected: $ref: '#/components/headers/Data-Projected' content: application/json: schema: type: array items: $ref: '#/components/schemas/NodeV1' application/x-ndjson: schema: type: array items: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' security: - iam-tenant-token: [] /node/v1/nodes/~tail: get: tags: - Node management summary: Tail nodes description: Reads node information continuously operationId: tailNodes parameters: - $ref: '#/components/parameters/sinceChangeId' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK content: application/x-ndjson: schema: type: array items: $ref: '#/components/schemas/NodeTailEntryV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}: get: tags: - Node management summary: Get node by expression description: Reads a node with the given node expression operationId: getNode parameters: - $ref: '#/components/parameters/node-expression' - name: projection in: query required: false content: application/json: schema: $ref: '#/components/schemas/NodeProjectionV1' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK headers: Data-Projected: $ref: '#/components/headers/Data-Projected' content: application/json: schema: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' security: - iam-tenant-token: [] delete: tags: - Node management summary: Delete node by expression description: Removes an node with the given node expression operationId: deleteNodeByExpression parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "204": description: The request is processed and no content was returned "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}/~disable: post: tags: - Node management summary: Disable node description: Updates the node status to disabled operationId: disableNode parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}/~enable: post: tags: - Node management summary: Enable node description: Updates the node status to enabled operationId: enableNode parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}/children: post: tags: - Node management summary: Create new child node description: Creates a new child node with the given details for referenced node operationId: createChildNode parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/Application-Firewall-Key' requestBody: content: application/json: schema: $ref: '#/components/schemas/NodeInV1' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}/description: put: tags: - Node management summary: Set node description description: Updates the description for the referenced node operationId: setDescription parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' requestBody: content: application/json: schema: $ref: '#/components/schemas/DescriptionValueInV1' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] delete: tags: - Node management summary: Delete node description description: Removes the description for the referenced node operationId: deleteDescription parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}/name: put: tags: - Node management summary: Set node name description: Update the name of the referenced node operationId: setName parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' requestBody: content: application/json: schema: $ref: '#/components/schemas/NameLongValueInV1' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] delete: tags: - Node management summary: Delete node name description: Removes the name for the referenced node operationId: deleteName parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}/custom-attributes/{custom-attribute-type}: put: tags: - Node Custom Data Management summary: Upsert node custom attribute description: Upsert a custom attribute by its type for the given node operationId: upsertCustomAttributeEntry parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/custom-attribute-type' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomAttributeValueInV1' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "204": $ref: '#/components/responses/NoContent' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] delete: tags: - Node Custom Data Management summary: Delete node custom attribute description: Remove a custom attribute by its type for the given node operationId: deleteCustomAttributeEntry parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/custom-attribute-type' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "204": $ref: '#/components/responses/NoContent' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}/custom-ids/{custom-id-type}: put: tags: - Node Custom Data Management summary: Upsert node custom id description: Upsert a custom id by its type for the given node operationId: upsertCustomIdEntry parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/custom-id-type' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomIdInWithoutTypeV1' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "204": $ref: '#/components/responses/NoContent' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] delete: tags: - Node Custom Data Management summary: Delete node custom id description: Remove a custom id by its type for the given node operationId: deleteCustomIdEntry parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/custom-id-type' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "204": $ref: '#/components/responses/NoContent' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}/custom-statuses: post: tags: - Node Custom Data Management summary: Append node custom statuses description: Appends custom statuses for the given node operationId: appendCustomStatuses parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/CustomStatusInV1' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "204": $ref: '#/components/responses/NoContent' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}/custom-statuses/{custom-status-type}: put: tags: - Node Custom Data Management summary: Upsert node custom status description: Upsert a custom status by its type for the given node operationId: upsertCustomStatusEntry parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/custom-status-type' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomStatusInWithoutTypeV1' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "204": $ref: '#/components/responses/NoContent' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] delete: tags: - Node Custom Data Management summary: Delete node custom status description: Remove a custom status by its type for the given node and its history operationId: deleteCustomStatusEntry parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/custom-status-type' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "204": $ref: '#/components/responses/NoContent' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' security: - iam-tenant-token: [] /node/v1/nodes/{node-expression}/custom-strings/{custom-string-type}: put: tags: - Node Custom Data Management summary: Upsert node custom string description: Upsert a custom string by its type for the given node operationId: upsertCustomString parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/custom-string-type' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomStringInWithoutTypeV1' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "204": $ref: '#/components/responses/NoContent' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' "409": $ref: '#/components/responses/Conflict' security: - iam-tenant-token: [] delete: tags: - Node Custom Data Management summary: Delete node custom string description: Remove a custom string by its type for the given node operationId: deleteCustomString parameters: - $ref: '#/components/parameters/node-expression' - $ref: '#/components/parameters/custom-string-type' - $ref: '#/components/parameters/returnUpdated' - $ref: '#/components/parameters/Application-Firewall-Key' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/NodeV1' "204": $ref: '#/components/responses/NoContent' "400": $ref: '#/components/responses/BadRequest' "401": $ref: '#/components/responses/Unauthorized' "403": $ref: '#/components/responses/Forbidden' "404": $ref: '#/components/responses/NotFound' security: - iam-tenant-token: [] components: schemas: ChangeIdConditionV1: required: - operator type: object properties: operator: type: string description: "Operation applied on conditions made on a field. Example:\ \ AGE_YEAR GREATER_THAN 16. Note that support for respective operator\ \ is dependant on the underlying value type. See separate documentation\ \ for full details." enum: - EQUALS - NOT_EQUALS - LESS_THAN - LESS_THAN_OR_EQUALS - GREATER_THAN - GREATER_THAN_OR_EQUALS - ANY_OF - NONE_OF - ALL_OF - EXISTS - NOT_EXISTS values: maxItems: 500 minItems: 0 type: array description: The value(s) to check in conjunction with the supplied operator items: type: string description: Text representation of changeId sequence number example: "7380283282446876762" description: Filter nodes based on their changeId field CustomAttributeConditionV1: required: - type type: object properties: type: $ref: '#/components/schemas/CustomTypeConditionV1' description: Filter nodes based on a specific customAttribute CustomAttributeElementProjectionV1: required: - typeCondition type: object properties: typeCondition: $ref: '#/components/schemas/CustomAttributeProjectionConditionV1' description: CustomAttribute projection settings CustomAttributeInV1: required: - type - value type: object properties: type: maxLength: 64 minLength: 1 pattern: "^[a-zA-Z0-9-_.]{1,64}$" type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" value: type: object description: The custom data that is associated with this type description: Attributes to be defined for the node CustomAttributeProjectionConditionV1: required: - operator - values type: object properties: operator: type: string description: Operator to be applied in conjunction with 'values' for a match default: ANY_OF enum: - ANY_OF - NONE_OF values: maxItems: 100 minItems: 0 type: array description: Acceptable value for a subfield condition match items: type: string description: Acceptable value for a subfield condition match CustomAttributeV1: required: - type - value type: object properties: type: type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" value: type: object description: The custom data that is associated with this type description: Attributes to be defined for the node CustomAttributeValueInV1: required: - value type: object properties: value: type: object description: The custom data that is associated with this path CustomAttributesProjectionV1: type: object properties: mode: $ref: '#/components/schemas/ProjectionModeTypeV1' subfieldProjections: maxItems: 100 minItems: 0 type: array items: $ref: '#/components/schemas/CustomAttributeElementProjectionV1' description: CustomAttributes projection settings CustomIdConditionV1: required: - type type: object properties: type: $ref: '#/components/schemas/CustomTypeConditionV1' value: $ref: '#/components/schemas/StringConditionV1' description: Filter nodes based on their customId field CustomIdElementProjectionV1: required: - typeCondition type: object properties: typeCondition: $ref: '#/components/schemas/CustomIdProjectionConditionV1' description: CustomIds projection settings CustomIdInV1: required: - type - value type: object properties: type: maxLength: 64 minLength: 1 pattern: "^[a-zA-Z0-9-_.]{1,64}$" type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" value: maxLength: 128 minLength: 1 type: string description: The value for a specific entity and its corresponding customIdType example: ABC123 description: Custom ids to be set for the node CustomIdInWithoutTypeV1: required: - value type: object properties: value: type: string description: The value for a specific entity and its corresponding customIdType example: ABC123 CustomIdProjectionConditionV1: required: - operator - values type: object properties: operator: type: string description: Operator to be applied in conjunction with 'values' for a match default: ANY_OF enum: - ANY_OF - NONE_OF values: maxItems: 100 minItems: 0 type: array description: Acceptable value for a subfield condition match items: type: string description: Acceptable value for a subfield condition match CustomIdV1: required: - type - value type: object properties: type: type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" value: type: string description: The value for a specific entity and its corresponding customIdType example: ABC123 description: CustomIds of the node CustomIdsProjectionV1: type: object properties: mode: $ref: '#/components/schemas/ProjectionModeTypeV1' subfieldProjections: maxItems: 100 minItems: 0 type: array items: $ref: '#/components/schemas/CustomIdElementProjectionV1' description: CustomIds projection settings CustomStatusConditionV1: required: - type type: object properties: type: $ref: '#/components/schemas/CustomTypeConditionV1' value: $ref: '#/components/schemas/StringConditionV1' historicValue: $ref: '#/components/schemas/StringConditionV1' note: $ref: '#/components/schemas/StringConditionV1' createdAt: $ref: '#/components/schemas/ZonedDateTimeConditionV1' createdBy: $ref: '#/components/schemas/StringConditionV1' statusFrom: $ref: '#/components/schemas/ZonedDateTimeConditionV1' description: Filter nodes based on a specific customStatus CustomStatusElementProjectionV1: type: object properties: typeCondition: $ref: '#/components/schemas/CustomStatusProjectionConditionV1' note: $ref: '#/components/schemas/FieldProjectionV1' statusFrom: $ref: '#/components/schemas/FieldProjectionV1' createdAt: $ref: '#/components/schemas/FieldProjectionV1' createdBy: $ref: '#/components/schemas/FieldProjectionV1' previousValues: $ref: '#/components/schemas/FieldProjectionV1' description: CustomStatusElement projection settings CustomStatusInV1: required: - type - value type: object properties: type: maxLength: 64 minLength: 1 pattern: "^[a-zA-Z0-9-_.]{1,64}$" type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" value: maxLength: 256 minLength: 1 type: string description: A custom status value example: Operational note: maxLength: 128 minLength: 0 type: string description: "A note/comment, could be a code or free text." statusFrom: type: string description: User provided date time of when the status was considered started. If omitted this will default to the current server timestamp and be the same as the created at attribute. This string is formatted according to RFC3339. format: date-time CustomStatusInWithoutTypeV1: required: - value type: object properties: value: maxLength: 256 minLength: 1 type: string description: A custom status value example: Operational note: maxLength: 128 minLength: 0 type: string description: "A note/comment, could be a code or free text." statusFrom: type: string description: User provided date time of when the status was considered started. If omitted this will default to the current server timestamp and be the same as the created at attribute. This string is formatted according to RFC3339. format: date-time CustomStatusPreviousValueV1: required: - createdAt - createdBy - replacedAt - replacedBy - statusFrom - statusTo - value type: object properties: value: type: string description: A custom status value example: Operational note: type: string description: "A note/comment, could be a code or free text." statusFrom: type: string description: User provided date time of when the status was considered started. If this value was omitted when the entry was created then it will have the same value as the created at attribute. This string is formatted according to RFC3339. format: date-time statusTo: type: string description: User provided date time of when the status was considered ended. This string is formatted according to RFC3339. format: date-time createdAt: type: string description: UTC date time when the custom status was created. This string is formatted according to RFC3339. format: date-time createdBy: type: string description: The globally unique identifier for an actor replacedAt: type: string description: UTC date time when the custom status was replaced. This string is formatted according to RFC3339. format: date-time replacedBy: type: string description: The globally unique identifier for an actor description: "Historic values for this custom status, ordered by descending\ \ createdAt" CustomStatusProjectionConditionV1: required: - operator - values type: object properties: operator: type: string description: Operator to be applied in conjunction with 'values' for a match default: ANY_OF enum: - ANY_OF - NONE_OF values: maxItems: 100 minItems: 0 type: array description: Acceptable value for a subfield condition match items: type: string description: Acceptable value for a subfield condition match CustomStatusV1: required: - createdAt - createdBy - statusFrom - type - value type: object properties: type: type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" value: type: string description: A custom status value example: Operational note: type: string description: "A note/comment, could be a code or free text." statusFrom: type: string description: User provided date time of when the status was considered started. If this value was omitted when the entry was created then it will have the same value as the created at attribute. This string is formatted according to RFC3339. format: date-time createdAt: type: string description: UTC date time when the custom status was created. This string is formatted according to RFC3339. format: date-time createdBy: type: string description: The globally unique identifier for an actor previousValues: type: array description: "Historic values for this custom status, ordered by descending\ \ createdAt" items: $ref: '#/components/schemas/CustomStatusPreviousValueV1' description: Custom statuses defined by the caller CustomStatusesProjectionV1: type: object properties: mode: $ref: '#/components/schemas/ProjectionModeTypeV1' subfieldProjections: maxItems: 100 minItems: 0 type: array items: $ref: '#/components/schemas/CustomStatusElementProjectionV1' description: CustomStatuses projection settings CustomStringConditionV1: required: - type type: object properties: type: $ref: '#/components/schemas/CustomTypeConditionV1' value: $ref: '#/components/schemas/StringConditionV1' description: Filter nodes based on their customString field CustomStringElementProjectionV1: required: - typeCondition type: object properties: typeCondition: $ref: '#/components/schemas/CustomStringProjectionConditionV1' description: CustomStrings projection settings CustomStringInV1: required: - type - value type: object properties: type: maxLength: 64 minLength: 1 pattern: "^[a-zA-Z0-9-_.]{1,64}$" type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" value: maxLength: 256 type: string description: A custom string value example: ABC123 description: Custom strings to be set for the node CustomStringInWithoutTypeV1: required: - value type: object properties: value: maxLength: 256 type: string description: A custom string value example: ABC123 CustomStringProjectionConditionV1: required: - operator - values type: object properties: operator: type: string description: Operator to be applied in conjunction with 'values' for a match default: ANY_OF enum: - ANY_OF - NONE_OF values: maxItems: 100 minItems: 0 type: array description: Acceptable value for a subfield condition match items: type: string description: Acceptable value for a subfield condition match CustomStringV1: required: - type - value type: object properties: type: type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" value: type: string description: A custom string value example: ABC123 description: CustomStrings of the node CustomStringsProjectionV1: type: object properties: mode: $ref: '#/components/schemas/ProjectionModeTypeV1' subfieldProjections: maxItems: 100 minItems: 0 type: array items: $ref: '#/components/schemas/CustomStringElementProjectionV1' description: CustomStrings projection settings CustomTypeConditionV1: required: - value type: object properties: value: maxLength: 64 minLength: 1 pattern: "^[a-zA-Z0-9-_.]{1,64}$" type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" operator: type: string description: Operator used to match type default: EXISTS enum: - EXISTS - NOT_EXISTS description: Filter customAttribute based on this custom attribute type DescriptionValueInV1: type: object properties: description: maxLength: 4096 type: string description: "A description, usually for an entity" example: "Lorem ipsum dolor sit amet, consectetur adipiscing elit." ErrorDetailV1: required: - code type: object properties: field: type: string description: A reference to a field or parameter which cannot be processed code: type: string description: "A code which indicated the type of error, documented per service" message: type: string description: "Additional information, intended for developers" description: "Additional error details, usually used for form validation. Documented\ \ per service and endpoint." ErrorV1: required: - errorId type: object properties: errorId: type: string description: "An error identifier for the request, to be provided in troubleshooting." code: type: string description: An error code which describes this error. Documented per service and endpoint. message: type: string description: A human readable message of error. Intended for developers. details: type: array description: "Additional error details, usually used for form validation.\ \ Documented per service and endpoint." items: $ref: '#/components/schemas/ErrorDetailV1' FieldProjectionV1: type: object properties: mode: $ref: '#/components/schemas/ProjectionModeTypeV1' description: Field projection settings NameLongValueInV1: required: - name type: object properties: name: maxLength: 256 type: string description: "A name, usually for an entity" example: John Doe NodeConditionV1: type: object properties: operator: type: string description: Operator used when combining several conditions together default: AND enum: - AND - OR conditions: maxItems: 32 minItems: 0 type: array description: A list of conditions which in combination with any given fieldConditions and the given operator should result in true. items: $ref: '#/components/schemas/NodeConditionV1' nodeId: $ref: '#/components/schemas/StringConditionV1' parentNodeId: $ref: '#/components/schemas/StringConditionV1' ancestorNodeId: $ref: '#/components/schemas/StringConditionV1' type: $ref: '#/components/schemas/StringConditionV1' name: $ref: '#/components/schemas/StringConditionV1' status: $ref: '#/components/schemas/NodeStatusConditionV1' customId: $ref: '#/components/schemas/CustomIdConditionV1' customString: $ref: '#/components/schemas/CustomStringConditionV1' customStatus: $ref: '#/components/schemas/CustomStatusConditionV1' customAttribute: $ref: '#/components/schemas/CustomAttributeConditionV1' createdAt: $ref: '#/components/schemas/ZonedDateTimeConditionV1' createdBy: $ref: '#/components/schemas/StringConditionV1' lastModifiedBy: $ref: '#/components/schemas/StringConditionV1' lastModifiedAt: $ref: '#/components/schemas/ZonedDateTimeConditionV1' changeId: $ref: '#/components/schemas/ChangeIdConditionV1' NodeInV1: required: - type type: object properties: nodeIdPrefix: maxLength: 16 pattern: "^[a-zA-Z0-9-_&|#%?<>./:;,!\\[\\]()]{0,16}$" type: string description: This optional field can be used to give a prefix for the nodeId which is about to be created example: organization type: maxLength: 256 minLength: 1 pattern: "^[a-zA-Z0-9-_.]{1,256}$" type: string description: "The node type. Used to distinguish different variants and\ \ to tie configurations, permissions and rules." example: "ORGANIZATION, GROUP, COHORT" name: maxLength: 256 type: string description: "A name, usually for an entity" example: John Doe description: type: string description: "A description, usually for an entity" example: "Lorem ipsum dolor sit amet, consectetur adipiscing elit." customIds: maxItems: 10 minItems: 0 type: array description: Custom ids to be set for the node items: $ref: '#/components/schemas/CustomIdInV1' customStrings: maxItems: 10 minItems: 0 type: array description: Custom strings to be set for the node items: $ref: '#/components/schemas/CustomStringInV1' customStatuses: maxItems: 10 minItems: 0 type: array description: Custom statuses defined by the caller items: $ref: '#/components/schemas/CustomStatusInV1' customAttributes: maxItems: 10 minItems: 0 type: array description: Attributes to be defined for the node items: $ref: '#/components/schemas/CustomAttributeInV1' NodeProjectionV1: type: object properties: name: $ref: '#/components/schemas/FieldProjectionV1' description: $ref: '#/components/schemas/FieldProjectionV1' tags: $ref: '#/components/schemas/FieldProjectionV1' parentNodeId: $ref: '#/components/schemas/FieldProjectionV1' ancestorNodeIds: $ref: '#/components/schemas/FieldProjectionV1' type: $ref: '#/components/schemas/FieldProjectionV1' status: $ref: '#/components/schemas/StatusProjectionV1' customIds: $ref: '#/components/schemas/CustomIdsProjectionV1' customStrings: $ref: '#/components/schemas/CustomStringsProjectionV1' customStatuses: $ref: '#/components/schemas/CustomStatusesProjectionV1' customAttributes: $ref: '#/components/schemas/CustomAttributesProjectionV1' tenantId: $ref: '#/components/schemas/FieldProjectionV1' createdAt: $ref: '#/components/schemas/FieldProjectionV1' createdBy: $ref: '#/components/schemas/FieldProjectionV1' lastModifiedAt: $ref: '#/components/schemas/FieldProjectionV1' lastModifiedBy: $ref: '#/components/schemas/FieldProjectionV1' NodeQueryV1: type: object properties: projection: $ref: '#/components/schemas/NodeProjectionV1' filter: $ref: '#/components/schemas/NodeConditionV1' sort: type: array items: $ref: '#/components/schemas/NodeSortByV1' NodeSortByV1: required: - field type: object properties: field: type: string description: The field to sort on enum: - NAME - TYPE - STATUS - STATUS_TIMESTAMP - CUSTOM_ID_VALUE - CUSTOM_STATUS_VALUE - CUSTOM_STRING_VALUE - CREATED_AT - LAST_MODIFIED_AT - CHANGE_ID type: type: string description: "An optional type selector for the field. Could be used to\ \ map to underlying field in an array or map. Used together with custom\ \ data, like custom statuses." order: type: string description: "Sorting order. ASC - ascending, DESC - descending" default: ASC enum: - ASC - DESC NodeStatusConditionV1: type: object properties: value: $ref: '#/components/schemas/NodeStatusValueConditionV1' createdAt: $ref: '#/components/schemas/ZonedDateTimeConditionV1' createdBy: $ref: '#/components/schemas/StringConditionV1' description: Filter nodes based on their status NodeStatusValueConditionV1: required: - operator type: object properties: operator: type: string description: "Operation applied on conditions made on a field. Example:\ \ AGE_YEAR GREATER_THAN 16. Note that support for respective operator\ \ is dependant on the underlying value type. See separate documentation\ \ for full details." enum: - EQUALS - NOT_EQUALS - ANY_OF - NONE_OF - ALL_OF - EXISTS - NOT_EXISTS values: maxItems: 500 minItems: 0 type: array description: The value(s) to check in conjunction with the supplied operator items: type: string description: The value(s) to check in conjunction with the supplied operator enum: - ENABLED - DISABLED description: Filter nodes based on their status value NodeTailEntryV1: required: - id type: object properties: id: type: string description: The globally unique identifier for a node deleted: type: boolean description: Details if the entity has been removed data: $ref: '#/components/schemas/NodeV1' NodeV1: required: - changeId - createdAt - createdBy - lastModifiedAt - lastModifiedBy - nodeId - status - tenantId - type type: object properties: nodeId: type: string description: The globally unique identifier for a node parentNodeId: type: string description: The globally unique identifier for a node ancestorNodeIds: type: array description: The node ancestor hierarchy starting with the closet parent and ending with the most distant grand parent items: type: string description: The globally unique identifier for a node name: type: string description: "A name, usually for an entity" example: John Doe description: type: string description: "A description, usually for an entity" example: "Lorem ipsum dolor sit amet, consectetur adipiscing elit." type: type: string description: "The node type. Used to distinguish different variants and\ \ to tie configurations, permissions and rules." example: "ORGANIZATION, GROUP, COHORT" status: $ref: '#/components/schemas/StatusV1' customIds: type: array description: CustomIds of the node items: $ref: '#/components/schemas/CustomIdV1' customStrings: type: array description: CustomStrings of the node items: $ref: '#/components/schemas/CustomStringV1' customStatuses: type: array description: Custom statuses defined by the caller items: $ref: '#/components/schemas/CustomStatusV1' customAttributes: type: array description: Attributes to be defined for the node items: $ref: '#/components/schemas/CustomAttributeV1' tenantId: type: string description: The globally unique identifier for a tenant createdAt: type: string description: UTC date time when entity was created. This string is formatted according to RFC3339. format: date-time createdBy: type: string description: The globally unique identifier for an actor lastModifiedAt: type: string description: UTC date time when entity was modified. This string is formatted according to RFC3339. format: date-time lastModifiedBy: type: string description: The globally unique identifier for an actor changeId: type: string description: Text representation of changeId sequence number example: "7380283282446876762" ProjectionModeTypeV1: type: string description: Indicates if the field shall be included in the result. Defaults to INCLUDE if omitted. default: INCLUDE enum: - INCLUDE - EXCLUDE StatusPreviousValueV1: required: - createdAt - createdBy - replacedAt - replacedBy - value type: object properties: value: type: string description: A status value example: Operational createdAt: type: string description: UTC date time when the status was created. This string is formatted according to RFC3339. format: date-time createdBy: type: string description: The globally unique identifier for an actor replacedAt: type: string description: UTC date time when the status ended. This string is formatted according to RFC3339. format: date-time replacedBy: type: string description: The globally unique identifier for an actor description: "Historic values for this status, ordered by descending createdAt" StatusProjectionV1: type: object properties: mode: $ref: '#/components/schemas/ProjectionModeTypeV1' createdAt: $ref: '#/components/schemas/FieldProjectionV1' createdBy: $ref: '#/components/schemas/FieldProjectionV1' previousValues: $ref: '#/components/schemas/FieldProjectionV1' StatusV1: required: - createdAt - createdBy - value type: object properties: value: type: string description: A status value example: Operational createdAt: type: string description: UTC date time when the status was created. This string is formatted according to RFC3339. format: date-time createdBy: type: string description: The globally unique identifier for an actor previousValues: type: array description: "Historic values for this status, ordered by descending createdAt" items: $ref: '#/components/schemas/StatusPreviousValueV1' StringConditionV1: required: - operator type: object properties: operator: type: string description: "Operation applied on conditions made on a field. Example:\ \ AGE_YEAR GREATER_THAN 16. Note that support for respective operator\ \ is dependant on the underlying value type. See separate documentation\ \ for full details." enum: - EQUALS - NOT_EQUALS - LESS_THAN - LESS_THAN_OR_EQUALS - GREATER_THAN - GREATER_THAN_OR_EQUALS - REGEXP - ANY_OF - NONE_OF - ALL_OF - EXISTS - NOT_EXISTS values: maxItems: 500 minItems: 0 type: array description: The value(s) to check in conjunction with the supplied operator items: type: string description: The value(s) to check in conjunction with the supplied operator description: Filter nodes based on their lastModifiedBy field ZonedDateTimeConditionV1: required: - operator type: object properties: operator: type: string description: "Operation applied on conditions made on a field. Example:\ \ AGE_YEAR GREATER_THAN 16. Note that support for respective operator\ \ is dependant on the underlying value type. See separate documentation\ \ for full details." enum: - PASSED - NOT_PASSED - EQUALS - NOT_EQUALS - LESS_THAN - LESS_THAN_OR_EQUALS - GREATER_THAN - GREATER_THAN_OR_EQUALS - ANY_OF - NONE_OF - ALL_OF - EXISTS - NOT_EXISTS values: maxItems: 500 minItems: 0 type: array description: The value(s) to check in conjunction with the supplied operator items: type: string description: The value(s) to check in conjunction with the supplied operator format: date-time description: Filter nodes based on their lastModifiedAt field responses: NoContent: description: The request is processed and no content was returned BadRequest: description: "The request is malformed, see error data for additional information" content: application/json: schema: $ref: '#/components/schemas/ErrorV1' Unauthorized: description: The request did not have valid authentication credentials content: application/json: schema: $ref: '#/components/schemas/ErrorV1' Forbidden: description: The requester is not authorized to perform this action content: application/json: schema: $ref: '#/components/schemas/ErrorV1' NotFound: description: The resource could not be found content: application/json: schema: $ref: '#/components/schemas/ErrorV1' Conflict: description: "The request could not be processed due to a conflict in state,\ \ see error data for additional information" content: application/json: schema: $ref: '#/components/schemas/ErrorV1' parameters: Application-Firewall-Key: name: Application-Firewall-Key in: header description: Application firewall authorization key to be used for protected services required: false schema: type: string count: name: count in: query description: Count the total amount of matched records for the given query schema: type: boolean default: false custom-attribute-type: name: custom-attribute-type in: path required: true schema: maxLength: 64 minLength: 1 pattern: "^[a-zA-Z0-9-_.]{1,64}$" type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" custom-id-type: name: custom-id-type in: path required: true schema: maxLength: 64 minLength: 1 pattern: "^[a-zA-Z0-9-_.]{1,64}$" type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" custom-status-type: name: custom-status-type in: path required: true schema: maxLength: 64 minLength: 1 pattern: "^[a-zA-Z0-9-_.]{1,64}$" type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" custom-string-type: name: custom-string-type in: path required: true schema: maxLength: 64 minLength: 1 pattern: "^[a-zA-Z0-9-_.]{1,64}$" type: string description: a custom value type for an entity. example: "Age, ExternalId, Status, Condition, Tags" limit: name: limit in: query description: Maximum limit of returned results schema: type: integer format: int32 default: 500 node-expression: name: node-expression in: path required: true schema: pattern: "^[a-zA-Z0-9-_.]{1,64}$|^[a-zA-Z0-9-_.]{1,64}=.{1,128}$" type: string description: "Used to identify a specific node. The available options are:\ \ \n* '{nodeId}' - direct nodeId reference\n* '{customIdType}={customIdValue}'\ \ - reference node by one of its custom identifier" offset: name: offset in: query description: Offset is used to skip results in pagination schema: type: integer format: int32 default: 0 returnUpdated: name: returnUpdated in: query description: To return the entity after successful update or not schema: type: boolean default: false sinceChangeId: name: sinceChangeId in: query description: Filter records with greater changeId that this value schema: type: string default: "0" headers: Application-Firewall-Key: description: Application firewall authorization key to be used for protected services required: false schema: type: string Data-Projected: description: States if the returned data was projected. Defaults to 'false' if omitted required: false schema: type: boolean Page-Limit: description: The backend determined limit that was used for the query required: true schema: type: integer format: int32 Page-Offset: description: "The used offset for the query, used for pagination" required: true schema: type: integer format: int32 Page-Total: description: The amount of matched records for the query required: false schema: type: integer format: int32 securitySchemes: iam-tenant-token: type: http scheme: bearer bearerFormat: IAM issued jwt token for a generic application