Automation
Manage Automated notifications using the /api/pipelines endpoints.
In the dashboard UI, we refer to pipelines as Automation or Automated Messages.
Create pipeline (automated message)
Create one or more pipelines. You can provide a single pipeline object or an array of pipeline objects.
POST /api/pipelines
Security:
Request body:
A single pipeline object or an array of pipeline objects.
Content-Type:
One ofapplication/jsonA pipeline object encapsulates the complete set of objects that define an Automation pipeline: Triggers, Outcomes, and metadata. At least one of
immediate_triggerorhistorical_triggermust be supplied.- array<Pipeline Object>
A pipeline object encapsulates the complete set of objects that define an Automation pipeline: Triggers, Outcomes, and metadata. At least one of
immediate_triggerorhistorical_triggermust be supplied.
Responses
201
If creating more than one pipeline, pipeline URIs are returned in the same order as the pipeline objects in the request.
Response body:
- Content-Type:
application/vnd.urbanairship+json; version=3Type:
objectThe response body for a create pipeline request.
400
There was a parsing or validation error in the request. Bad Request errors typically include
pathandlocationin the response to help you find the cause of the error.Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
403
Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
409
The request conflicts with another request.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
413
Returned when the request is too large to be processed.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
Examples
Example
POST /api/pipelines HTTP/1.1
Authorization: Basic <master authorization string>
Accept: application/vnd.urbanairship+json; version=3
Content-Type: application/json
{
"name":"The Darkest Pipeline",
"enabled":true,
"immediate_trigger":"first_open",
"outcome":{
"push":{
"audience":"triggered",
"device_types":[
"ios",
"android",
"web"
],
"notification":{
"alert":"Cool goatee, Abed"
}
}
},
"timing":{
"delay":{
"seconds":7200
},
"schedule":{
"type":"local",
"miss_behavior":"wait",
"dayparts":[
{
"days_of_week":[
"thursday"
],
"allowed_times":[
{
"preferred":"21:30:00"
}
]
}
]
}
}
}
HTTP/1.1 201 Created
Content-Length: 123
Data-Attribute: pipeline_urls
Content-Type: application/vnd.urbanairship+json; version=3
{
"ok": true,
"operation_id": "86ad9239-373d-d0a5-d5d8-04fed18f79bc",
"pipeline_urls": [
"https://go.urbanairship/api/pipelines/86ad9239-373d-d0a5-d5d8-04fed18f79bc"
]
}
from urbanairship import (
BasicAuthClient, Automation
)
from urbanairship.automation.pipeline import Pipeline
client = BasicAuthClient(
key='<app key>',
secret='<master secret>'
)
automation = Automation(client)
pipeline = Pipeline(
name='The Darkest Pipeline',
enabled=True,
immediate_trigger='first_open',
outcome={
'push': {
'audience': 'triggered',
'device_types': ['ios', 'android', 'web'],
'notification': {'alert': 'Cool goatee, Abed'}
}
},
timing={
'delay': {'seconds': 7200},
'schedule': {
'type': 'local',
'miss_behavior': 'wait',
'dayparts': [{
'days_of_week': ['thursday'],
'allowed_times': [
{'preferred': '21:30:00'}
]
}]
}
}
)
response = automation.create(pipeline.payload)
require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key: '<app key>', secret: '<master secret>')
pipeline = UA::Pipeline.new(client: airship)
pipeline.enabled = true
pipeline.immediate_trigger = "first_open"
pipeline.outcome = {
"push": {
"audience": "triggered",
"device_types": ['ios','android','web'],
"notification": {
"alert": "Cool goatee, Abed"
}
}
}
automation = UA::Automation.new(client: airship)
automation.pipeline_object = pipeline.payload
details = automation.create_automation
puts(details)
Delete pipeline
Delete a pipeline.
DELETE /api/pipelines/{pipeline_id}
Security:
Path parameters:
- pipeline_id stringREQUIREDThe pipeline you want to return or modify.
Responses
204
An API request was successful, but there is no response body to return.
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
403
Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
404
The requested resource doesn’t exist.
Response body:
- Content-Type:
application/vnd.urbanairship+jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
Examples
Example
DELETE /api/pipelines/0f927674-918c-31ef-51ca-e96fdd234da4 HTTP/1.1
Authorization: Basic <authorization string>
Accept: application/vnd.urbanairship+json; version=3
HTTP/1.1 204 No Content
from urbanairship import (
BasicAuthClient, Automation
)
from urbanairship.automation.pipeline import Pipeline
client = BasicAuthClient(
key='<app key>',
secret='<master secret>'
)
automation = Automation(client)
response = automation.delete('0f927674-918c-31ef-51ca-e96fdd234da4')
require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key: '<app key>', secret: '<master secret>')
automation = UA::Automation.new(client: airship)
automation.pipeline_id = '0f927674-918c-31ef-51ca-e96fdd234da4'
automation.delete_automation
Individual pipeline lookup
Fetch a single pipeline resource. Returns an array containing a single pipeline object in the pipeline attribute.
GET /api/pipelines/{pipeline_id}
Security:
Path parameters:
- pipeline_id stringREQUIREDThe pipeline you want to return or modify.
Responses
200
Returned on success, with the JSON representation of the pipeline in the body of the response.
Response body:
- Content-Type:
application/vnd.urbanairship+json; version=3Type:
objectThe response body for a pipelines request.
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
403
Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
404
The requested resource doesn’t exist.
Response body:
- Content-Type:
application/vnd.urbanairship+jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
Examples
Example
GET /api/pipelines/4d3ff1fd-9ce6-5ea4-5dc9-5ccbd38597f4 HTTP/1.1
Authorization: Basic <authorization string>
Accept: application/vnd.urbanairship+json; version=3
HTTP/1.1 200 OK
Content-Type: application/vnd.urbanairship+json; version=3
{
"ok": true,
"pipeline": {
"creation_time": "2020-02-14T19:19:19",
"enabled": true,
"immediate_trigger": { "tag_added": "new_customer" },
"last_modified_time": "2020-03-01T12:12:54",
"name": "New customer",
"outcome": {
"push": {
"audience": "triggered",
"device_types": [ "ios", "android" ],
"notification": { "alert": "Hello new customer!" }
}
},
"status": "live",
"uid": "86ad9239-373d-d0a5-d5d8-04fed18f79bc",
"url": "https://go.urbanairship/api/pipelines/86ad9239-373d-d0a5-d5d8-04fed18f79bc"
}
}
from urbanairship import (
BasicAuthClient, Automation
)
from urbanairship.automation.pipeline import Pipeline
client = BasicAuthClient(
key='<app key>',
secret='<master secret>'
)
automation = Automation(client)
pipeline = automation.lookup('4d3ff1fd-9ce6-5ea4-5dc9-5ccbd38597f4')
require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key: '<app key>', secret: '<master secret>')
automation = UA::Automation.new(client: airship)
automation.pipeline_id = '4d3ff1fd-9ce6-5ea4-5dc9-5ccbd38597f4'
automation.lookup_automation
List deleted pipelines
Produces a list of all deleted pipelines starting with the most recently deleted entry.
GET /api/pipelines/deleted
Security:
Query parameters:
- start stringThe date-time of the starting element for paginating results.
- limit integerThe maximum number of elements to return.
Responses
200
Returns an array of deleted pipeline objects.
Response body:
- Content-Type:OBJECT PROPERTIES
application/vnd.urbanairship+json; version=3- ok boolean
Success.
- pipelines array[object]
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
403
Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
Examples
Example
GET /api/pipelines/deleted/ HTTP/1.1
Authorization: Basic <authorization string>
Accept: application/vnd.urbanairship+json; version=3
HTTP/1.1 200 OK
Content-Type: application/vnd.urbanairship+json; version=3
{
"ok": true,
"pipelines": [
{
"deletion_time": "2020-03-31T20:54:45",
"pipeline_id": "0sdicj23-fasc-4b2f-zxcv-0baf934f0d69"
},
{
"..."
}
]
}
from urbanairship import (
BasicAuthClient, Automation
)
from urbanairship.automation.pipeline import Pipeline
client = BasicAuthClient(
key='<app key>',
secret='<master secret>'
)
automation = Automation(client)
response = automation.list_deleted_automations()
require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key: '<app key>', secret: '<master secret>')
automation = UA::Automation.new(client: airship)
automation.start = 2020-11-23
automation.list_deleted_automations
List existing pipelines
List existing pipelines. Pipelines are ordered by creation_date from newest to oldest.
GET /api/pipelines
Security:
Query parameters:
- limit integerThe maximum number of results to return. This is effectively the page size for the response. No default limit. For maximum performance, set your limit between 25 and 100.
Min: 1
- enabled booleanIf true, limits the listing to enabled pipelines (
"enabled": true). If false or omitted, lists all pipelines, whetherenabledistrueorfalse. - offset integerThe first result you want to return. This parameter assists in pagination.
Responses
200
Returned on success, with a JSON representation of pipelines matching your query parameters.
Response body:
- Content-Type:
application/vnd.urbanairship+json; version=3Type:
objectThe response body for a pipelines request.
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
403
Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
Examples
Example
GET /api/pipelines/ HTTP/1.1
Authorization: Basic <authorization string>
Accept: application/vnd.urbanairship+json; version=3
HTTP/1.1 200 OK
Content-Type: application/vnd.urbanairship+json; version=3
{
"ok": true,
"pipelines": [
{
"creation_time": "2020-03-20T18:37:23",
"enabled": true,
"immediate_trigger": {
"tag_added": { "tag": "bought_shoes" }
},
"last_modified_time": "2020-03-20T19:35:12",
"name": "Shoe buyers",
"outcome": {
"push": {
"audience": "triggered",
"device_types": [ "android" ],
"notification": { "alert": "So you like shoes, huh?" }
}
},
"status": "live",
"uid": "3987f98s-89s3-cx98-8z89-89adjkl29zds",
"url": "https://go.urbanairship.com/api/pipelines/3987f98s-89s3-cx98-8z89-89adjkl29zds"
},
{
"..."
}
]
}
from urbanairship import (
BasicAuthClient, Automation
)
from urbanairship.automation.pipeline import Pipeline
client = BasicAuthClient(
key='<app key>',
secret='<master secret>'
)
automation = Automation(client)
for pipeline in automation.list_automations():
print(pipeline)
require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key: '<app key>', secret: '<master secret>')
automation = UA::Automation.new(client: airship)
automation.limit = 5
automation.list_automations
List filtered pipelines
Lists all pipelines, which fulfill the provided filter criteria. Returns a response container, which contains an array of pipeline objects in the pipelines attribute. The response container also provides total count and links to the next page next_page and previous page prev_page, if applicable. We also always apply a sort order. By default we apply an ascending sort order on the name name field, but we also support a sort order on the started date started_date field. Pagination is always applied, which means that the pipeline result list is not the complete list of pipelines if the total count is greater than the page limit.
GET /api/pipelines/filtered
Security:
Query parameters:
- start integerNon-negative zero-based index of the starting element for paginating results. Default value 0.
Min: 1
- limit integerThe maximum number of results to return. This is effectively the page size for the response.
Min: 1
- enabled booleanIf true, limits the listing to enabled pipelines. If false or omitted, lists all pipelines, whether
enabledistrueorfalse. - started_date_mills integerLimits the listing to only pipelines that were started after the specified date in milliseconds.
- prefix stringSearch term, which is used as a prefix search term.
- triggers string0 or more trigger types. The triggers filter limits the listing of pipelines by the specified trigger types. For example, if you specify
REGION_EXITEDandREGION_ENTERED, only pipelines that are associated with region entry and region exit triggers will be shown. If no trigger types are specified, no triggers filter will be applied and all pipelines will be listed.Possible values:
TAG_ADDED,TAG_REMOVED,FIRST_REG,FIRST_OPT_IN,ACTIVITY,REGION_ENTERED,REGION_EXITED,CUSTOM_EVENT,SUBSCRIPTION_ADDED,SUBSCRIPTION_REMOVED - sort stringSpecifies the field, which should be sorted. Two fields are supported:
nameandstarted_date. If you omit thesortparameter, the default valuenameis used. If you provide an unknown field name, we will default to thenamefield.Possible values:
name,started_date - order stringSpecifies the sort order as ascending (
asc) or descending (desc). If you omit theorderparameter, the default valueascis used.Possible values:
asc,desc
Responses
200
Returned on success, with a JSON representation of pipelines matching your query parameters.
Response body:
- Content-Type:
application/vnd.urbanairship+json; version=3Type:
objectThe response body for a pipelines request.
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
403
Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
List pipelines constraints
Returns an array of cross-pipeline rate limit constraints. These are the rates that the combination of all pipelines for an app may not exceed.
GET /api/pipelines/constraints
Security:
Responses
200
Returns an array of cross-pipeline rate limit constraints.
Response body:
- Content-Type:OBJECT PROPERTIES
application/vnd.urbanairship+json; version=3- constraints array[object]
An array of rate objects determining the maximum number of messages each audience member can receive over a period of time.
- ok boolean
Success.
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
403
Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
Examples
Example
GET /api/pipelines/constraints/ HTTP/1.1
Authorization: Basic <authorization string>
Accept: application/vnd.urbanairship+json; version=3
HTTP/1.1 200 OK
Content-Type: application/vnd.urbanairship+json; version=3
{
"ok": true,
"constraints" : [
{
"rate" : {
"pushes" : 30,
"lifetimes" : 1
}
},
{
"rate" : {
"pushes" : 15,
"days" : 3
}
},
{
"rate" : {
"pushes" : 4,
"hours" : 6
}
}
]
}
List pipelines limits
Return the currently configured limits for number of total and active pipelines, as well as the total and active counts.
GET /api/pipelines/limits
Security:
Responses
200
Returns a JSON dictionary in the
limitsattribute.Response body:
- Content-Type:OBJECT PROPERTIES
application/vnd.urbanairship+json; version=3- limits objectOBJECT PROPERTIES
- active_count integer
An integer indicating the number of pipelines created by the application which are currently enabled.
- active_limit integer
An integer indicating the total number of active pipelines that the app is allowed to have.
- total_count integer
An integer indicating the total number of pipelines that currently exist for the application, regardless of their enabled state.
- total_limit integer
An integer indicating the total number of pipelines that the app is allowed to have, regardless of their enabled state.
- ok boolean
Success.
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
403
Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
Examples
Example
GET /api/pipelines/limits/ HTTP/1.1
Authorization: Basic <authorization string>
Accept: application/vnd.urbanairship+json; version=3
HTTP/1.1 200 OK
Content-Type: application/vnd.urbanairship+json; version=3
{
"ok": true,
"limits" : {
"total_limit" : 50,
"active_limit" : 20,
"total_count" : 23,
"active_count" : 7
}
}
Update pipeline
Update the state of a single pipeline resource. You must include the complete payload from a POST response, with changes you want to make to the resource. You cannot provide a partial payload. If you omit optional fields during this operation that were already set for the pipeline, they will be nullified.
PUT /api/pipelines/{pipeline_id}
Security:
Path parameters:
- pipeline_id stringREQUIREDThe pipeline you want to return or modify.
Request body:
A single pipeline object or an array of pipeline objects.
Content-Type:
application/jsonA pipeline object encapsulates the complete set of objects that define an Automation pipeline: Triggers, Outcomes, and metadata. At least one of
immediate_triggerorhistorical_triggermust be supplied.
Responses
200
Returned if the pipeline has been successfully updated.
Response body:
- Content-Type:
application/vnd.urbanairship+json; version=3Returned with 2xx Responses. At a minimum, successful calls return
truefor theokkey. If your call includes a verbose response (as withGETrequests, etc.), theokkey will appear in the top-most object, outside the verbose response.
400
There was a parsing or validation error in the request. Bad Request errors typically include
pathandlocationin the response to help you find the cause of the error.Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
403
Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
409
The request conflicts with another request.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
413
Returned when the request is too large to be processed.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
Examples
Example
PUT /api/pipelines/0f927674-918c-31ef-51ca-e96fdd234da4 HTTP/1.1
Authorization: Basic <authorization string>
Accept: application/vnd.urbanairship+json; version=3
Content-Type: application/json;
{
"enabled": true,
"immediate_trigger": {
"tag_added": "new_customer"
},
"outcome": {
"push": {
"audience": "triggered",
"device_types": [
"ios"
],
"notification": {
"alert": "Hello new customer!"
}
}
}
}
HTTP/1.1 200 OK
Content-Type: application/vnd.urbanairship+json; version=3
{
"ok": true
}
from urbanairship import (
BasicAuthClient, Automation
)
from urbanairship.automation.pipeline import Pipeline
client = BasicAuthClient(
key='<app key>',
secret='<master secret>'
)
automation = Automation(client)
pipeline = Pipeline(
enabled=True,
immediate_trigger={
'tag_added': 'new_customer'
},
outcome={
'audience': 'triggered',
'device_types': ['ios'],
'notification': notification(alert='Hello new customer!')
}
)
response = automation.update(
pipeline_id='0f927674-918c-31ef-51ca-e96fdd234da4',
pipeline=pipeline.payload
)
require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key: '<app key>', secret: '<master secret>')
pipeline = UA::Pipeline.new(client: airship)
pipeline.enabled = true
pipeline.immediate_trigger = {
"tag_added": {
"tag": "new_customer",
"group": "crm"
}
}
pipeline.outcome = {
"push": {
"audience": "triggered",
"device_types": ["ios"],
"notification": {
"alert": "Hello new customer!"
}
}
}
automation = UA::Automation.new(client: airship)
automation.pipeline_id = '0f927674-918c-31ef-51ca-e96fdd234da4'
automation.pipeline_object = pipeline.payload
automation.update_automation
Update pipelines constraints
Update the pipelines constraints.
PUT /api/pipelines/constraints
Security:
Request body:
An array of no more than 5 cross-pipeline rate limit constraints.
Content-Type:
OBJECT PROPERTIESapplication/json- constraints array[object]
An array of rate objects determining the maximum number of messages each audience member can receive over a period of time.
- ok boolean
Success.
Responses
200
Everything worked as expected.
Response body:
- Content-Type:
application/vnd.urbanairship+json; version=3Returned with 2xx Responses. At a minimum, successful calls return
truefor theokkey. If your call includes a verbose response (as withGETrequests, etc.), theokkey will appear in the top-most object, outside the verbose response.
400
There was a parsing or validation error in the request. Bad Request errors typically include
pathandlocationin the response to help you find the cause of the error.Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
403
Authentication was correct, but the user does not have permission to access the requested API, e.g., if the feature in question is not included in your pricing plan.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
Examples
Example
PUT /api/pipelines/constraints/ HTTP/1.1
Authorization: Basic <authorization string>
Accept: application/vnd.urbanairship+json; version=3
Content-Type: application/json
{
"constraints" : [
{
"rate" : {
"pushes" : 15,
"days" : 3
}
},
{
"rate" : {
"pushes" : 4,
"hours" : 6
}
}
]
}
HTTP/1.1 200 OK
Content-Type: application/vnd.urbanairship+json; version=3
{
"ok": true
}
Validate pipeline
This endpoint accepts the same range of payloads as a POST to /api/pipelines, but only parses and validates the payload, without creating the pipeline. The body of the request must be a single pipeline object or an array of pipeline objects.
POST /api/pipelines/validate
Security:
Request body:
A single pipeline object or an array of pipeline objects.
Content-Type:
One ofapplication/jsonA pipeline object encapsulates the complete set of objects that define an Automation pipeline: Triggers, Outcomes, and metadata. At least one of
immediate_triggerorhistorical_triggermust be supplied.- Array of push templates array<Pipeline Object>
A pipeline object encapsulates the complete set of objects that define an Automation pipeline: Triggers, Outcomes, and metadata. At least one of
immediate_triggerorhistorical_triggermust be supplied.
Responses
200
Everything worked as expected.
Response body:
- Content-Type:
application/vnd.urbanairship+json; version=3Returned with 2xx Responses. At a minimum, successful calls return
truefor theokkey. If your call includes a verbose response (as withGETrequests, etc.), theokkey will appear in the top-most object, outside the verbose response.
400
There was a parsing or validation error in the request. Bad Request errors typically include
pathandlocationin the response to help you find the cause of the error.Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
401
Authentication information (the app key and secret or bearer token) was either incorrect or missing.
Response body:
- Content-Type:
text/plainErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
406
Return when the client requests a version of the API that cannot be satisfied, because no compatible version is currently deployed.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
413
Returned when the request is too large to be processed.
Response body:
- Content-Type:
application/jsonErrors returned with 4xx responses. Errors include as much information as possible to help you understand the reason for the failure.
Examples
Example
POST /api/pipelines/validate HTTP/1.1
Authorization: Basic <master authorization string>
Accept: application/vnd.urbanairship+json; version=3
Content-Type: application/json
{
"name":"The Darkest Pipeline",
"enabled":true,
"immediate_trigger":"first_open",
"outcome":{
"push":{
"audience":"triggered",
"device_types":[
"ios",
"android"
],
"notification":{
"alert":"Cool goatee, Abed"
}
}
},
"timing":{
"delay":{
"seconds":7200
},
"schedule":{
"type":"local",
"miss_behavior":"wait",
"dayparts":[
{
"days_of_week":[
"thursday"
],
"allowed_times":[
{
"preferred":"21:30:00"
}
]
}
]
}
}
}
HTTP/1.1 200 OK
Content-Length: 11
Content-Type: application/vnd.urbanairship+json; version=3
{
"ok": true
}
from urbanairship import (
BasicAuthClient, Automation
)
from urbanairship.automation.pipeline import Pipeline
client = BasicAuthClient(
key='<app key>',
secret='<master secret>'
)
automation = Automation(client)
pipeline = Pipeline(
name='The Darkest Pipeline',
enabled=True,
immediate_trigger='first_open',
outcome={
'push': {
'audience': 'triggered',
'device_types': ['ios', 'android', 'web'],
'notification': notification(alert='Cool goatee, Abed')
}
},
timing={
'delay': {'seconds': 7200},
'schedule': {
'type': 'local',
'miss_behavior': 'wait',
'dayparts': [{
'days_of_week': ['thursday'],
'allowed_times': [
{'preferred': '21:30:00'}
]
}]
}
}
)
response = automation.validate(pipeline.payload)
require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key: '<app key>', secret: '<master secret>')
pipeline = UA::Pipeline.new(client: airship)
pipeline.enabled = true
pipeline.immediate_trigger = "first_open"
pipeline.outcome = {
"push": {
"audience": "triggered",
"device_types": ['ios','android','web'],
"notification": {
"alert": "Cool goatee, Abed"
}
}
}
automation = UA::Automation.new(client: airship)
automation.pipeline_object = pipeline.payload
automation.validate_automation