An account Operator or Access Token can define new custom action types within that account, which can be scoped to individual projects as required. When defining these action types, it's possible to add specific custom fields and tags to aid in filtering. An action type can be regarded as the class of an individual action, much in the same way that a product is used to model the class of individual serialised Thngs.
Note
Custom action types must always start with an underscore (
_
).
API Status
General Availability:
/actionTypes
/actionTypes/:type
ActionTypeDocument Data Model
Built-in Action Types
Action Type Customization
Create an Action Type
Read all Action Types
Read single Action Type
Update an Action Type
Delete an Action Type
ActionTypeDocument Data Model
.name (string, required)
The name of the action type. Custom action types must begin
with an underscore.
.id (string, read-only)
The ID of this resource.
.createdAt (integer, read-only)
Timestamp when the resource was created.
.updatedAt (integer, read-only)
Timestamp when the resource was updated.
.description (string)
Friendly description of this resource.
.tags (array of string)
Array of string tags associated with this resource.
.customFields (CustomFieldsDocument)
Object of case-sensititve key-value pairs of custom fields
associated with the resource.
.scopes (ScopesDocument)
Project and user scopes arrays.
{
"additionalProperties": false,
"type": "object",
"description": "An object describing a custom action type.",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "The name of the action type. Custom action types must begin with an underscore."
},
"id": {
"type": "string",
"description": "The ID of this resource.",
"pattern": "^[abcdefghkmnpqrstwxyABCDEFGHKMNPQRSTUVWXY0123456789]{24}$",
"readOnly": true
},
"createdAt": {
"type": "integer",
"description": "Timestamp when the resource was created.",
"readOnly": true,
"minimum": 0
},
"updatedAt": {
"type": "integer",
"description": "Timestamp when the resource was updated.",
"readOnly": true,
"minimum": 0
},
"description": {
"type": "string",
"description": "Friendly description of this resource."
},
"tags": {
"type": "array",
"description": "Array of string tags associated with this resource.",
"items": {
"type": "string",
"maxLength": 60
}
},
"customFields": {
"type": "object",
"description": "Object of case-sensititve key-value pairs of custom fields associated with the resource."
},
"scopes": {
"additionalProperties": false,
"type": "object",
"description": "Project and user scopes arrays.",
"required": ["users", "projects"],
"properties": {
"users": {
"type": "array",
"description": "An array of Application User IDs this resource is scoped to.",
"items": { "type": "string" }
},
"projects": {
"type": "array",
"description": "An array of project IDs this resource is scoped to.",
"items": {
"type": "string",
"description": "The ID of this resource.",
"pattern": "^[abcdefghkmnpqrstwxyABCDEFGHKMNPQRSTUVWXY0123456789]{24}$",
"readOnly": true
}
}
}
}
},
"x-filterable-fields": ["name"]
}
{
"id": "UHwsppkh69tVhPRaaDEpdCbg",
"createdAt": 1510914951694,
"customFields": {
"region_code": "en_sc"
},
"tags": [
"example",
"actionType"
],
"updatedAt": 1510914951694,
"name": "_Shipped",
"description": "An item was shipped from a distribution center."
}
See also: ScopesDocument
Filterable Fields
This resource type can be filtered using the following fields and operators.
Field | Type | Operators |
---|---|---|
name | String | = |
Built-in Action Types
In addition to custom action types there are a number of action types that are built-in to the Platform, which available to all accounts when they are created. These are listed below:
attachments
authenticationResults
checkins
commissions
decommissions
deleteAttachments
diversionChecks
duplicateChecks
encodings
epcisEvents
errors
implicitScans
inspectionChecks
inspectorScans
inspectorScanUpdates
invalidChecks
invalidScans
partialAuthenticationResults
referrals
scans
shares
supplyChainScans
unauthorizedChecks
visualComparisonChecks
watermarkValidationChecks
Action Type Customization
When an action type is viewed in the Dashboard, it is displayed with some additional visual elements if the type's customFields
includes any of the following optional items:
color
- The hexadecimal color value, including#
, used in the action table margin.displayname
- The friendly name of the action type, which does not require an underscore, unlikename
.icon
- A Glyphicon code for an icon representing the meaning of this action type.
Create an Action Type
Submit a valid ActionTypeDocument
to the /actions
endpoint to create a custom action type.
POST /actions
Content-Type: application/json
Authorization: $OPERATOR_API_KEY
ActionTypeDocument
curl -i -H "Content-Type: application/json" \
-H "Authorization: $OPERATOR_API_KEY" \
-X POST 'https://$EVT_API_DOMAIN/actionTypes' \
-d '{
"name": "_Shipped",
"description": "An item was shipped from a warehouse."
}'
const payload = {
name: '_Shipped',
description: 'An item was shipped from a warehouse.',
};
operator.actionType().create(payload)
.then(console.log);
ActionType actionType = new ActionType();
actionType.setName("_Shipped");
apiManager.actionService().actionTypeCreator(actionType).execute();
HTTP/1.1 201 Created
Content-Type: application/json
Location: https://api.evrythng.com/actionTypes/Uh8cBH7dMnXd8NbmyxB7tdqk
{
"id": "Uh8cBH7dMnXd8NbmyxB7tdqk",
"createdAt": 1474448083763,
"updatedAt": 1474448083763,
"name": "_Shipped",
"description": "An item was shipped from a warehouse."
}
Read all Action Types
Action types can be retrieved by a GET
on the /actions
endpoint. The action types are returned with the built-in types coming first, followed by the custom types sorted by descending creation date. The result may be paginated if there are more than 30 items.
GET /actionTypes
Authorization: $APPLICATION_USER_API_KEY
curl -H "Authorization: $OPERATOR_API_KEY" \
-X GET 'https://$EVT_API_DOMAIN/actionTypes'
user.actionType().read()
.then(console.log);
List<ActionType> types = apiManager.actionService().actionTypesReader().execute();
for(ActionType type : types) {
System.out.println(type.getName());
}
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"name": "checkins"
},
{
"name": "commissions"
},
{
"name": "decommissions"
},
{
"name": "encodings"
},
{
"name": "implicitScans"
},
{
"name": "invalidScans"
},
{
"name": "scans"
},
{
"name": "shares"
},
{
"id": "UGFqk8eCVXPRQKwwwgGcHmGh",
"createdAt": 1502383685794,
"tags": [
"custom"
],
"updatedAt": 1505491159408,
"name": "_Shipped",
"description": "An item was shipped from a warehouse"
}
]
Read single Action Type
GET /actionTypes/:name
Authorization: $OPERATOR_API_KEY
curl -i -H "Content-Type: application/json" \
-H "Authorization: $OPERATOR_API_KEY" \
-X GET 'https://$EVT_API_DOMAIN/actionTypes/_Shipped'
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "Uk7WdgFAMQtehsRawgdwEkCn",
"createdAt": 1490368131932,
"tags": [
"shipping",
"receiving"
],
"updatedAt": 1497450736023,
"name": "_Shipped"
}
Update an Action Type
Update an action type by making a PUT
request.
PUT /actionTypes/:name
Content-Type: application/json
Authorization: $OPERATOR_API_KEY
curl -i -H "Content-Type: application/json" \
-H "Authorization: $OPERATOR_API_KEY" \
-X PUT 'https://$EVT_API_DOMAIN/actionTypes/_Shipped' \
-d '{
"tags": ["shipping", "receiving"]
}'
const actionType = '_Shipped';
const payload = { tags: ['shipping', 'receiving'] };
operator.actionType(actionType).update(payload)
.then(console.log);
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "Uk7WdgFAMQtehsRawgdwEkCn",
"createdAt": 1490368131932,
"tags": [
"shipping",
"receiving"
],
"updatedAt": 1497450736023,
"name": "_Shipped"
}
Delete an Action Type
Note
The default action types cannot be deleted, only custom action types can be deleted.
Note
Deleting an action type will result in the deletion of all actions created of that type as well.
DELETE /actionTypes/:actionType
Authorization: $OPERATOR_API_KEY
curl -H "Authorization: $OPERATOR_API_KEY" \
-X DELETE 'https://$EVT_API_DOMAIN/actionTypes/:iD'
const actionType = '_Shipped';
operator.actionType(actionType).delete();
String actionType = "_Shipped";
apiManager.actionService().actionTypeDeleter(actionType).execute();
HTTP/1.1 200 OK
Also, you can delete an action type by making a DELETE
request to /actionTypes/:name
DELETE /actionTypes/:name
Authorization: $OPERATOR_API_KEY
curl -H "Authorization: $OPERATOR_API_KEY" \
-X DELETE 'https://$EVT_API_DOMAIN/actionTypes/_Shipped'
HTTP/1.1 200 OK