Test Actions is a way to test redirections configured in the EVT platform without data being generated in the platform.
Warning
Test Actions API is for testing purpose only
TestActionDocument Data Model
An object representing a Test Action. This document has same content as regular Action document with a few tweaks:
- It is possible to provide
id
field, and it will be used instead of generated one - It is possible to provide
createdAt
timestamp and it will be used instead of generated one - It is possible to override
timestamp
field
.type (string, required)
The action type.
.id (string)
The ID of this resource.
.user (string, read-only)
The EVRYTHNG ID of the user who has performed this action.
.createdAt (integer)
Timestamp when the resource was created.
.createdByProject (string, read-only)
The EVRYTHNG ID of the project who has performed this
action.
.createdByApp (string, read-only)
The EVRYTHNG ID of the application who has performed this
action.
.thng (string)
The EVRYTHNG ID of the Thng this action was carried out on.
.product (string)
The EVRYTHNG product ID associated with the Thng this action
was carried out on.
.collection (string)
The EVRYTHNG ID of the collection this action was carried
out on. Custom action types only.
.timestamp (integer)
The timestamp when the action took place. Filled
automatically if unspecified.
.identifiers (IdentifiersDocument)
Various identifiers (EPC, GTIN, etc.) as a JSON object with
one or more key-value pairs.
.location (LocationDocument)
An object representing a location. Either 'position' or
'place' us required.
.locationSource (string, one of 'sensor', 'geoIp', 'unknown', 'place')
The method used to find the location where the action took
place, and requires `location` to also be set. If a GPS was
used (with user permission granted), `sensor` is specified.
Otherwise an estimate is made based on the apparent
location, which may not be the device itself.
.context (ActionContextDocument)
Object containing contextual data about the action creator.
.customFields (CustomFieldsDocument)
Object of case-sensititve key-value pairs of custom fields
associated with the resource.
.scopes (ScopesDocument)
Project and user scopes arrays.
.tags (array of string)
Array of string tags associated with this resource.
.reactions (array of ReactionDocument)
An array of Redirector reactions that occurred from this
action.
.url (string)
The URL to the triggering scan, added in some cases.
.consumerId (string)
App-specific ID id to identify a user that has scanned a
given product.
{
"additionalProperties": false,
"type": "object",
"description": "An object representing a Platform action.",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"description": "The action type."
},
"id": {
"type": "string",
"description": "The ID of this resource.",
"pattern": "^[abcdefghkmnpqrstwxyABCDEFGHKMNPQRSTUVWXY0123456789]{24}$",
"readOnly": false
},
"user": {
"type": "string",
"description": "The EVRYTHNG ID of the user who has performed this action.",
"readOnly": true,
"pattern": "^[abcdefghkmnpqrstwxyABCDEFGHKMNPQRSTUVWXY0123456789]{24}$"
},
"createdAt": {
"type": "integer",
"description": "Timestamp when the resource was created.",
"readOnly": false,
"minimum": 0
},
"createdByProject": {
"type": "string",
"description": "The EVRYTHNG ID of the project who has performed this action.",
"readOnly": true,
"pattern": "^[abcdefghkmnpqrstwxyABCDEFGHKMNPQRSTUVWXY0123456789]{24}$"
},
"createdByApp": {
"type": "string",
"description": "The EVRYTHNG ID of the application who has performed this action.",
"readOnly": true,
"pattern": "^[abcdefghkmnpqrstwxyABCDEFGHKMNPQRSTUVWXY0123456789]{24}$"
},
"thng": {
"type": "string",
"description": "The EVRYTHNG ID of the Thng this action was carried out on.",
"pattern": "^[abcdefghkmnpqrstwxyABCDEFGHKMNPQRSTUVWXY0123456789]{24}$"
},
"product": {
"type": "string",
"description": "The EVRYTHNG product ID associated with the Thng this action was carried out on.",
"pattern": "^[abcdefghkmnpqrstwxyABCDEFGHKMNPQRSTUVWXY0123456789]{24}$"
},
"collection": {
"type": "string",
"description": "The EVRYTHNG ID of the collection this action was carried out on. Custom action types only.",
"pattern": "^[abcdefghkmnpqrstwxyABCDEFGHKMNPQRSTUVWXY0123456789]{24}$"
},
"timestamp": {
"type": "integer",
"description": "The timestamp when the action took place. Filled automatically if unspecified.",
"readOnly": false,
"minimum": 0
},
"identifiers": {
"type": "object",
"description": "Various identifiers (EPC, GTIN, etc.) as a JSON object with one or more key-value pairs."
},
"location": {
"additionalProperties": false,
"type": "object",
"description": "An object representing a location. Either 'position' or 'place' us required.",
"properties": {
"position": {
"type": "object",
"description": "A GeoJSON Point object. The coordinate order is longitude, then latitude.",
"required": ["type", "coordinates"],
"properties": {
"type": {
"type": "string",
"description": "The type of the point.",
"enum": ["Point"]
},
"coordinates": {
"type": "array",
"description": "The point coordinates",
"items": {
"type": "number",
"minimum": -180,
"maximum": 180
}
}
}
},
"createdAt": {
"type": "integer",
"description": "Timestamp when the resource was created.",
"readOnly": true,
"minimum": 0
},
"timestamp": {
"type": "integer",
"description": "The time the location update occurred, or filled automatically by the Platform if omitted.",
"readOnly": true
},
"longitude": {
"type": "number",
"description": "The longitude."
},
"latitude": {
"type": "number",
"description": "The latitude."
},
"place": {
"type": "string",
"description": "The place ID.",
"pattern": "^[abcdefghkmnpqrstwxyABCDEFGHKMNPQRSTUVWXY0123456789]{24}$"
},
"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" }
}
}
}
}
},
"locationSource": {
"type": "string",
"description": "The method used to find the location where the action took place, and requires `location` to also be set. If a GPS was used (with user permission granted), `sensor` is specified. Otherwise an estimate is made based on the apparent location, which may not be the device itself.",
"enum": []
"geoIp",
"unknown",
"place"
]
},
"context": {
"additionalProperties": false,
"type": "object",
"description": "Object containing contextual data about the action creator.",
"properties": {
"ipAddress": {
"type": "string",
"description": "The geolocation IP address of the action.",
"readOnly": true
},
"city": {
"type": "string",
"description": "The geolocation city of the action, based on the IP address.",
"readOnly": true
},
"region": {
"type": "string",
"description": "The wider region of the action.",
"readOnly": true
},
"countryCode": {
"type": "string",
"description": "The country of the action.",
"readOnly": true
},
"userAgentName": {
"type": "string",
"description": "The user agent name of the action creator's browser or other client.",
"readOnly": true
},
"userAgent": {
"type": "string",
"description": "The user agent of the action creator's browser or other client.",
"readOnly": true
},
"operatingSystemName": {
"type": "string",
"description": "Name of the action creator's client operating system.",
"readOnly": true
},
"timeZone": {
"type": "string",
"description": "The timezone string, such as Europe/Paris",
"readOnly": true
}
}
},
"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" }
}
}
},
"tags": {
"type": "array",
"description": "Array of string tags associated with this resource.",
"items": {
"type": "string",
"maxLength": 256,
"maximum": 60
}
},
"reactions": {
"type": "array",
"description": "An array of Redirector reactions that occurred from this action.",
"items": {
"additionalProperties": false,
"type": "object",
"description": "A single reaction from Redirector.",
"properties": {
"type": {
"type": "string",
"description": "The reaction type.",
"enum": ["redirection"],
"readOnly": true
},
"redirectUrl": {
"type": "string",
"description": "The redirection URL.",
"readOnly": true
},
"redirectRuleName": {
"type": "string",
"description": "The name of redirector rule.",
"readOnly": true
},
"redirectionContext": {
"type": "object",
"description": "Object of redirection context values.",
"readOnly": true
}
}
}
},
"url": {
"type": "string",
"description": "The URL to the triggering scan, added in some cases."
},
"consumerId": {
"type": "string",
"description": "App-specific ID id to identify a user that has scanned a given product.",
"minimum": 3,
"maximum": 128
}
}
}
{
"id": "U4aPKKSEWy9nQQRaaghRasaa",
"createdAt": 1510914839892,
"customFields": {
"region_code": "en_gb"
},
"tags": [
"example",
"actions"
],
"timestamp": 1510914839892,
"type": "scans",
"user": "UnRPKGnUMQtVEPaaageq5ehk",
"location": {
"latitude": 51.4333,
"longitude": 0.1833,
"position": {
"type": "Point",
"coordinates": [
0.1833,
51.4333
]
}
},
"locationSource": "geoIp",
"context": {
"city": "Crayford",
"region": "England",
"countryCode": "GB",
"userAgentName": "Unknown",
"operatingSystemName": "Unknown",
"timeZone": "Europe/London"
},
"reactions": [
{
"type": "redirection",
"redirectRuleName": "Redirector Rule",
"redirectUrl": "https://google.com",
"redirectionContext": {
"constants": {
"region_code": "en_gb"
}
}
}
],
"createdByProject": "UmxHK6K8BXsa9KawRh4bTbqc",
"createdByApp": "U3pxRQh2eD8RtKwaRgerfQgc",
"identifiers": {
"ean_13": "786432786349"
},
"thng": "U4wpchcBqm8hhqwwag8kgnqc"
}
See also: LocationDocument
, ActionContextDocument
, ScopesDocument
, ReactionDocument
API Status
General Availability:
/testActions
Create a Test Action
Submit Test Action
Notes
No action will be created
Reactor wouldn't be triggered
POST /actions/:type
Content-Type: application/json
Authorization: $APP_USER_API_KEY
TestActionDocument
curl -i -H "Content-Type: application/json" \
-H "Authorization: $APP_USER_API_KEY" \
-X POST "https://$EVT_API_DOMAIN/testActions" \
-d '{
"product": "UmAkSdqe69QVhswwRYNdbxna",
"type": "implicitScans"
}'
HTTP/1.1 201 Created
Content-Type: application/json
Location: https://$EVT_API_DOMAIN/testActins
{
"id": "UGByEXMEq9QBE8aRaYNeYnkb",
"createdAt": 1497528007035,
"timestamp": 1497528007035,
"type": "implicitScans",
"user": "UmAFxMDnqQ9VEsRwaErAxfrr",
"location": {
"latitude": 48.86,
"longitude": 2.34,
"position": {
"type": "Point",
"coordinates": [
2.34,
48.86
]
}
},
"reactions": [
{
"type": "redirection",
"redirectUrl": "https://www.google.com",
"redirectRuleName": "Redirect rule",
"redirectionContext": {
"locationSource": "geoIp"
}
}
],
"locationSource": "geoIp",
"createdByProject": "UGdkbcyhqQtVEsaaRhrASatf",
"createdByApp": "UmAFxcdSMt9VE8awRE7dba9n",
"product": "UmAkSdqe69QVhswwRYNdbxna"
}