Loading…

Journeys Track API

Download OpenAPI specification:Download

Our Track API provides ways to send real-time customer data to your Customer.io workspace.

Overview

You're looking at our US regional endpoints

The only difference in our US and European Union (EU) regions is the subdomain—track-eu for the EU region rather than just track; there are no other differences between the two regions. If your account is based in the European Union (EU) data center, click here to show EU endpoints in our code samples and documentation below. Note that if your account is in the EU region and you send traffic to our US endpoints, we'll redirect it accordingly but this traffic still passes through US servers and data could be logged in the US.

If you don't know your region, you can find your account region on your account's privacy page, or get your region using the API.

You're looking at our EU regional endpoints

The only difference in our US and European Union (EU) regions is the subdomain—track for our US region rather than track-eu; there are no other differences between the two regions. If your account is based in the European Union (EU) data center, you can click here to to show US endpoints in our code samples and documentation below.

Note that if your account is based in the United States (US) data center and you send requests to the EU region, your requests will fail. If you don't know your region, you can find your account region on your account's privacy page, or get your region using the API.

Customer.io hosts services in the United States (US) and European Union (EU, host subdomains are suffixed with -eu). Select the appropriate region for server addresses that apply to your region.

Host/ServerPurpose
https://track.customer.io/api/Use the Track API to report customer attributes and track customer events/activity. You cannot retrieve data using this API. Track endpoints support minimal validation to ensure as close to real-time processing as possible.

Use our Postman collection

We've generated a Postman collection with all of our APIs—not just the ones on this page—with a starter environment (called "CIO Env") containing variables for authorization and path parameters.

If you fork this collection, you might want to disable the Watch original collection option. We automatically update our Postman collection whenever we release changes to our documentation, even if we don't change our APIs—which happens daily! Rather than being flooded with Postman notifications, you can check out our Release Notes for updates to our APIs.

NOTE: Postman endpoints default to our US APIs. If you're in our European (EU) region, you'll need to add -eu server variables (track_api_url and app_api_url).

Authentication

You can find all of your API authentication information in your Account Settings. Our Tracking API uses HTTP basic authorization. The App API uses bearer authorization, and you can generate tokens supporting different scopes. Each operation in this document references the authorization header it requires.

Tracking API Key

The Track API uses a basic authentication scheme. Your credentials are your Site ID and your API key, Base-64 encoded in the format site_id:api_key.

You can find your Site ID and API key on the Track API Keys page.

Security Scheme Type HTTP
HTTP Authorization Scheme basic

Track API limits

The Behavioral Tracking API (track.customer.io) has a rate limit of 3000 requests per 3 seconds for both active data integrations and historical backfill scripts. This limit applies to both our v1 and v2 APIs.

While this rate is not strictly enforced, consistently exceeding it may lead to throttling or dropped data, especially during periods of high system load. If we detect a sustained high volume that could impact other customers, we may contact you to help adjust your integration or, in rare cases, temporarily block requests.

Warning

Rate limits are subject to change. We may adjust these thresholds to ensure stable performance for all customers.

Below are the payload size limits for the Track API. If any of these limits are too restrictive for your needs, contact support to let us know your situation as we may be able to accommodate special circumstances.

Customer limits

These limits apply to people and their attributes, often referred to as "customers" in our APIs.

Data Type Limit Description
ID 150 bytes Max length of a person's ID value
Attribute Name 150 bytes Max length of each attribute name
Attribute Value 1000 bytes Max length of attribute values
Unique attributes 300 Max number of attributes allowed per person or Identify call

Object and relationship limits

Objects (groups) and relationships between people and objects can have their own attributes. Their limits are similar to people (customers).

Data Type Limit Description
Object ID 150 bytes Max length of a object's ID
Attribute Names 150 bytes Max length of each attribute name
Attribute Values 1000 bytes Max length of attribute values
Unique attributes 300 Max number of attributes allowed per object or relationship
Total attribute size 100 Kilobytes Max size of all attributes associated with an object or relationship

Track API Event limits

These limits apply to events that you'll send with the /v1/track call.

Data Type Limit Description
Event Name 100 bytes Max length of each event name
Event Data 100000 bytes Max length of each event data

v2 API Limits

The v2 API has two endpoints, both of which have limits on the total size of requests.

  • /single is limited to requests 32kb or smaller.

  • /batch is limited to requests 500kb or smaller.

    Each of the requests within a batch must also be 32kb or smaller.

Track v2 Overview

This new version of our edge API has only two endpoints, but supports the majority of our traditional v1 track operations and then some based on the type and action keys that you set in your request.

You can use the /batch call to send multiple requests at the same time. Unlike the v1 API, you can also make requests affecting objects and deliveries. Objects are a grouping mechanism for people—like an account people belong to or an online course that they enroll in. Deliveries are events based on messages sent from Customer.io.

The chart below lists the type of action you can perform for each type. Our requests below are broken out by type; use the action dropdown to see the specific payload structure for each action.

Action Person Object Delivery
identify
delete
event
screen
page
add_relationships
delete_relationships
add_device
delete_device
merge
suppress
unsuppress

Make a single request

This endpoint lets you create, update, or delete a single person or object—including managing relationships between objects and people.

An "object" is any kind of non-person entity that you want to associate with one or more people—like a company, an educational course that people signed up for, a product, etc.

Your request must be smaller than 32kb.

Authorization:
Request Body: application/json
One of
type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string

Indicates that the operation will identify the the item of the specified type.

object

Attributes that you want to add or update for this person.

Array of objects

Each object in the array represents a relationship you want to add to, or remove from, a person.

Responses

Request samples

Content type
application/json
Example
{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "identify",
  • "attributes": {
    • "cio_subscription_preferences": {
      }
    },
  • "cio_relationships": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "errors": [
    • {
      }
    ]
}

Send multiple requests

This endpoint lets you batch requests for different people and objects in a single request. Each object in your array represents an individual "entity" operation—it represents a change for a person, an object, or a delivery.

You can mix types in this request; you are not limited to a batch containing only objects or only people. An "object" is a non-person entity that you want to associate with one or more people—like a company, an educational course that people enroll in, etc.

Your batch request must be smaller than 500kb. Each of the requests within the batch must also be 32kb or smaller.

Authorization:
Request Body: application/json
Array of objects

A batch of requests, where each object is any individual entity payload—modifying a single person or object.

Responses

Request samples

Content type
application/json
{
  • "batch": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "errors": [
    • {
      }
    ]
}

Person Schemas

These schemas all use "type": "person". These are operations that reflect people, the data you know about them, the events they perform, and the objects they're related to. You can use these schemas with the /v2/entity or /v2/batch endpoints.

Identify a person

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "identify"

Indicates that the operation will identify the the item of the specified type.

object

Attributes that you want to add or update for this person.

Array of objects

Each object in the array represents a relationship you want to add to, or remove from, a person.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "identify",
  • "attributes": {
    • "cio_subscription_preferences": {
      }
    },
  • "cio_relationships": [
    • {
      }
    ]
}

Delete a person

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "delete"

Indicates that the operation will delete the the item of the specified type.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "delete"
}

Send events for a person

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "event"

A custom event attributed to the specified person.

name
required
string

The name of the event. This is how you'll find your event in Customer.io or select it when using events as campaign triggers.

id
string <ULID>

A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id.

timestamp
integer

The Unix timestamp when the event happened.

object

Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "event",
  • "id": "string",
  • "name": "string",
  • "timestamp": 0,
  • "attributes": {}
}

Send page events for a person

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "screen"

A web "pageview" event attributed to a person. Our screen and page event types are more specific than our standard event, and help you track and target people based on the pages people visit in your mobile app or website.

name
required
string

The name of the page or page path that a person visited. This is how you'll find and select page view events in Customer.io.

id
string <ULID>

A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id.

timestamp
integer

The Unix timestamp when the event happened.

object

Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "screen",
  • "id": "string",
  • "name": "string",
  • "timestamp": 0,
  • "attributes": {
    • "liquid merge data1": null,
    • "liquid merge data2": null
    }
}

Send screen events for a person

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "screen"

A mobile "screenview" event attributed to a person. Our screen and page event types are more specific than our standard event, and help you track and target people based on the pages people visit in your mobile app or website.

name
required
string

The name of the screen a person visited. This is how you'll find and select screen view events in Customer.io.

id
string <ULID>

A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id.

timestamp
integer

The Unix timestamp when the event happened.

object

Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "screen",
  • "id": "string",
  • "name": "string",
  • "timestamp": 0,
  • "attributes": {
    • "liquid merge data1": null,
    • "liquid merge data2": null
    }
}

Add relationships to a person

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "add_relationships"

This operation associates a person with one or more objects.

required
Array of objects

Each object in the array represents a relationship you want to add to, or remove from, a person.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "add_relationships",
  • "cio_relationships": [
    • {
      }
    ]
}

Remove relationships from a person

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "delete_relationships"

This operation deletes an object relationship from one or more people.

required
Array of objects

Each object in the array represents a relationship you want to add to, or remove from, a person.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "delete_relationships",
  • "cio_relationships": [
    • {
      }
    ]
}

Add a person's devices

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "add_device"

Add a mobile device to a person's profile.

required
object

The properties representing an individual device. Our SDK's gather all the properties defined below automatically, unless you disable the autoTrackDeviceAttributes setting. You can reference the properties outside the attributes object in segments.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "add_device",
  • "device": {
    • "token": "string",
    • "last_used": 0,
    • "platform": "ios",
    • "attributes": {
      }
    }
}

Delete a person's devices

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "delete_device"

Delete a device from a person's profile.

required
object

The device you want to remove.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "delete_device",
  • "device": {
    • "token": "string"
    }
}

Merge duplicate people

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person that you want to remain after the merge, identified by one of id, email, or cio_id. This person receives information from the secondary person in the merge.

If email is disabled as an identifier in your workspace settings, then you must reference people by id or cio_id. Under How to Modify, id must be set to "Reference people by cio_id" for a successful merge.

required
object

The person that you want to delete after the merge, identified by one of id, email, or cio_id. This person's information is merged into the primary person's profile and then it is deleted.

If email is disabled as an identifier in your workspace settings, then you must reference people by id or cio_id. Under How to Modify, id must be set to "Reference people by cio_id" for a successful merge.

action
required
string
Value: "merge"

Merge two people. You'll merge the secondary person into the primary. The primary profile remains after the merge and the secondary is deleted. This operation is not reversible. See our page on merging duplicate people for more information.

{
  • "type": "person",
  • "action": "merge",
  • "primary": {
    • "id": "42"
    },
  • "secondary": {
    • "id": "42"
    }
}

Suppress a person

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "suppress"

Suppress a person's identifier(s) in Customer.io, so that you can't message a person or add their identifiers back to your workspace. This is separate from suppressions performed by your email provider.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "suppress"
}

Unsuppress a person

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "person"

The operation modifies a person in Customer.io

required
object

The person you want to perform an action for—one of either id, email, or cio_id. You cannot pass multiple identifiers.

action
required
string
Value: "unsuppress"

Unsuppress a person's identifier(s) in Customer.io, so that you can message a person or add their identifiers back to your workspace. This does not unsuppress addresses that were previously suppressed by your email provider.

{
  • "type": "person",
  • "identifiers": {
    • "id": "42"
    },
  • "action": "unsuppress"
}

Object Schemas

These schemas all use "type": "object". An "object" is a way to group people and relate them to common data—like all the people who belong to an account or sign up for an online class. An object can store attributes and relationships to people, but it cannot perform events or be related to another object. These schemas apply to our /v2/entity or /v2/batch endpoints.

Identify object

type
required
string
Value: "object"

The operation modifies a single object—non person data.

required
object

The identifiers for a custom object. When identifying a new object, you must use both the object_type_id and object_id (where object_type_id is an integer representing the type of object and the object_id is the individual identifier for the object).

If you're updating an existing object, you can use either the object_type_id and object_id or the cio_object_id (where cio_object_id is an immutable unique value that Customer.io sets for an object when you create it).

action
required
string
Value: "identify"

Indicates that the operation will identify the the item of the specified type.

attributes
object

The data that belongs to the object. This is information you might want to associate with people later (through cio_relationships). Passing null or an empty string removes the attribute from the object. Some attributes have special meaning. Please refer to the list of reserved attributes.

Array of objects

The people you want to associate with an object. Each object in the array represents a person.

{
  • "identifiers": {
    • "object_type_id": "1",
    • "object_id": "acme"
    },
  • "type": "object",
  • "action": "identify",
  • "attributes": { },
  • "cio_relationships": [
    • {
      }
    ]
}

Identify an object and relate it to anonymous people

The identify_anonymous action lets you create or update an object and associate it with one or more people by anonymous_id. This helps you relate objects to people before you identify people by their id or email. You can use this schema with the /v2/entity or /v2/batch endpoints.

When you identify a person by id or email and pass their anonymous_id, we'll merge their anonymous information—including any objects they're related to—with their identified profile.

type
required
string
Value: "object"

The operation modifies a single object—non person data.

required
object

The identifiers for a custom object. When identifying a new object, you must use both the object_type_id and object_id (where object_type_id is an integer representing the type of object and the object_id is the individual identifier for the object).

If you're updating an existing object, you can use either the object_type_id and object_id or the cio_object_id (where cio_object_id is an immutable unique value that Customer.io sets for an object when you create it).

action
required
string
Value: "identify_anonymous"

Indicates that the operation will identify the item of the specified type and relate it to an anonymous_id.

attributes
object

The data that belongs to the object. This is information you might want to associate with people later (through cio_relationships). Passing null or an empty string removes the attribute from the object. Some attributes have special meaning. Please refer to the list of reserved attributes.

Array of objects

The anonymous people you want to associate with an object. Each object in the array contains an anonymous_id representing a person you haven't yet identified by id or email.

{
  • "identifiers": {
    • "object_type_id": "1",
    • "object_id": "acme"
    },
  • "type": "object",
  • "action": "identify_anonymous",
  • "attributes": { },
  • "cio_relationships": [
    • {
      }
    ]
}

Delete object

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "object"

The operation modifies a single object—non person data.

action
required
string
Value: "delete"

Indicates that the operation will delete the the item of the specified type.

object

The identifiers for a particular object. You can use either the object_type_id and object_id (where object_type_id represents the type of object and the object_id is the individual identifier for the object) or the cio_object_id.

{
  • "identifiers": {
    • "object_type_id": "1",
    • "object_id": "acme"
    },
  • "type": "object",
  • "action": "delete"
}

Add relationships to an object

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "object"

The operation modifies a single object—non person data.

action
required
string
Value: "add_relationships"

This operation associates an object with one or more people.

required
Array of objects

The people you want to associate with an object. Each object in the array represents a person.

object

The identifiers for a particular object. You can use either the object_type_id and object_id (where object_type_id represents the type of object and the object_id is the individual identifier for the object) or the cio_object_id.

{
  • "identifiers": {
    • "object_type_id": "1",
    • "object_id": "acme"
    },
  • "type": "object",
  • "action": "add_relationships",
  • "cio_relationships": [
    • {
      }
    ]
}

Remove relationships from an object

You can use this schema with the /v2/entity or /v2/batch endpoints.

type
required
string
Value: "object"

The operation modifies a single object—non person data.

action
required
string
Value: "delete_relationships"

This operation deletes an object relationship from one or more people.

required
Array of objects

The people you want to associate with an object. Each object in the array represents a person.

object

The identifiers for a particular object. You can use either the object_type_id and object_id (where object_type_id represents the type of object and the object_id is the individual identifier for the object) or the cio_object_id.

{
  • "identifiers": {
    • "object_type_id": "1",
    • "object_id": "acme"
    },
  • "type": "object",
  • "action": "delete_relationships",
  • "cio_relationships": [
    • {
      }
    ]
}

Track v1 Overview

Web SDK vs Backend Integrations

  <script type="text/javascript">
      var _cio = _cio || [];
      (function() {
          var a,b,c;a=function(f){return function(){_cio.push([f].
          concat(Array.prototype.slice.call(arguments,0)))}};b=["load","identify",
          "sidentify","track","page"];for(c=0;c<b.length;c++){_cio[b[c]]=a(b[c])};
          var t = document.createElement('script'),
              s = document.getElementsByTagName('script')[0];
          t.async = true;
          t.id    = 'cio-tracker';
          t.setAttribute('data-site-id', 'YOUR_SITE_ID');
          t.setAttribute('data-use-array-params', 'true');
          t.src = 'https://assets.customer.io/assets/track.js';
          s.parentNode.insertBefore(t, s);
      })();
  </script>

You can integrate with this API using a javascript snippet, by consuming the API directly, or both.

You can simply copy/paste the Javascript snippet to your site to track basic customer behaviors directly from your website. In many cases, using the Javascript snippet is easier to integrate with your app, but there are several reasons why you may want to send events from your backend systems:

  • Ad blockers are becoming more prevalent as people and browsers increasingly try to avoid 3rd-party JS trackers.

  • You don't plan to trigger emails based on how customers interact with your website (e.g. users who haven’t visited the site in X days).

  • You use the Javascript snippet, but have a few events you’d like to send from your backend system. They will work well together!

  • You would rather not have another Javascript snippet slowing down your frontend. Our snippet is asynchronous (doesn’t affect initial page load) and very small, but we understand.

    You should base your decision to send events from your backend or a Javascript snippet on what works best for you. You can fully integrate with Customer.io using either approach.

Client libraries

Check out our Track API section if you're looking for information about the Javascript snippet.

We provide client libraries to support integrations with our Track and App APIs in whatever language you prefer. Take advantage of our client libraries to simplify your integration and take advantage of operations tailored to your language of choice.

NOTE: Where possible, code samples on this page for our Track and App APIs reflect an integration with a relevant library. Otherwise, our code samples show HTTP client operations.

Account Region

Determine whether your account and data are hosted in the US or EU data center using your Track API Key.

Find your account region

This endpoint returns the appropriate region and URL for your Track API credentials. Use it to determine the URLs you should use to successfully complete other requests.

You can perform this operation against either of the track API regional URLs; it returns your region in either case.

This endpoint also returns an environment_id, which represents the workspace the credentials are valid for.

Authorization:

Responses

Request samples

curl --request GET \
  --url https://track.customer.io/api/v1/accounts/region

Response samples

Content type
application/json
{}

Customers

Add, modify, suppress, or unsuppress people (referred to as "customers" in our APIs). You can also use these endpoints to set attributes on people.

Add or update a customer

Adds or updates a person.

If your request does not include cio_id and the identifiers in the request body do not belong to a person, your request adds a person.

If a person already exists with the identifier in the request path, your request updates that person. If the identifier in the path does not belong to a person but you use an identifier in your request body that does belong to a person, your request updates the person and assigns them the identifier in the path.

If the identifier in the path and request body belong to different people, your request may return 200 OK but produce an Attribute Update Failure for the identifier in the payload.

If you want to update a person's identifiers after they are set, you must reference them using their cio_id in the format cio_<cio_id_value>—unless when updating an email with the Allow updates to email using ID setting enabled. You can get the cio_id value from the App API. If your request includes a cio_id, we'll attempt to update that person, including any identifiers in the request. If the cio_id does not exist or belongs to a person who was deleted, we'll drop the request.

For workspaces using email as an identifier, email is case-insensitive. The addresses [email protected] and [email protected] would represent the same person.

Authorization:
path Parameters
required
string

The unique value representing a person. The values you use to identify a person may be an id, email address, or the cio_id (when updating people), depending on your workspace settings. When you reference people by cio_id, you must prefix the value with cio_.

Request Body: application/json
id
string

A customer's ID. You can set a person's ID if you identify them by email (in the path); you can update this value if you identify a person by cio_id.

email
string <email>

The email address of the customer.

anonymous_id
string

An identifier for an anonymous event, like a cookie. If set as an attribute on a person, any events bearing the same anonymous value are associated with this person. This value must be unique and is not reusable.

created_at
integer

The Unix timestamp when the user was created.

_update
boolean

If you perform multiple requests in rapid succession when you create a person, there's a danger that you could create multiple profiles. If you know that a profile already exists and you want to update it, set _update:true, and Customer.io will not create a new profile, even if the identifier in the path isn't found.

If the identifiers in your path or request don't belong to an existing person, the request produces a Failed Attribute Change event in your activity log.

object

Describes relationships to an entity—a non-person object in Customer.io, like a company, educational course, job board, etc.

unsubscribed
boolean

If true, a person is unsubscribed from all messages. If false, or absent, a person is eligible to receive messages as determined by their cio_subscription_preferences. Like subscription preferences, this attribute is automatically set or updated when a person clicks the "unsubscribe" link in your emails. We support any case of true (i.e. TRUE, true, tRUe, etc.), 1, or "1" to represent unsubscribed. Any other value is considered “false”, or subscribed.

object

Stores your audience's subscription preferences if you enable our subscription center feature. These items are set automatically when people use the unsubscribe link in your messages, but you can set preferences outside the subscription flow. To update select topic preferences while preserving those set for other topics, use JSON dot notation "cio_subscription_preferences.topics.topic_<topic ID>":<boolean>.

string or integer or boolean

Set attributes on customers. Attributes can have string, integer, or boolean values.

Responses

Request samples

Content type
application/json
{
  • "email": "[email protected]",
  • "created_at": 1361205308,
  • "first_name": "Bob",
  • "plan": "basic",
  • "cio_relationships": {
    • "action": "add_relationships",
    • "relationships": [
      ]
    },
  • "cio_subscription_preferences": {
    • "topics": {
      }
    }
}

Delete a customer

Deleting a customer removes them, and all of their information, from Customer.io.

NOTE: Calls that update customers by ID can also create a customer. If you send data to Customer.io through other means (like the Javascript snippet), after you delete a customer, you may accidentally recreate the customer. You cannot delete a customer using the Javascript snippet alone.

Authorization:
path Parameters
required
string

The unique value representing a person. The values you use to identify a person may be an id, email address, or the cio_id (when updating people), depending on your workspace settings. When you reference people by cio_id, you must prefix the value with cio_.

Responses

Request samples

const { TrackClient, RegionUS } = require('customerio-node');
let cio = new TrackClient(siteId, apiKey, { region: RegionUS });

// Depending on your workspace settings, the id (5) may be an email address.
cio.destroy(5);

Add or update a customer device

Customers can have more than one device. Use this method to add iOS and Android devices to, or update devices for, a customer profile.

Authorization:
path Parameters
required
string

The unique value representing a person. The values you use to identify a person may be an id, email address, or the cio_id (when updating people), depending on your workspace settings. When you reference people by cio_id, you must prefix the value with cio_.

Request Body: application/json
required
object

The properties representing an individual device. Our SDK's gather all the properties defined below automatically, unless you disable the autoTrackDeviceAttributes setting. You can reference the properties outside the attributes object in segments or in Liquid.

Responses

Request samples

Content type
application/json
{
  • "device": {
    • "id": "string",
    • "last_used": 0,
    • "platform": "ios",
    • "attributes": {
      }
    }
}

Response samples

Content type
application/json
{
  • "meta": {
    • "errors": [
      ]
    }
}

Delete a customer device

Remove a device from a customer profile. If you continue sending data about a device to Customer.io, you may inadvertently re-add the device to the customer profile.

Authorization:
path Parameters
required
string

The unique value representing a person. The values you use to identify a person may be an id, email address, or the cio_id (when updating people), depending on your workspace settings. When you reference people by cio_id, you must prefix the value with cio_.

device_id
required
string

The ID of the device you want to perform an operation against.

Responses

Request samples

curl --request DELETE \
  --url https://track.customer.io/api/v1/customers/{identifier}/devices/{device_id}

Response samples

Content type
application/json
{
  • "meta": {
    • "errors": [
      ]
    }
}

Suppress a customer profile

Delete a customer profile and prevent the person's identifier(s) from being re-added to your workspace. Any future API calls or operations referencing the specified ID are ignored. If you suppress a person in a workspace set that identifies people by email or ID and both identifiers are set, both the person's email and ID are suppressed.

 This API permanently deletes people

Suppressing a person way deletes their profile and suppresses the identifier you reference in the path of this call, preventing you from re-adding a person using the same identifier (until you unsuppress the identifier). You cannot recover a profile after you suppress it. In general, should use this API sparingly—for GDPR/CCPA requests, etc.

If you want to keep a record of a person but prevent them from receiving messages, you should set the person's unsubscribed attribute (or use other attributes to represent complex subscription preferences) instead.

Authorization:
path Parameters
required
string

The unique value representing a person. The values you use to identify a person may be an id, email address, or the cio_id (when updating people), depending on your workspace settings. When you reference people by cio_id, you must prefix the value with cio_.

Responses

Request samples

curl --request POST \
  --url https://track.customer.io/api/v1/customers/{identifier}/suppress

Unsuppress a customer profile

Unsuppressing a profile allows you to add the customer back to Customer.io. If you unsuppress a person in a workspace set that identifies people by email or ID and the suppressed person had both an email and ID, both the person's email and ID are unsuppressed.

Unsuppressing a profile does not recreate the profile that you previously suppressed. Rather, it just makes the identifier available again. Identifying a person after unsuppressing them creates a new profile, with none of the history of the previously suppressed identifier.

Authorization:
path Parameters
required
string

The unique value representing a person. The values you use to identify a person may be an id, email address, or the cio_id (when updating people), depending on your workspace settings. When you reference people by cio_id, you must prefix the value with cio_.

Responses

Request samples

curl --request POST \
  --url https://track.customer.io/api/v1/customers/{identifier}/unsuppress

Custom unsubscribe handling

This endpoint lets you set a global unsubscribed status outside of the subscription pathways native to Customer.io. If you use custom unsubscribe links, you can host a custom unsubscribe page and use this API to send unsubscribe data, associated with a particular delivery, to Customer.io.

NOTE: This endpoint requires a Content-type: application/json header. This endpoint does not require an Authorization header.

Your request sets a person's unsubscribed attribute to true, attributes their unsubscribe request to the individual email/delivery that they unsubscribed from, and lets you segment your audience based on email_unsubscribed events when you use a custom subscription center.

If you use a custom subscription center (managing subscriptions to various types of messages with custom attributes), this request does not set a custom attribute. You must perform a separate request to update a person's custom subscription attributes.

path Parameters
delivery_id
required
string

The delivery resulting in a request to unsubscribe.

Request Body: application/json
unsubscribe
boolean

If true, a person's unsubscribed attribute is set to true and the unsubscription is attributed to the delivery.

Responses

Request samples

Content type
application/json
{
  • "unsubscribe": true
}

Merge duplicate people

Merge two customer profiles together. The payload contains primary and secondary profile objects. The primary profile remains after the merge and the secondary is deleted. This operation is not reversible.

The following information is merged into the primary profile from the secondary profile:

  • Attributes that are not set, or are empty, on the primary.
  • The most recent 30-days of event history. Events merged from the secondary person cannot trigger campaigns.
  • Manual segments that the primary person did not already belong to.
  • Message delivery history.
  • Campaign journeys that the primary person has not entered. If the secondary person has started a journey that the primary person has not, the primary person continues on that campaign journey after the merge. If the secondary person has completed journeys that the primary person has not, the primary person gains these historical journeys after the merge. This may be important for determining entry (or re-entry) criteria for subsequent campaigns, segments, etc.
Authorization:
Request Body: application/json
required
object

The person that you want to remain after the merge, identified by one of id, email, or cio_id. This person receives information from the secondary person in the merge.

If email is disabled as an identifier in your workspace settings, then you must reference people by id or cio_id. Under How to Modify, id must be set to "Reference people by cio_id" for a successful merge.

required
object

The person that you want to delete after the merge, identified by one of id, email, or cio_id. This person's information is merged into the primary person's profile and then it is deleted.

If email is disabled as an identifier in your workspace settings, then you must reference people by id or cio_id. Under How to Modify, id must be set to "Reference people by cio_id" for a successful merge.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "meta": {
    • "error": "string"
    }
}

Events

Use customer events to trigger campaigns or add users to segments. You can attribute events directly to customers or send anonymous events and associate them with users later when you identify them.

Track a customer event

Send an event associated with a person, referenced by the identifier in the path. There are three defined event type values: page, screen and event. Page and screen events represent website page views and mobile app screen views respectively; the name for these event types is intended to be the page or screen a person visited or viewed. Any other event, is given the event type.

We automatically trim leading and trailing spaces from event names.

Reserved Properties

There are a few important values which, if sent with the events that trigger campaigns, will override your campaign settings:

  • from_address
  • recipient
  • reply_to

When using the Javascript snippet to track events, you must call the Behavioral Tracking API call after identifying the customer or the event will not associate with the customer’s profile.

Authorization:
path Parameters
required
string

The unique value representing a person. You may identify a person by id, email address, or the cio_id (when updating people), depending on your workspace settings.

Request Body: application/json
One of
name
required
string

The name of the event. This is how you'll reference the event in campaigns or segments.

id
string <ulid>

An identifier used to deduplicate events. This value must be a ULID. If an event has the same value as an event we previously received, we won't show or process the duplicate. Note - our Python and Ruby libraries do not pass this id.

type
string
Value: "event"

Sets the event type. If your event isn't a page or screen type event, we automatically set this property to event.

timestamp
integer <unix timestamp>

The unix timestamp when the event took place. If you don't provide this value, we use the date-time when we receive the event.

NOTE: Events with a timestamp in the past 72 hours can trigger campaigns.

object

Additional information that you might want to reference in a message using liquid or use to set attributes on your customer (referenced by customer_id).

Responses

Request samples

Content type
application/json
Example
{
  • "name": "purchase",
  • "data": {
    • "price": 23.45,
    • "product": "socks"
    }
}

Track an anonymous event

An anonymous event represents a person you haven't identified yet. When you identify a person, you can set their anonymous_id attribute. If event merging is turned on in your workspace, and the attribute matches the anonymous_id in one or more events that were logged within the last 30 days, we associate those events with the person. If you associate an event with a person within 72 hours of the timestamp on the event, you can trigger campaigns from the event.

There are three possible event type values: page, screen and event. Page and screen events represent website page views and mobile app screen views respectively; the name for these event types is intended to be the page or screen a person visited or viewed. Any other event, is given the event type.

Note: Avoid using names with leading or trailing spaces, because you can't reference event names with leading or trailing spaces in campaigns, etc. In workspaces created after September 21, 2021, we trim leading and trailing spaces from event names automatically to fix this issue.

Authorization:
Request Body: application/json
One of
name
required
string

The name of the event. This is how you'll reference the event in campaigns or segments.

anonymous_id
string

An identifier for an anonymous event, like a cookie. If set as an attribute on a person, any events bearing the same anonymous value are associated with this person. This value must be unique and is not reusable.

id
string <ulid>

An identifier used to deduplicate events. This value must be a ULID. If an event has the same value as an event we previously received, we won't show or process the duplicate. Note - our Python and Ruby libraries do not pass this id.

type
string
Enum: "event" "page" "screen"

Sets the event type. If your event isn't a page or screen type event, we automatically set this property to event.

timestamp
integer <unix timestamp>

The unix timestamp when the event took place. If you don't provide this value, we use the date-time when we receive the event.

object

Additional information that you might want to reference in a message using liquid or use to set attributes on your customer (referenced by customer_id). You can include from_address and reply_to, but the event can only trigger a campaign if it is associated with a person within 72 hours of its timestamp.

Responses

Request samples

Content type
application/json
Example
{
  • "name": "watched_video",
  • "anonymous_id": "abc123",
  • "data": {
    • "video": "intro-to-platform"
    }
}

Report metrics

This endpoint helps you report metrics from channels that aren't native to Customer.io or don't rely on our SDKs. When we deliver a message, we include a CIO-Delivery-ID header. This is the delivery_id in the payload. You can use it as a UTL and you can pass it as a UTM parameter in links, etc to track metrics when people click, convert, etc.

Request Body: application/json
One of
delivery_id
required
string

The CIO-Delivery-ID from the notification that you want to associate the event with.

metric
required
string
Enum: "bounced" "clicked" "converted" "deferred" "delivered" "dropped" … 2 more

The email metric you want to report back to Customer.io.

timestamp
integer <unix timestamp>

The unix timestamp when the event occurred.

recipient
string

The email of the person who received the message.

reason
string

For metrics indicating a failure (like bounced), this field provides the reason for the failure.

href
string

For clicked metrics, this is the link the recipient clicked.

Responses

Request samples

Content type
application/json
Example
{
  • "delivery_id": "RPILAgUBcRhIBqSfeiIwdIYJKxTY",
  • "timestamp": 1613063089,
  • "metric": "bounced",
  • "recipient": "string",
  • "reason": "string",
  • "href": "string"
}

Report push metrics Deprecated

While this endpoint still works, you should take advantage of our universal metrics endpoint. It supports channels besides push and lets you provide additional information with some metrics.

Use this endpoint to report device-side push metrics—opened, converted, and delivered—back to Customer.io, so you can track the effectiveness of your push notifications. Customer.io has no way of knowing about these metrics, or associating metrics with a specific message, unless you report them back to us.

When Customer.io delivers a push notification, we include CIO-Delivery-ID and CIO-Delivery-Token parameters. Reference these in your payload as the delivery_id and device_id respectively with the type of device-side event metric that you want to associate with your push notification and the person represented by the device_id.

Request Body: application/json
delivery_id
string

The CIO-Delivery-ID from the notification that you want to associate the event with.

event
string
Enum: "opened" "converted" "delivered"

The type of device-side event you want to report back to Customer.io.

device_id
string

The CIO-Delivery-Token representing the device that received the original notification.

timestamp
integer <unix timestamp>

The unix timestamp when the event occurred.

Responses

Request samples

Content type
application/json
{
  • "delivery_id": "RPILAgUBcRhIBqSfeiIwdIYJKxTY",
  • "event": "opened",
  • "device_id": "CIO-Delivery-Token from the notification",
  • "timestamp": 1613063089
}

Forms

Connect forms to your workspace to identify people, apply form responses to people, and trigger campaigns for people who fill out forms on your website or in your app.

Submit a form

Submit a form response. If Customer.io does not recognize the form_id we create a new form connection (found on the Data & Integrations > Integrations > Forms page). Form submissions with the same ID are treated as submissions from the same form.

The data object must contain at least one of id or email (depending on the identifiers supported in your workspace)—or a field that is mapped to one of these identifiers—to identify the form respondent. If the person who submitted the form does not already exist, we create them (like an identify request).

Additional keys in the data object represent form fields and values from the form that a person submitted. By default, we map form fields in your request directly to attributes, e.g. if you have a form field called first_name, we map that field to the first_name attribute.

NOTES:

  • You cannot disable fields that you send to this API. If you send a field (as data) to this API, we'll include it in the form submission.
  • If an identifier in your form is called something like email_address rather than email in your initial request, you'll receive a 400, but we'll still add your form on the Data & Integrations > Integrations > Forms page. You can then re-map your email_address field to email, and your form will begin working normally.
  • Customer.io reserves form_id, form_name, form_type, form_url, and form_url_param keys. If your request includes these keys, Customer.io ignores them.
Authorization:
path Parameters
form_id
required
string

The identifier for a form. If Customer.io does not recognize the form_id, we create a new form connection (found on the Data & Integrations > Forms page). Use a value that makes sense to you, or something that you can trace to your backend system.

Request Body: application/json
required
object

Represents your form data. By default, we assume that form fields map directly to attributes (e.g. if your form field is called name, we assume it represents an attribute called "name"). However, you can re-map form fields to attributes on the Forms page in your workspace.

Values for form fields must be formatted as strings.

Responses

Request samples

Content type
application/json
{
  • "data": {
    • "email": "[email protected]",
    • "first_name": "cool",
    • "last_name": "person",
    • "fav_food": "pizza"
    }
}

Response samples

Content type
application/json
{
  • "meta": {
    • "errors": [
      ]
    }
}

Segments

Manual segments are lists of people that you incorporate using the API or by uploading CSVs. You can add people to, or remove people from, manual segments with these endpoints. These endpoints do not let you modify data-driven segments.

NOTE: These endpoints do not yet support workspaces that use both email and id as identifiers.

A segment must exist before you can add people to it. You can create manual segments using the App API /segments endpoints.

Add people to a manual segment

Add people to a manual segment by ID. You are limited to 1000 customer IDs per request.

This endpoint lets you add people to manual segments, but a segment must exist before you can add people to it. You can create and find manual segments using the App API.

When you call this API, you can pass an id_type query parameter determining the type of identifier you want to use, id, email, or cio_id; If you don't pass this parameter, it defaults to id. The request body always uses ids, even though it'll accept either IDs, emails, or cio_ids depending on the query parameter. Everybody in the payload must use the same kind of identifier; we'll ignore values in the ids array that don't match the id_type parameter.

NOTE: You cannot add people to data-driven segments using the API. See our documentation on segments for more information about segments.

Authorization:
path Parameters
segment_id
required
integer <int32>

The identifier for a segment. You can find your segment's ID on its page in the dashboard—go to Segments, select your segment, and find the ID under Usage. Or you can find your segment using the App API.

query Parameters
id_type
string
Default: "id"
Enum: "id" "email" "cio_id"

The type of ids you want to use. All of the values in the ids array must be of this type. If you don't provide this parameter, we assume that the ids array contains id values.

Request Body: application/json
ids
required
Array of strings [ 1 .. 1000 ] items

The customer IDs you want to add to the segment. The type of value you pass in the array corresponds to the id_type query parameter—id, email, or cio_id. Entries in the array that don't match the id_type are ignored.

Responses

Request samples

Content type
application/json
{
  • "ids": [
    • "customer_id1",
    • "customer_id2"
    ]
}

Response samples

Content type
application/json
"Segment not found"

Remove people from a manual segment

You can remove users from a manual segment by ID. You are limited to 1000 customer IDs per request.

This endpoint requires people to have id attributes. If your workspace does not use id as an identifier, or you have not assigned people id values, you cannot remove people from manual segments using the API. Our user interface does not have this limitation. You can remove people from manual segments through the UI as a part of a campaign workflow.

NOTE: You cannot remove people from data-driven segments using the API. See our documentation on segments for more information about segments.

Authorization:
path Parameters
segment_id
required
integer <int32>

The identifier for a segment. You can find your segment's ID on its page in the dashboard—go to Segments, select your segment, and find the ID under Usage. Or you can find your segment using the App API.

query Parameters
id_type
string
Default: "id"
Enum: "id" "email" "cio_id"

The type of ids you want to use. All of the values in the ids array must be of this type. If you don't provide this parameter, we assume that the ids array contains id values.

Request Body: application/json
ids
required
Array of strings [ 1 .. 1000 ] items

The customer IDs you want to remove from the segment.

Responses

Request samples

Content type
application/json
{
  • "ids": [
    • "customer_id1",
    • "customer_id2"
    ]
}

Response samples

Content type
application/json
"Segment not found"
"},"from":{"type":"string","description":"The address that the message is from, relevant if the action `type` is `email`.","readOnly":true,"example":"sentFrom@example.com"},"reply_to":{"type":"string","description":"The address that receives replies for the message, if applicable.","readOnly":true,"example":"replyto@example.com"},"recipient":{"description":"The recipient address for an action.","type":"string","example":"person@example.com"},"subject":{"type":"string","description":"The subject line for an `email` action.","example":"Did you get that thing I sent you?"},"bcc":{"readOnly":true,"description":"The blind-copy address(es) for this action.","type":"string"},"fake_bcc":{"readOnly":true,"type":"boolean","description":"If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"},"preheader_text":{"type":"string","description":"Also known as \"preview text\", this specifies the small block of text shown in an end-user's email inbox, next to, or underneath, the subject line."},"url":{"type":"string","description":"The URL of a webhook or action.","example":"http://example.com/webhook"},"request_method":{"type":"string","description":"The method used in conjunction with a webhook `url`.","enum":["GET","POST","PUT","DELETE","PATCH"],"example":"POST"},"headers":{"description":"An object containing headers, where the key is the header name and the value is the header value. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.","type":"object","additionalProperties":{"type":"string"},"example":{"X-Mailgun-Tag":"my-cool-tag"}},"forgotten":{"type":"boolean","description":"If true, Customer.io does not retain the message content.","example":false}}},"commonTriggerProps":{"type":"object","properties":{"data":{"type":"object","description":"Contains information you want to use to populate your broadcast.","additionalProperties":{"x-additionalPropertiesName":"Broadcast liquid data","description":"Insert key-values that you want to reference in your message here."},"example":{"headline":"Roadrunner spotted in Albuquerque!","date":1511315635,"text":"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"}},"email_add_duplicates":{"type":"boolean","default":false,"description":"an email address associated with more than one profile id is an error."},"email_ignore_missing":{"type":"boolean","default":false,"description":"If false a missing email address is an error."},"id_ignore_missing":{"type":"boolean","default":false,"description":"If false, a missing customer ID is an error."}}},"campaignRequest":{"oneOf":[{"title":"Default audience","description":"Send your broadcast to the default set of recipients defined in the UI.","type":"object","properties":{"data":{"type":"object","description":"Contains information you want to use to populate your broadcast.","additionalProperties":{"x-additionalPropertiesName":"Broadcast liquid data","description":"Insert key-values that you want to reference in your message here."},"example":{"headline":"Roadrunner spotted in Albuquerque!","date":1511315635,"text":"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"}},"email_add_duplicates":{"type":"boolean","default":false,"description":"an email address associated with more than one profile id is an error."},"email_ignore_missing":{"type":"boolean","default":false,"description":"If false a missing email address is an error."},"id_ignore_missing":{"type":"boolean","default":false,"description":"If false, a missing customer ID is an error."}}},{"title":"Custom recipients","description":"Send your broadcast to a group of people defined by a set of filters.","allOf":[{"type":"object","required":["recipients"],"properties":{"recipients":{"description":"A filter defining the group of people that you want send the broadcast to.","title":"Audience Filter","oneOf":[{"title":"and","type":"object","properties":{"and":{"type":"array","description":"Match *all* conditions to return results.","items":{"type":"object","properties":{"or":{"type":"array","description":"Returns results matching *any* conditions.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}},"not":{"description":"Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.","oneOf":[{"title":"and","type":"object","properties":{"and":{"type":"array","description":"Match *all* conditions to return results.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}}}},{"title":"or","type":"object","properties":{"or":{"type":"array","description":"Match *any* condition to return results.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}}}},{"title":"segment","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"attribute","type":"object","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]},"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}},"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}}}},{"title":"or","type":"object","properties":{"or":{"type":"array","description":"Match *any* condition to return results.","items":{"type":"object","properties":{"and":{"type":"array","description":"Returns results matching *all* conditions.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}},"not":{"description":"Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.","oneOf":[{"title":"and","type":"object","properties":{"and":{"type":"array","description":"Match *all* conditions to return results.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}}}},{"title":"or","type":"object","properties":{"or":{"type":"array","description":"Match *any* condition to return results.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}}}},{"title":"segment","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"attribute","type":"object","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]},"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}},"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}}}},{"title":"not","description":"Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.","oneOf":[{"title":"and","type":"object","properties":{"and":{"type":"array","description":"Match *all* conditions to return results.","items":{"title":"People Filter","type":"object","description":"When filtering for people, you can use `and` and `or` arrays to determine the logic for a group of filter conditions. `not` reverses the filter condition and matches when the condition is false. `segment` and `attribute` represent the individual conditions you can filter a group of people for.","properties":{"and":{"type":"array","description":"Returns results matching *all* conditions.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}},"or":{"type":"array","description":"Returns results matching *any* conditions.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}},"not":{"description":"Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.","oneOf":[{"title":"and","type":"object","properties":{"and":{"type":"array","description":"Match *all* conditions to return results.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}}}},{"title":"or","type":"object","properties":{"or":{"type":"array","description":"Match *any* condition to return results.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}}}},{"title":"segment","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"attribute","type":"object","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]},"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}},"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}}}},{"title":"or","type":"object","properties":{"or":{"type":"array","description":"Match *any* condition to return results.","items":{"title":"People Filter","type":"object","description":"When filtering for people, you can use `and` and `or` arrays to determine the logic for a group of filter conditions. `not` reverses the filter condition and matches when the condition is false. `segment` and `attribute` represent the individual conditions you can filter a group of people for.","properties":{"and":{"type":"array","description":"Returns results matching *all* conditions.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}},"or":{"type":"array","description":"Returns results matching *any* conditions.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}},"not":{"description":"Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.","oneOf":[{"title":"and","type":"object","properties":{"and":{"type":"array","description":"Match *all* conditions to return results.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}}}},{"title":"or","type":"object","properties":{"or":{"type":"array","description":"Match *any* condition to return results.","items":{"anyOf":[{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}}}},{"title":"segment","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"attribute","type":"object","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]},"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}},"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}}}},{"title":"segment","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"attribute","type":"object","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]},{"title":"segment","description":"Filter for people who belong to a segment.","type":"object","properties":{"segment":{"title":"segment","type":"object","description":"Provide the `id` of a segment containing people you want to search for.","properties":{"id":{"type":"integer","description":"The ID of the segment you want to return people from.","example":4}}}}},{"title":"audience","type":"object","description":"filter for people who have an attribute or an attribute value.","properties":{"attribute":{"title":"attribute","description":"Filter your audience by attribute.","type":"object","required":["field","operator"],"properties":{"field":{"type":"string","description":"The name of the attribute you want to filter against.","example":"first_name"},"operator":{"type":"string","description":"Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.","enum":["eq","exists"]},"value":{"type":"string","description":"The value you want to match for this attribute. You must include a value if you use the `eq` operator."}},"example":{"field":"unsubscribed","operator":"eq","value":true}}}}]}}},{"type":"object","properties":{"data":{"type":"object","description":"Contains information you want to use to populate your broadcast.","additionalProperties":{"x-additionalPropertiesName":"Broadcast liquid data","description":"Insert key-values that you want to reference in your message here."},"example":{"headline":"Roadrunner spotted in Albuquerque!","date":1511315635,"text":"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"}},"email_add_duplicates":{"type":"boolean","default":false,"description":"an email address associated with more than one profile id is an error."},"email_ignore_missing":{"type":"boolean","default":false,"description":"If false a missing email address is an error."},"id_ignore_missing":{"type":"boolean","default":false,"description":"If false, a missing customer ID is an error."}}}],"example":{"recipients":{"and":[{"segment":{"id":3}},{"or":[{"attribute":{"field":"interest","operator":"eq","value":"roadrunners"}},{"attribute":{"field":"state","operator":"eq","value":"NM"}},{"not":{"attribute":{"field":"species","operator":"eq","value":"roadrunners"}}}]}]},"data":{"headline":"Roadrunner spotted in Albuquerque!","date":1511315635,"text":"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"}}},{"title":"Emails","description":"An array of emails you want to send the broadcast to. These addresses must already exist; your request cannot create a new person.","allOf":[{"type":"object","required":["emails"],"properties":{"emails":{"description":"An array of email addresses you want to send the broadcast to. These addresses must already exist; your request cannot create a new person.","type":"array","items":{"type":"string","format":"email"},"example":["recipient1@example.com","anotherRecipient@example.com"]}}},{"type":"object","properties":{"data":{"type":"object","description":"Contains information you want to use to populate your broadcast.","additionalProperties":{"x-additionalPropertiesName":"Broadcast liquid data","description":"Insert key-values that you want to reference in your message here."},"example":{"headline":"Roadrunner spotted in Albuquerque!","date":1511315635,"text":"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"}},"email_add_duplicates":{"type":"boolean","default":false,"description":"an email address associated with more than one profile id is an error."},"email_ignore_missing":{"type":"boolean","default":false,"description":"If false a missing email address is an error."},"id_ignore_missing":{"type":"boolean","default":false,"description":"If false, a missing customer ID is an error."}}}]},{"title":"IDs","description":"An array of customer ids that you want to send the broadcast to. These IDs must already exist; your request cannot create a new person.","allOf":[{"type":"object","required":["ids"],"properties":{"ids":{"description":"An array of IDs you want to send a broadcast to. **NOTE**: If your workspace identifies people by `email`, don't use this option. Identify your audience by `emails` instead.\n","type":"array","maxItems":10000,"items":{"type":"string"},"example":["id1","id4"]}}},{"type":"object","properties":{"data":{"type":"object","description":"Contains information you want to use to populate your broadcast.","additionalProperties":{"x-additionalPropertiesName":"Broadcast liquid data","description":"Insert key-values that you want to reference in your message here."},"example":{"headline":"Roadrunner spotted in Albuquerque!","date":1511315635,"text":"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"}},"email_add_duplicates":{"type":"boolean","default":false,"description":"an email address associated with more than one profile id is an error."},"email_ignore_missing":{"type":"boolean","default":false,"description":"If false a missing email address is an error."},"id_ignore_missing":{"type":"boolean","default":false,"description":"If false, a missing customer ID is an error."}}}]},{"title":"User Maps","description":"An array of JSON objects containing `id` or `email` keys and a `data` key. Each object represents a person you want to send the broadcast to and data you want to personalize their message with using liquid.","allOf":[{"type":"object","required":["per_user_data"],"properties":{"per_user_data":{"description":"An array of people you want to send a broadcast to and custom data for each person. Each object in the array represents a person, with additional data you want to use to personalize their message. **When you trigger a broadcast, the people in your request must already exist in your workspace.** Requests to trigger a broadcast cannot create new people.\n","type":"array","maxItems":10000,"items":{"oneOf":[{"title":"ids","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of the recipient.","example":1},"data":{"type":"object","description":"Merge data associated with the recipient.","additionalProperties":{"x-additionalPropertiesName":"Liquid merge data","description":"Insert key-values that you want to reference in your message here."},"example":{"firstName":"Hugh","lastName":"Mann","purchase":"shoes"}}}},{"title":"emails","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the recipient. This address must be unique in your workspace. If more than one person has the same `email` attribute, your request will produce an error.","example":"recipient1@example.com"},"data":{"description":"Merge data associated with the recipient.","type":"object","additionalProperties":{"x-additionalPropertiesName":"Liquid merge data","description":"Insert key-values that you want to reference in your message here."},"example":{"firstName":"Hugh","lastName":"Mann","purchase":"shoes"}}}}]},"example":[{"id":"wiley_coyote","data":{"voucher_code":"FESwYm"}},{"email":"road@runner.net","data":{"voucher_code":"cYm6XJ"}}]}}},{"type":"object","properties":{"data":{"type":"object","description":"Contains information you want to use to populate your broadcast.","additionalProperties":{"x-additionalPropertiesName":"Broadcast liquid data","description":"Insert key-values that you want to reference in your message here."},"example":{"headline":"Roadrunner spotted in Albuquerque!","date":1511315635,"text":"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"}},"email_add_duplicates":{"type":"boolean","default":false,"description":"an email address associated with more than one profile id is an error."},"email_ignore_missing":{"type":"boolean","default":false,"description":"If false a missing email address is an error."},"id_ignore_missing":{"type":"boolean","default":false,"description":"If false, a missing customer ID is an error."}}}]},{"title":"Data file URL","description":"The URL of a data file containing per-user data, each line containing a json map with either `id` and `data` or `email` and `data` keys. **When you trigger a broadcast, the people represented by `id` and `email` must already exist in your workspace.** Requests to trigger a broadcast cannot create new people.\n","allOf":[{"type":"object","required":["data_file_url"],"properties":{"data_file_url":{"description":"The URL of a data file containing per-user data. Each line is a single object representing a person: either a json map of `id` and `data` or `email` and `data` keys. For example, `{\"email\":\"road@runner.net\",\"data\":{\"voucher_code\": \"coyote\"}}`.\n\nThe IDs or emails in your data file must already exist in your workspace. Your broadcast cannot add new people to your workspace and won't send messages for IDs or email addresses that don't match a person in your workspace.\n","type":"string","format":"url","example":"https://myFile.example.com"}}},{"type":"object","properties":{"data":{"type":"object","description":"Contains information you want to use to populate your broadcast.","additionalProperties":{"x-additionalPropertiesName":"Broadcast liquid data","description":"Insert key-values that you want to reference in your message here."},"example":{"headline":"Roadrunner spotted in Albuquerque!","date":1511315635,"text":"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"}},"email_add_duplicates":{"type":"boolean","default":false,"description":"an email address associated with more than one profile id is an error."},"email_ignore_missing":{"type":"boolean","default":false,"description":"If false a missing email address is an error."},"id_ignore_missing":{"type":"boolean","default":false,"description":"If false, a missing customer ID is an error."}}}]}]},"customer_id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.","nullable":true,"example":"42"},"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_identifiers":{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},"not_nullable_customer_id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"},"not_nullable_email_address":{"type":"string","description":"The email address of the customer.","example":"test@example.com"},"email_address":{"type":"string","description":"The email address of the customer.","nullable":true,"example":"test@example.com"},"device_id":{"type":"string","description":"The identifier for a person's device—typically a device token."},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"segment_id":{"type":"integer","description":"The identifier for a segment.","example":7},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"segment_name":{"type":"string","description":"The name of the segment.","example":"Manual Segment 1"},"segment_description":{"type":"string","description":"A description for the segment. This can help you understand the purpose of the segment when you encounter it in other requests or in the UI.","example":"My first manual segment"},"segmentResponseObject":{"type":"object","properties":{"id":{"type":"integer","description":"The identifier for a segment.","example":7},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the segment.","example":"Manual Segment 1"},"description":{"type":"string","description":"A description for the segment. This can help you understand the purpose of the segment when you encounter it in other requests or in the UI.","example":"My first manual segment"},"state":{"type":"string","description":"The state of the segment.\n\n`events` - currently handling event conditions for this segment\n\n`build` - currently handling profile attribute conditions for this segment\n\n`events_queued` - waiting for a process to start handling event conditions for this segment\n\n`build_queued` - waiting for a process to start handling profile attribute conditions for this segment\n\n`finished` - the segment is finished building\n","enum":["events","build","events_queued","build_queued","finished"]},"progress":{"type":"integer","nullable":true,"description":"If Customer.io has not finished processing the segment, this indicates the percentage complete. Otherwise, this key is null.","example":null},"type":{"type":"string","description":"The type of segment.","enum":["dynamic","manual"],"example":"manual"},"tags":{"type":"array","description":"The tags assigned to the segment, if any. Tags may help you sort through your segments.","nullable":true,"items":{"type":"string"},"example":null}}},"broadcast_id":{"type":"integer","description":"The identifier for a broadcast.","example":2},"msg_template_ids":{"type":"array","deprecated":true,"description":"Indicates the message template(s) used in this broadcast.","items":{"type":"object","properties":{"id":{"type":"integer","description":"The identifier for the template."},"type":{"type":"string","description":"The type of template.","enum":["email","webhook","push","sms","slack"]}}}},"broadcastTriggerObject":{"type":"object","description":"You can get triggers to know when you triggered a broadcast and whether or not it's been processed.","properties":{"id":{"type":"integer","description":"The identifier for a broadcast trigger."},"broadcast_id":{"type":"integer","description":"The identifier for a broadcast.","example":2},"created_at":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"processed_at":{"type":"integer","format":"unix timestamp","description":"The date-time when Customer.io processed the trigger."}}},"broadcastObject":{"type":"object","properties":{"id":{"type":"integer","description":"The identifier for a broadcast.","example":2},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the broadcast.","readOnly":true},"type":{"type":"string","description":"The type of broadcast.","enum":["triggered_broadcast"]},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"active":{"type":"boolean","description":"If true, the broadcast is active."},"state":{"type":"string","description":"The state of the broadcast.","enum":["running","draft"]},"actions":{"type":"array","description":"A list of actions used by the broadcast.","items":{"type":"object","properties":{"id":{"type":"integer","description":"The identifier for the action."},"type":{"type":"string","description":"The type of action.","enum":["email","webhook","push","sms","slack"]}}}},"msg_template_ids":{"type":"array","deprecated":true,"description":"Indicates the message template(s) used in this broadcast.","items":{"type":"object","properties":{"id":{"type":"integer","description":"The identifier for the template."},"type":{"type":"string","description":"The type of template.","enum":["email","webhook","push","sms","slack"]}}}},"first_started":{"type":"integer","format":"unix timestamp","description":"The date and time when you activated the broadcast.","example":1552341937},"tags":{"type":"array","description":"An array of tags you set on this broadcast.","items":{"type":"string"}}},"example":{"id":2,"deduplicate_id":"2:1520467200","created":1520467200,"type":"triggered_broadcast","updated":1520467200,"name":"basic","active":true,"state":"running","actions":[{"id":3,"type":"email"},{"id":4},{"type":"webhook"}],"tags":"nil","first_started":1520467200,"created_by":"ExamplePerson"}},"sendpush":{"description":"The payload of a transactional push message.","allOf":[{"type":"object","required":["transactional_message_id"],"properties":{"transactional_message_id":{"description":"The transactional message template that you want to use for your message. You can call the template by its numerical ID or by the *Trigger Name* that you assigned the template (case insensitive).","oneOf":[{"title":"ID (integer)","type":"integer","description":"The ID of the transactional message you want to send.","example":44},{"title":"Trigger Name (string)","type":"string","description":"The name of trigger for the transactional message you want to send; you set the trigger name in the *Configure Settings* step when setting up your message. This is case insensitive.","example":"pwdreset"}]}}},{"type":"object","properties":{"to":{"type":"string","description":"The person's device(s) you want to send this push to. One of `all`, `last_used`, or a custom device token which belongs to the profile from the Identifiers block. Defaults to 'all'. This overrides To from the transactional template (referenced by `transactional_message_id`).","enum":["all","last_used","$device_token"],"default":"all"},"title":{"type":"string","description":"The title for your notification. This overrides the title of the transactional template (referenced by `transactional_message_id`)."},"message":{"type":"string","description":"The message body for your notification. This overrides the notification body of the transactional template (referenced by `transactional_message_id`)."},"image_url":{"type":"string","description":"An image URL to show in the push. This overrides Image from the transactional template (referenced by `transactional_message_id`)."},"link":{"type":"string","description":"A deep link to open when the push is tapped. This overrides Link from the transactional template (referenced by `transactional_message_id`)."},"sound":{"type":"string","description":"**For iOS Only**: your notification can alert users with the device's default notification sound or play no sound at all. \n","enum":["default","none"],"default":"default"},"custom_data":{"type":"object","description":"An optional list of key/value pairs to attach to the push payload. Due to a Firebase limitation we only support sending string key value pairs. This overrides Custom Data from the transactional template (referenced by `transactional_message_id`)."},"custom_device":{"description":"A device to perform an upsert operation at the time of send. The device will be added/updated on the profile from the Identifiers block.","allOf":[{"type":"object","required":["token"],"properties":{"token":{"description":"The device token.","type":"string"}}},{"type":"object","description":"Device information common to the v1 and v2 APIs.","required":["platform"],"properties":{"last_used":{"type":"integer","format":"unix timestamp","description":"The `timestamp` when you last identified this device. If you don't pass a timestamp when you add or update a device, we use the time of the request itself. Our SDKs identify a device when a person launches their app."},"platform":{"type":"string","enum":["ios","android"],"description":"The device/messaging platform."},"attributes":{"type":"object","description":"Attributes that you can reference to segment your audience—like a person's attributes, but specific to a device. These can be either the attributes defined below or custom key-value attributes.","properties":{"device_os":{"type":"string","description":"The operating system, including the version, on the device."},"device_model":{"type":"string","description":"The model of the device a person uses."},"app_version":{"type":"string","description":"The version of your app that a customer uses. You might target app versions to let people know when they need to update, or expose them to new features when they do."},"cio_sdk_version":{"type":"string","description":"The version of the Customer.io SDK in the app."},"_last_status":{"type":"string","readOnly":true,"description":"The delivery status of the last message sent to the device—sent, bounced, or suppressed. An empty string indicates that that the device hasn't received a push yet.","enum":["","bounced","sent","suppressed"]},"device_locale":{"type":"string","description":"The four-letter [IETF language code](/localization/#supported-languages) for the device. For example, `en-MX` (indicating an app in Spanish formatted for a user in Mexico) or `es-ES` (indicating an app in Spanish formatted for a user in Spain)."},"push_enabled":{"type":"string","description":"If `\"true\"`, the device is opted-in and can receive push notifications.","enum":["true","false"]}},"additionalProperties":{"x-additionalPropertiesName":"Custom Device Attributes","description":"Custom properties that you want to associate with the device.","type":"string"}}}}]},"custom_payload":{"type":"object","description":"An optional list of key/value pairs to attach to the push payload. Due to a Firebase limitation we only support sending string key value pairs. This overrides every other parameter, including any Custom Payload from the transactional template (referenced by `transactional_message_id`).","properties":{"ios":{"description":"Your payload changes depending on whether you send to iOS devices through Google's Firebase Cloud Messaging (FCM) or Apple's Push Notification service (APNs).","oneOf":[{"title":"FCM","type":"object","required":["message"],"properties":{"message":{"type":"object","description":"The base object for all FCM payloads.","required":["apns"],"properties":{"apns":{"type":"object","required":["payload"],"description":"Defines a payload for iOS devices sent through Firebase Cloud Messaging (FCM).","properties":{"headers":{"description":"Headers defined by [Apple's payload reference](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns) that you want to pass through FCM.","type":"object"},"payload":{"type":"object","description":"Contains a push payload.","properties":{"CIO":{"type":"object","description":"Contains properties interpreted by the Customer.io iOS SDK.","required":["push"],"properties":{"push":{"type":"object","description":"A push payload for the iOS SDK.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."},"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."}}}}},"aps":{"type":"object","description":"A push payload intended for an iOS device.","properties":{"alert":{"oneOf":[{"title":"Simple alert","type":"string","description":"A simple alert message."},{"title":"Complex alert","type":"object","properties":{"body":{"type":"string","description":"The body of your push notification."},"title":{"type":"string","description":"The title of your push notification."},"subtitle":{"description":"Additional information that explains the purpose of the notification.","type":"string"},"launch-image":{"description":"The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.","type":"string"},"title-loc-key":{"description":"The key for a localized title string in your app’s Localizable.strings files.","type":"string"},"title-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.","items":{"type":"string"}},"subtitle-loc-key":{"description":"The key for a localized subtitle string in your app’s Localizable.strings file.","type":"string"},"subtitle-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.","items":{"type":"string"}},"loc-key":{"description":"The key for a localized message string in your app’s Localizable.strings file.","type":"string"},"loc-args":{"type":"array","description":"An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.","items":{"type":"string"}}}}]},"badge":{"type":"integer","description":"The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."},"sound":{"oneOf":[{"title":"Regular alert","type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."},{"title":"Critical alert","type":"object","properties":{"critical":{"type":"integer","description":"1 indicates critical. 0 is not critical."},"name":{"type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."},"volume":{"type":"number","description":"The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."}}}]},"thread-id":{"type":"string","description":"An identifier to group related notifications."},"category":{"type":"string","description":"The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."},"content-available":{"type":"integer","description":"The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."},"mutable-content":{"type":"integer","description":"If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"},"target-content-id":{"type":"string","description":"The identifier of the window brought forward."},"interruption-level":{"type":"string","description":"Indicates the importance and delivery timing of a notification.","enum":["passive","active","time-sensitive","critical"]},"relevance-score":{"type":"number","description":"A number between 0 and 1. The highest score is considered the \"most relevant\" and is featured in the notification summary."}}}},"additionalProperties":{"description":"Additional properties that you've set up your app to interpret outside of the Customer.io SDK.","x-additionalPropertiesName":"Custom key-value pairs"}}}}}}}},{"title":"APNS","type":"object","properties":{"CIO":{"type":"object","required":["push"],"description":"Contains options supported by the Customer.io SDK.","properties":{"push":{"type":"object","description":"Describes push notification options supported by the CIO SDK.","properties":{"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."}}}}},"aps":{"type":"object","description":"A push payload intended for an iOS device.","properties":{"alert":{"oneOf":[{"title":"Simple alert","type":"string","description":"A simple alert message."},{"title":"Complex alert","type":"object","properties":{"body":{"type":"string","description":"The body of your push notification."},"title":{"type":"string","description":"The title of your push notification."},"subtitle":{"description":"Additional information that explains the purpose of the notification.","type":"string"},"launch-image":{"description":"The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.","type":"string"},"title-loc-key":{"description":"The key for a localized title string in your app’s Localizable.strings files.","type":"string"},"title-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.","items":{"type":"string"}},"subtitle-loc-key":{"description":"The key for a localized subtitle string in your app’s Localizable.strings file.","type":"string"},"subtitle-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.","items":{"type":"string"}},"loc-key":{"description":"The key for a localized message string in your app’s Localizable.strings file.","type":"string"},"loc-args":{"type":"array","description":"An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.","items":{"type":"string"}}}}]},"badge":{"type":"integer","description":"The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."},"sound":{"oneOf":[{"title":"Regular alert","type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."},{"title":"Critical alert","type":"object","properties":{"critical":{"type":"integer","description":"1 indicates critical. 0 is not critical."},"name":{"type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."},"volume":{"type":"number","description":"The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."}}}]},"thread-id":{"type":"string","description":"An identifier to group related notifications."},"category":{"type":"string","description":"The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."},"content-available":{"type":"integer","description":"The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."},"mutable-content":{"type":"integer","description":"If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"},"target-content-id":{"type":"string","description":"The identifier of the window brought forward."},"interruption-level":{"type":"string","description":"Indicates the importance and delivery timing of a notification.","enum":["passive","active","time-sensitive","critical"]},"relevance-score":{"type":"number","description":"A number between 0 and 1. The highest score is considered the \"most relevant\" and is featured in the notification summary."}}}}}]},"android":{"type":"object","description":"A custom push payload for Android devices.","required":["message"],"properties":{"message":{"type":"object","description":"The parent object for Android custom push payloads.","properties":{"notification":{"type":"object","description":"Contains the push body and title.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."}}},"data":{"type":"object","description":"Contains key-value pairs that your app interprets.","additionalProperties":{"x-additionalPropertiesName":"Attachment Names","x-doNotRender":true,"type":"string"}},"android":{"type":"object","description":"Contains custom push options for your notification.","properties":{"notification":{"type":"object","description":"Properties supported specifically by Android on FCM.","properties":{"icon":{"type":"string","description":"Sets the notification icon to `myicon` for drawable resource `myicon`. If you don't send this key, FCM displays the launcher icon from your app manifest."},"sound":{"type":"string","description":"The sound that plays when the device receives the notification. Supports `\"default\"` or the filename of a sound resource bundled in your app. Sound files must reside in `/res/raw/`."},"tag":{"type":"string","description":"Identifier to replace existing notifications in the notification drawer. If empty, each request creates a new notification.\n\nIf you specify a tag, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. \n"},"color":{"type":"string","description":"The notification's icon color in `#rrggbb` format."},"click_action":{"type":"string","description":"The action that occurs when a user taps on the notification. Launches an activity with a matching intent filter when a person taps the notification."},"body_loc_key":{"type":"string","description":"The key to the body string in the app's string resources that you want to use to localize the body text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"body_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `body_loc_key` to localize the body text to the user's current localization. See Formatting and Styling for more information."},"title_loc_key":{"type":"string","description":"The key to the title string in the app's string resources that you want to use to localize the title text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"title_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `title_loc_key` to localize the title text to the user's current localization. See Formatting and Styling for more information."}}}}}}}}}}},"language":{"type":"string","description":"Overrides language preferences for the person you want to send your transactional message to. Use one of our [supported two- or four-letter language codes](/localization-getting-started/#supported-languages)."}}},{"type":"object","required":["to","identifiers"],"properties":{"identifiers":{"description":"Identifies the person represented by your transactional message by one of, and only one of, `id`, `email`, or `cio_id`.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The identifier for the person represented by the transactional message. **NOTE**: If your workspace identifies people by email, use the `email` identifier instead.\n","example":12345}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The identifier for the person represented by the transactional message. Use this option if your workspace identifies people by email rather than by `id`.","example":"cool.person@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique, immutable identifier for a person, set by Customer.io when you add a person.","example":3000001}}}]},"message_data":{"type":"object","description":"An object containing the key-value pairs referenced using liquid in your message.","additionalProperties":{"x-additionalPropertiesName":"Liquid Data","description":"Insert key-values that you want to reference in your message here."},"example":{"password_reset_token":"abcde-12345-fghij-d888","account_id":"123dj"}},"send_at":{"type":"integer","description":"A unix timestamp (seconds since epoch) determining when the message will be sent. The timestamp can be up to 90 days in the future. If this value is in the past, your message is sent immediately."},"disable_message_retention":{"type":"boolean","default":false,"description":"If true, the message body is not retained in delivery history. Setting this value overrides the value set in the settings of your `transactional_message_id`."},"send_to_unsubscribed":{"type":"boolean","default":true,"description":"If false, your message is not sent to unsubscribed recipients. Setting this value overrides the value set in the settings of your `transactional_message_id`."},"queue_draft":{"type":"boolean","description":"If true, your transactional message is held as a draft in Customer.io and not sent directly to your audience. You must go to the Deliveries and Drafts page to send your message.","default":false}}}],"example":{"transactional_message_id":44,"title":"Did you really login from a new location?","identifiers":{"id":12345},"message_data":{"password_reset_token":"abcde-12345-fghij-d888","account_id":"123dj"}}},"sendemail":{"description":"The payload of a transactional message.","oneOf":[{"title":"With template","description":"Send a transactional message using a template that you set up in Customer.io.","allOf":[{"type":"object","required":["transactional_message_id"],"properties":{"transactional_message_id":{"description":"The transactional message template that you want to use for your message. You can call the template by its numerical ID or by the *Trigger Name* that you assigned the template (case insensitive).","oneOf":[{"title":"ID (integer)","type":"integer","description":"The ID of the transactional message you want to send.","example":44},{"title":"Trigger Name (string)","type":"string","description":"The name of trigger for the transactional message you want to send; you set the trigger name in the *Configure Settings* step when setting up your message. This is case insensitive.","example":"pwdreset"}]}}},{"type":"object","properties":{"body":{"type":"string","description":"The HTML body of your message. This overrides the body of the transactional template (referenced by `transactional_message_id`). If you send an AMP-enabled email (with `body_amp`), and the recipient's email client doesn't support AMP, this is the fallback email."},"body_amp":{"type":"string","description":"If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."},"body_plain":{"type":"string","description":"The plaintext body of your message. This overrides the body of your transactional template (referenced by `transactional_message_id`)."},"subject":{"type":"string","description":"The subject line for your message. This overrides the subject of the transactional template (referenced by `transactional_message_id`)."},"from":{"type":"string","description":"The address that your email is from. This address must be verified by Customer.io. This overrides the from address set within the transactional template (referenced by `transactional_message_id`). You can include a display/friendly name in your from address, but we recommend that you use quotation marks around the friendly name to avoid potential issues with special characters, e.g. `\\\"Person\\\" `.","example":"support@example.com"},"language":{"type":"string","description":"Overrides language preferences for the person you want to send your transactional message to. Use one of our [supported two- or four-letter language codes](/localization-getting-started/#supported-languages)."}}},{"type":"object","required":["to","identifiers"],"properties":{"identifiers":{"description":"Identifies the person represented by your transactional message by one of, and only one of, `id`, `email`, or `cio_id`.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The identifier for the person represented by the transactional message. **NOTE**: If your workspace identifies people by email, use the `email` identifier instead.\n","example":12345}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The identifier for the person represented by the transactional message. Use this option if your workspace identifies people by email rather than by `id`.","example":"cool.person@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique, immutable identifier for a person, set by Customer.io when you add a person.","example":3000001}}}]},"message_data":{"type":"object","description":"An object containing the key-value pairs referenced using liquid in your message.","additionalProperties":{"x-additionalPropertiesName":"Liquid Data","description":"Insert key-values that you want to reference in your message here."},"example":{"password_reset_token":"abcde-12345-fghij-d888","account_id":"123dj"}},"send_at":{"type":"integer","description":"A unix timestamp (seconds since epoch) determining when the message will be sent. The timestamp can be up to 90 days in the future. If this value is in the past, your message is sent immediately."},"disable_message_retention":{"type":"boolean","default":false,"description":"If true, the message body is not retained in delivery history. Setting this value overrides the value set in the settings of your `transactional_message_id`."},"send_to_unsubscribed":{"type":"boolean","default":true,"description":"If false, your message is not sent to unsubscribed recipients. Setting this value overrides the value set in the settings of your `transactional_message_id`."},"queue_draft":{"type":"boolean","description":"If true, your transactional message is held as a draft in Customer.io and not sent directly to your audience. You must go to the Deliveries and Drafts page to send your message.","default":false}}},{"type":"object","properties":{"to":{"type":"string","description":"The message recipient(s). Supports multiple addresses separated by commas. Your request can contain up to 15 total recipients between the `to` and `bcc` keys.\n\nYou can include a display or \"friendly\" name in \"to\" address, but we recommend that you use quotation marks around the friendly name to avoid potential issues with special characters, e.g. `\\\"Person\\\" `. \n","example":"cool.person@example.com"},"bcc":{"type":"string","description":"Blind copy message recipients. Supports multiple addresses separated by commas. Your request can contain up to 15 total recipients between the `to` and `bcc` keys.","example":"bcc@example.com"},"fake_bcc":{"type":"boolean","description":"If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"},"reply_to":{"type":"string","description":"The address that recipients can reply to, if different from the `from` address.","example":"replyto@example.com"},"preheader":{"type":"string","description":"Also known as \"preview text\", this is the block block of text that users see next to, or underneath, the subject line in their inbox."},"body_plain":{"type":"string","description":"By default, we generate a plaintext version of your message body for each delivery. Use this key to override the default plain text body."},"attachments":{"type":"object","description":"A dictionary of attachments where the filename is the key and the value is the base64-encoded contents. The filename must include the extension (i.e. `name.csv`). The total size of all attachments must be less than 2 MB.","properties":{"":{"type":"string","format":"base64"}}},"headers":{"description":"An object containing headers, where the key is the header name and the value is the header value. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.","type":"object","additionalProperties":{"type":"string"},"example":{"X-Mailgun-Tag":"my-cool-tag"}},"disable_css_preprocessing":{"type":"boolean","description":"Set to `true` to disable CSS preprocessing. This setting overrides the CSS preprocessing setting on the `transactional_message_id` as set in the user interface. Transactional emails have CSS preprocessing enabled by default.","example":false,"default":false},"tracked":{"type":"boolean","description":"If true, Customer.io tracks opens and link clicks in your message.","default":true}}}],"example":{"transactional_message_id":44,"to":"cool.person@example.com","from":"override-templated-address@example.com","subject":"Order receipt","identifiers":{"email":"cool.person@example.com"},"message_data":{"password_reset_token":"abcde-12345-fghij-d888","account_id":"123dj"},"attachments":{"file1.csv":"base64encodedcontent","file2.pdf":"base64encodedcontent"},"headers":{"X-Mailgun-Tag":"my-cool-tag"},"bcc":"bcc@example.com","disable_message_retention":false,"send_to_unsubscribed":true,"tracked":true,"queue_draft":false,"disable_css_preprocessing":true}},{"title":"Without template","description":"Create your own message from scratch.","allOf":[{"type":"object","required":["body","subject","from"],"properties":{"body":{"type":"string","description":"The body of your message.","example":"Your temporary password is {{message_data.password_reset_token}}"},"subject":{"type":"string","description":"The subject line for your message.","example":"Reset your password!"},"from":{"type":"string","description":"The address that your email is from. This address must be verified by Customer.io. You can include a display/friendly name in your from address in the format `Person `.","example":"support@example.com"}}},{"type":"object","required":["to","identifiers"],"properties":{"identifiers":{"description":"Identifies the person represented by your transactional message by one of, and only one of, `id`, `email`, or `cio_id`.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The identifier for the person represented by the transactional message. **NOTE**: If your workspace identifies people by email, use the `email` identifier instead.\n","example":12345}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The identifier for the person represented by the transactional message. Use this option if your workspace identifies people by email rather than by `id`.","example":"cool.person@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique, immutable identifier for a person, set by Customer.io when you add a person.","example":3000001}}}]},"message_data":{"type":"object","description":"An object containing the key-value pairs referenced using liquid in your message.","additionalProperties":{"x-additionalPropertiesName":"Liquid Data","description":"Insert key-values that you want to reference in your message here."},"example":{"password_reset_token":"abcde-12345-fghij-d888","account_id":"123dj"}},"send_at":{"type":"integer","description":"A unix timestamp (seconds since epoch) determining when the message will be sent. The timestamp can be up to 90 days in the future. If this value is in the past, your message is sent immediately."},"disable_message_retention":{"type":"boolean","default":false,"description":"If true, the message body is not retained in delivery history. Setting this value overrides the value set in the settings of your `transactional_message_id`."},"send_to_unsubscribed":{"type":"boolean","default":true,"description":"If false, your message is not sent to unsubscribed recipients. Setting this value overrides the value set in the settings of your `transactional_message_id`."},"queue_draft":{"type":"boolean","description":"If true, your transactional message is held as a draft in Customer.io and not sent directly to your audience. You must go to the Deliveries and Drafts page to send your message.","default":false}}},{"type":"object","properties":{"to":{"type":"string","description":"The message recipient(s). Supports multiple addresses separated by commas. Your request can contain up to 15 total recipients between the `to` and `bcc` keys.\n\nYou can include a display or \"friendly\" name in \"to\" address, but we recommend that you use quotation marks around the friendly name to avoid potential issues with special characters, e.g. `\\\"Person\\\" `. \n","example":"cool.person@example.com"},"bcc":{"type":"string","description":"Blind copy message recipients. Supports multiple addresses separated by commas. Your request can contain up to 15 total recipients between the `to` and `bcc` keys.","example":"bcc@example.com"},"fake_bcc":{"type":"boolean","description":"If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"},"reply_to":{"type":"string","description":"The address that recipients can reply to, if different from the `from` address.","example":"replyto@example.com"},"preheader":{"type":"string","description":"Also known as \"preview text\", this is the block block of text that users see next to, or underneath, the subject line in their inbox."},"body_plain":{"type":"string","description":"By default, we generate a plaintext version of your message body for each delivery. Use this key to override the default plain text body."},"attachments":{"type":"object","description":"A dictionary of attachments where the filename is the key and the value is the base64-encoded contents. The filename must include the extension (i.e. `name.csv`). The total size of all attachments must be less than 2 MB.","properties":{"":{"type":"string","format":"base64"}}},"headers":{"description":"An object containing headers, where the key is the header name and the value is the header value. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.","type":"object","additionalProperties":{"type":"string"},"example":{"X-Mailgun-Tag":"my-cool-tag"}},"disable_css_preprocessing":{"type":"boolean","description":"Set to `true` to disable CSS preprocessing. This setting overrides the CSS preprocessing setting on the `transactional_message_id` as set in the user interface. Transactional emails have CSS preprocessing enabled by default.","example":false,"default":false},"tracked":{"type":"boolean","description":"If true, Customer.io tracks opens and link clicks in your message.","default":true}}}],"example":{"from":"Support ","subject":"Your password reset request!","body":"Your temporary password is {{message_data.password_reset_token}}","to":"cool.person@example.com","identifiers":{"id":12345},"message_data":{"password_reset_token":"abcde-12345-fghij-d888","account_id":"123dj"},"headers":{"X-Mailgun-Tag":"my-cool-tag"},"bcc":"bcc@example.com","disable_message_retention":false,"send_to_unsubscribed":true,"tracked":true,"queue_draft":false,"disable_css_preprocessing":true}}]},"transactionalObject":{"description":"Contains information about a transactional message.","type":"object","properties":{"id":{"type":"integer","description":"The identifier Customer.io assigned to the transactional message","example":2},"name":{"type":"string","description":"The name you set for the transactional message.","example":"password reset"},"description":{"type":"string","description":"A description of the transactional message.","example":"sends a temporary password and lets the customer reset their password."},"send_to_unsubscribed":{"type":"boolean","description":"If true, people with an `unsubscribed` attribute set to `true` can trigger the message."},"link_tracking":{"type":"boolean","description":"If true, link tracking is enabled for this message."},"open_tracking":{"type":"boolean","description":"If true, open-tracking is enabled for this message."},"hide_message_body":{"type":"boolean","description":"If true, message contents are not retained in delivery history—you cannot recall the exact contents of the message."},"queue_drafts":{"type":"boolean","description":"If true, messages do not send automatically, and queue as drafts instead. You must send drafts through the *Deliveries & Drafts* page in the user interface."},"created_at":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated_at":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true}}},"contentObject":{"type":"object","properties":{"id":{"type":"integer","description":"The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.","readOnly":true},"newsletter_id":{"readOnly":true,"description":"The identifier for a newsletter.","type":"integer","example":10},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the variant, if it exists.","readOnly":true,"example":"newsletter variant A"},"layout":{"type":"string","description":"The layout used for the variant, if it exists.","example":"{{ content }}","readOnly":true},"body":{"type":"string","description":"The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.","example":"Hello from the API"},"body_amp":{"type":"string","description":"If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."},"language":{"type":"string","description":"The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.","example":"fr","readOnly":true},"type":{"description":"The type of message/action.","type":"string","enum":["email","webhook","twilio","slack","push"],"readOnly":true,"example":"email"},"from":{"type":"string","description":"The address that the message is from, relevant if the action `type` is `email`.","readOnly":true,"example":"sentFrom@example.com"},"from_id":{"type":"integer","description":"The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.","example":1},"reply_to":{"type":"string","description":"The address that receives replies for the message, if applicable.","readOnly":true,"example":"replyto@example.com"},"reply_to_id":{"type":"integer","description":"The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.","nullable":true,"example":38},"preprocessor":{"type":"string","description":"By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.","enum":["premailer"],"readOnly":true},"recipient":{"description":"The recipient address for an action.","type":"string","example":"{{customer.email}}"},"subject":{"type":"string","description":"The subject line for an `email` action.","example":"Did you get that thing I sent you?"},"bcc":{"readOnly":true,"description":"The blind-copy address(es) for this action.","type":"string"},"fake_bcc":{"readOnly":true,"type":"boolean","description":"If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"},"preheader_text":{"type":"string","description":"Also known as \"preview text\", this specifies the small block of text shown in an end-user's email inbox, next to, or underneath, the subject line."},"headers":{"description":"An object containing headers, where the key is the header name and the value is the header value. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.","type":"object","additionalProperties":{"type":"string"},"example":{"X-Mailgun-Tag":"my-cool-tag"}}}},"action_id":{"description":"The identifier for an action.","type":"integer","readOnly":true,"example":96,"nullable":true},"campaign_id":{"description":"The identifier for a campaign.","type":"integer","example":5},"message_id":{"description":"The identifier for a delivery—the instance of a message intended for an individual recipient.","type":"string","readOnly":true,"example":"dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek="},"message_template_id":{"description":"The identifier of the message template used to create a message.","type":"integer","readOnly":true,"deprecated":true},"recipient":{"description":"The recipient address for an action.","type":"string","example":"{{customer.email}}"},"recipient_not_templated":{"description":"The recipient address for an action.","type":"string","example":"test@example.com"},"subject":{"type":"string","description":"The subject line for an `email` action.","example":"Did you get that thing I sent you?"},"newsletter_id":{"description":"The identifier for a newsletter.","type":"integer","example":10},"content_id":{"description":"The identifier for a message in a newsletter. Newsletters can have multiple content IDs (for multi-language messages or A/B tests).","type":"integer","readOnly":true,"example":1},"messageType":{"description":"The type of message/action.","type":"string","enum":["email","webhook","twilio","slack","push"],"readOnly":true,"example":"email"},"from":{"type":"string","description":"The address that the message is from, relevant if the action `type` is `email`.","readOnly":true,"example":"sentFrom@example.com"},"from_id":{"type":"integer","description":"The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.","example":1},"reply_to":{"type":"string","description":"The address that receives replies for the message, if applicable.","readOnly":true,"example":"replyto@example.com"},"reply_to_settable":{"type":"string","description":"The address that receives replies for the message, if applicable.","example":"replyto@example.com"},"from_address":{"type":"string","format":"email","description":"The address you want to trigger messages from, overriding the `from` field in emails triggered by the event."},"reply_to_id":{"type":"integer","description":"The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.","nullable":true,"example":38},"preprocessor":{"type":"string","description":"By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.","enum":["premailer"],"readOnly":true},"bcc":{"readOnly":true,"description":"The blind-copy address(es) for this action.","type":"string"},"fake_bcc":{"readOnly":true,"type":"boolean","description":"If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"},"preheader_text":{"type":"string","description":"Also known as \"preview text\", this specifies the small block of text shown in an end-user's email inbox, next to, or underneath, the subject line."},"trigger_event_id":{"type":"string","description":"The ID of an event that triggered a campaign or action.","nullable":true},"body_amp":{"type":"string","description":"If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."},"language":{"type":"string","description":"The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.","example":"fr","readOnly":true},"messageObject":{"type":"object","description":"Describes an individual message delivery. The object contains keys for all possible parents of the message (`newsletter_id`, `broadcast_id`, etc) but only the parents of the delivery are populated. Other parent IDs are null.","properties":{"id":{"description":"The identifier for a delivery—the instance of a message intended for an individual recipient.","type":"string","readOnly":true,"example":"dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek="},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"message_template_id":{"description":"The identifier of the message template used to create a message.","type":"integer","readOnly":true,"deprecated":true},"customer_id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.","nullable":true,"example":"42"},"customer_identifiers":{"type":"object","description":"Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n","required":["email","id","cio_id"],"properties":{"email":{"type":"string","nullable":true,"format":"email","description":"A person's email address, if set.","example":"test@example.com"},"id":{"type":"string","nullable":true,"description":"A person's unique ID, if set. This is the same as the `customer_id` if present.","example":2},"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}},"recipient":{"description":"The recipient address for an action.","type":"string","example":"{{customer.email}}"},"subject":{"type":"string","description":"The subject line for an `email` action.","example":"Did you get that thing I sent you?"},"metrics":{"type":"object","description":"Metrics for an individual instance of a message; each item in the object represents the timestamp when a message achieved a particular metric. This object only contains metrics that have been recorded.","properties":{"bounced":{"type":"integer","description":"The timestamp when the message `bounced`."},"clicked":{"type":"integer","description":"The timestamp when the message was `clicked`."},"human_clicked":{"type":"integer","description":"The number of `clicked` messages excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."},"prefetch_clicked":{"type":"integer","description":"The number of `clicked` messages attributed to machines. This metric is reliable starting April 20, 2025."},"converted":{"type":"integer","description":"The timestamp when the message was `converted`."},"created":{"type":"integer","description":"The timestamp when the message was `created`."},"delivered":{"type":"integer","description":"The timestamp when the message was `delivered`."},"drafted":{"type":"integer","description":"The timestamp when the message was `drafted`."},"dropped":{"type":"integer","description":"The timestamp when the message was `dropped`."},"failed":{"type":"integer","description":"The timestamp when the message `failed`."},"opened":{"type":"integer","description":"The timestamp when the message was `opened`."},"human_opened":{"type":"integer","description":"The number of `opened` messages excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."},"prefetch_opened":{"type":"integer","description":"The number of `opened` messages attributed to machines. This metric is reliable starting March 20, 2025."},"sent":{"type":"integer","description":"The timestamp when the message was `sent`."},"spammed":{"type":"integer","description":"The timestamp when the message was marked as spam."},"undeliverable":{"type":"integer","description":"The timestamp when the message became `undeliverable`."},"unsubscribed":{"type":"integer","description":"The timestamp when a person unsubscribed based on this message."}}},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"failure_message":{"type":"string","description":"Explains why a message failed, if applicable.","nullable":true},"campaign_id":{"nullable":true,"description":"The identifier for a campaign.","type":"integer","example":5},"action_id":{"description":"The identifier for an action.","type":"integer","readOnly":true,"example":96,"nullable":true},"parent_action_id":{"type":"integer","description":"The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).","example":1,"readOnly":true},"newsletter_id":{"nullable":true,"description":"The identifier for a newsletter.","type":"integer","example":10},"content_id":{"description":"The identifier for a message in a newsletter. Newsletters can have multiple content IDs (for multi-language messages or A/B tests).","type":"integer","readOnly":true,"example":1},"broadcast_id":{"nullable":true,"type":"integer","description":"The identifier for a broadcast.","example":2},"trigger_event_id":{"type":"string","description":"The ID of an event that triggered a campaign or action.","nullable":true},"type":{"description":"The type of message/action.","type":"string","enum":["email","webhook","twilio","slack","push"],"readOnly":true,"example":"email"},"forgotten":{"type":"boolean","description":"If true message contents are not retained by Customer.io."}},"example":{"id":"ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=","deduplicate_id":"ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=:1619137768","msg_template_id":43,"action_id":215,"parent_action_id":null,"customer_id":null,"recipient":"person@example.com","subject":"Did you get that thing I sent you?","metrics":{"delivered":1619137768,"sent":1619137768},"created":1619137767,"failure_message":null,"newsletter_id":null,"content_id":null,"campaign_id":23,"broadcast_id":null,"trigger_event_id":null,"type":"email","forgotten":false}},"broadcastActionObject":{"oneOf":[{"title":"Email / message","type":"object","properties":{"id":{"description":"The identifier for an action.","type":"integer","readOnly":true,"example":96,"nullable":true},"broadcast_id":{"readOnly":true,"type":"integer","description":"The identifier for a broadcast.","example":2},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the action, if it exists.","readOnly":true,"example":"Opening Message"},"layout":{"type":"string","description":"The layout used for the action, if it exists.","readOnly":true},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"body":{"type":"string","description":"The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."},"type":{"type":"string","description":"The type of action.","enum":["email","in_app","push","twilio","slack"],"readOnly":true},"sending_state":{"type":"string","enum":["automatic","draft","off"],"description":"Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."},"language":{"type":"string","description":"The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.","example":"fr","readOnly":true},"from":{"type":"string","description":"The address that the message is from, relevant if the action `type` is `email`.","readOnly":true,"example":"sentFrom@example.com"},"from_id":{"type":"integer","description":"The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.","example":1},"reply_to":{"type":"string","description":"The address that receives replies for the message, if applicable.","readOnly":true,"example":"replyto@example.com"},"reply_to_id":{"type":"integer","description":"The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.","nullable":true,"example":38},"preprocessor":{"type":"string","description":"By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.","enum":["premailer"],"readOnly":true},"recipient":{"description":"The recipient address for an action.","type":"string","example":"{{customer.email}}"},"subject":{"type":"string","description":"The subject line for an `email` action.","example":"Did you get that thing I sent you?"},"bcc":{"readOnly":true,"description":"The blind-copy address(es) for this action.","type":"string"},"fake_bcc":{"readOnly":true,"type":"boolean","description":"If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"},"preheader_text":{"type":"string","description":"Also known as \"preview text\", this specifies the small block of text shown in an end-user's email inbox, next to, or underneath, the subject line."},"headers":{"description":"An object containing headers, where the key is the header name and the value is the header value. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.","type":"object","additionalProperties":{"type":"string"},"example":{"X-Mailgun-Tag":"my-cool-tag"}},"body_amp":{"type":"string","description":"If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."}}},{"title":"SMS / MMS","allOf":[{"type":"object","properties":{"id":{"description":"The identifier for an action.","type":"integer","readOnly":true,"example":96,"nullable":true},"broadcast_id":{"type":"integer","description":"The identifier for a broadcast.","example":2}}},{"type":"object","properties":{"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the action.","readOnly":true,"example":"Opening Message"},"layout":{"type":"string","description":"The layout used for the action, if it exists.","readOnly":true},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"body":{"type":"string","description":"The body of your SMS message."},"language":{"type":"string","description":"The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.","example":"fr","readOnly":true},"type":{"type":"string","description":"For SMS/MMS messages, the `type` is always `twilio`.","enum":["twilio"],"readOnly":true},"image_url":{"type":"string","description":"The URL of the image in your SMS (MMS) message."},"sending_state":{"type":"string","enum":["automatic","draft","off"],"description":"Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."},"recipient":{"type":"string","description":"The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.","example":""}}}]},{"title":"Webhook","type":"object","properties":{"id":{"description":"The identifier for an action.","type":"integer","readOnly":true,"example":96,"nullable":true},"broadcast_id":{"type":"integer","description":"The identifier for a broadcast.","example":2},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the action, if it exists.","readOnly":true,"example":"Opening Message"},"layout":{"type":"string","description":"The layout used for the action, if it exists.","readOnly":true},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"body":{"type":"string","description":"The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."},"type":{"type":"string","description":"The type of action.","enum":["webhook"],"readOnly":true},"url":{"type":"string","description":"The URL to send a webhook to, applies to `webhook` type actions.","example":"https://my.example.com/webhook"},"headers":{"description":"An object containing headers, where the key is the header name and the value is the header value. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.","type":"object","additionalProperties":{"type":"string"},"example":{"X-Mailgun-Tag":"my-cool-tag"}},"method":{"description":"The HTTP method for your webhook.","type":"string","enum":["get","post","put","delete","patch"],"example":"post"},"sending_state":{"type":"string","enum":["automatic","draft","off"],"description":"Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."}}}]},"transactionalActionObject":{"type":"object","properties":{"id":{"description":"The identifier for an action.","type":"integer","readOnly":true,"example":96,"nullable":true},"name":{"type":"string","description":"The name of the transactional message.","readOnly":true,"example":"Receipt"},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"body":{"type":"string","description":"The body of the transactional message. You cannot modify the body if you created it with our drag-and-drop editor."},"language":{"type":"string","description":"The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.","example":"fr","readOnly":true},"type":{"type":"string","description":"The type of message.","enum":["email","push"],"readOnly":true},"from":{"type":"string","description":"The address that the message is from, relevant if the action `type` is `email`.","readOnly":true,"example":"sentFrom@example.com"},"from_id":{"type":"integer","description":"The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.","example":1},"reply_to":{"type":"string","description":"The address that receives replies for the message, if applicable.","readOnly":true,"example":"replyto@example.com"},"reply_to_id":{"type":"integer","description":"The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.","nullable":true,"example":38},"preprocessor":{"type":"string","description":"By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.","enum":["premailer"],"readOnly":true},"recipient":{"readOnly":true,"description":"The recipient address for an action.","type":"string","example":"{{customer.email}}"},"subject":{"type":"string","description":"The subject line for an `email` action.","example":"Did you get that thing I sent you?"},"bcc":{"readOnly":true,"description":"The blind-copy address(es) for this action.","type":"string"},"fake_bcc":{"readOnly":true,"type":"boolean","description":"If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"},"preheader_text":{"type":"string","description":"Also known as \"preview text\", this specifies the small block of text shown in an end-user's email inbox, next to, or underneath, the subject line."},"headers":{"description":"An object containing headers, where the key is the header name and the value is the header value. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.","type":"object","additionalProperties":{"type":"string"},"example":{"X-Mailgun-Tag":"my-cool-tag"}},"body_amp":{"type":"string","description":"If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."}}},"parent_action_id":{"type":"integer","description":"The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).","example":1,"readOnly":true},"smsActionObject":{"type":"object","properties":{"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the action.","readOnly":true,"example":"Opening Message"},"layout":{"type":"string","description":"The layout used for the action, if it exists.","readOnly":true},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"body":{"type":"string","description":"The body of your SMS message."},"language":{"type":"string","description":"The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.","example":"fr","readOnly":true},"type":{"type":"string","description":"For SMS/MMS messages, the `type` is always `twilio`.","enum":["twilio"],"readOnly":true},"image_url":{"type":"string","description":"The URL of the image in your SMS (MMS) message."},"sending_state":{"type":"string","enum":["automatic","draft","off"],"description":"Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."},"recipient":{"type":"string","description":"The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.","example":""}}},"actionObject":{"oneOf":[{"title":"Email / message","type":"object","properties":{"id":{"description":"The identifier for an action.","type":"integer","readOnly":true,"example":96,"nullable":true},"campaign_id":{"readOnly":true,"description":"The identifier for a campaign.","type":"integer","example":5},"parent_action_id":{"type":"integer","description":"The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).","example":1,"readOnly":true},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the action, if it exists.","readOnly":true,"example":"Opening Message"},"layout":{"type":"string","description":"The layout used for the action, if it exists.","readOnly":true},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"body":{"type":"string","description":"The body of the action. For emails, this is the HTML-body of a message. You cannot modify the body if you created it with our drag-and-drop editor."},"body_amp":{"type":"string","description":"If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."},"language":{"type":"string","description":"The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.","example":"fr","readOnly":true},"type":{"type":"string","description":"The type of action.","enum":["email","in_app","push","twilio","slack"],"readOnly":true},"sending_state":{"type":"string","enum":["automatic","draft","off"],"description":"Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."},"from":{"type":"string","description":"The address that the message is from, relevant if the action `type` is `email`.","readOnly":true,"example":"sentFrom@example.com"},"from_id":{"type":"integer","description":"The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.","example":1},"reply_to":{"type":"string","description":"The address that receives replies for the message, if applicable.","readOnly":true,"example":"replyto@example.com"},"reply_to_id":{"type":"integer","description":"The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.","nullable":true,"example":38},"preprocessor":{"type":"string","description":"By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.","enum":["premailer"],"readOnly":true},"recipient":{"description":"The recipient address for an action.","type":"string","example":"{{customer.email}}"},"subject":{"type":"string","description":"The subject line for an `email` action.","example":"Did you get that thing I sent you?"},"bcc":{"readOnly":true,"description":"The blind-copy address(es) for this action.","type":"string"},"fake_bcc":{"readOnly":true,"type":"boolean","description":"If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"},"preheader_text":{"type":"string","description":"Also known as \"preview text\", this specifies the small block of text shown in an end-user's email inbox, next to, or underneath, the subject line."},"headers":{"description":"An object containing headers, where the key is the header name and the value is the header value. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.","type":"object","additionalProperties":{"type":"string"},"example":{"X-Mailgun-Tag":"my-cool-tag"}}}},{"title":"SMS/MMS","allOf":[{"type":"object","properties":{"id":{"description":"The identifier for an action.","type":"integer","readOnly":true,"example":96,"nullable":true},"campaign_id":{"readOnly":true,"description":"The identifier for a campaign.","type":"integer","example":5},"parent_action_id":{"type":"integer","description":"The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).","example":1,"readOnly":true}}},{"type":"object","properties":{"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the action.","readOnly":true,"example":"Opening Message"},"layout":{"type":"string","description":"The layout used for the action, if it exists.","readOnly":true},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"body":{"type":"string","description":"The body of your SMS message."},"language":{"type":"string","description":"The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.","example":"fr","readOnly":true},"type":{"type":"string","description":"For SMS/MMS messages, the `type` is always `twilio`.","enum":["twilio"],"readOnly":true},"image_url":{"type":"string","description":"The URL of the image in your SMS (MMS) message."},"sending_state":{"type":"string","enum":["automatic","draft","off"],"description":"Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."},"recipient":{"type":"string","description":"The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.","example":""}}}]},{"title":"Webhook","type":"object","properties":{"id":{"description":"The identifier for an action.","type":"integer","readOnly":true,"example":96,"nullable":true},"campaign_id":{"description":"The identifier for a campaign.","type":"integer","example":5},"parent_action_id":{"type":"integer","description":"The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).","example":1,"readOnly":true},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the action, if it exists.","readOnly":true,"example":"Set attribute"},"layout":{"type":"string","description":"The layout used for the action, if it exists.","readOnly":true},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"body":{"type":"string","description":"The payload for your webhook.","example":"{\"attribute\":\"cool-webhook\"}"},"type":{"type":"string","description":"The type of action.","enum":["webhook"],"readOnly":true},"url":{"type":"string","description":"The URL to send a webhook to, applies to `webhook` type actions.","example":"https://my.example.com/webhook"},"headers":{"description":"An object containing headers, where the key is the header name and the value is the header value. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.","type":"object","additionalProperties":{"type":"string"},"example":{"X-Mailgun-Tag":"my-cool-tag"}},"method":{"description":"The HTTP method for your webhook.","type":"string","enum":["get","post","put","delete","patch"],"example":"post"},"sending_state":{"type":"string","enum":["automatic","draft","off"],"description":"Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."}}}]},"sending_state":{"type":"string","enum":["automatic","draft","off"],"description":"Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."},"periodWebhookMetricsDeprecated":{"type":"object","description":"Returns metrics in accordance with the `period` you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `period` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.","properties":{"2xx":{"type":"array","items":{"type":"integer"},"description":"2xx responses by period, representative of webhook performance."},"3xx":{"type":"array","items":{"type":"integer"},"description":"3xx responses by period, representative of webhook performance."},"4xx":{"type":"array","items":{"type":"integer"},"description":"4xx responses by period, representative of webhook performance."},"5xx":{"type":"array","items":{"type":"integer"},"description":"5xx responses by period, representative of webhook performance."}}},"periodWebhookMetrics":{"type":"object","description":"Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.","properties":{"2xx":{"type":"array","items":{"type":"integer"},"description":"2xx responses by period, representative of webhook performance."},"3xx":{"type":"array","items":{"type":"integer"},"description":"3xx responses by period, representative of webhook performance."},"4xx":{"type":"array","items":{"type":"integer"},"description":"4xx responses by period, representative of webhook performance."},"5xx":{"type":"array","items":{"type":"integer"},"description":"5xx responses by period, representative of webhook performance."}}},"periodMessageMetricsDeprecated":{"description":"Returns metrics in accordance with the `period` you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `period` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.","type":"object","properties":{"attempted":{"type":"array","items":{"type":"integer"},"description":"The number of `attempted` messages."},"bounced":{"type":"array","items":{"type":"integer"},"description":"The number of `bounced` messages."},"clicked":{"type":"array","items":{"type":"integer"},"description":"The number of `clicked` messages."},"converted":{"type":"array","items":{"type":"integer"},"description":"The number of `converted` messages."},"created":{"type":"array","items":{"type":"integer"},"description":"The number of `created` messages."},"deferred":{"type":"array","items":{"type":"integer"},"description":"The number of `deferred` messages."},"delivered":{"type":"array","items":{"type":"integer"},"description":"The number of `delivered` messages."},"drafted":{"type":"array","items":{"type":"integer"},"description":"The number of `drafted` messages."},"failed":{"type":"array","items":{"type":"integer"},"description":"The number of `failed` messages."},"opened":{"type":"array","items":{"type":"integer"},"description":"The number of `opened` messages."},"sent":{"type":"array","items":{"type":"integer"},"description":"The number of sent messages."},"spammed":{"type":"array","items":{"type":"integer"},"description":"The number of spam complaints."},"suppressed":{"type":"array","items":{"type":"integer"},"description":"The number of `suppressed` messages."},"undeliverable":{"type":"array","items":{"type":"integer"},"description":"The number of `undeliverable` messages."},"topic_unsubscribed":{"type":"array","items":{"type":"integer"},"description":"The number of topic unsubscribes in a given period."},"unsubscribed":{"type":"array","items":{"type":"integer"},"description":"The number of unsubscribes attributed to the campaign or message."}}},"periodMessageMetrics":{"description":"Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.","type":"object","properties":{"attempted":{"type":"array","items":{"type":"integer"},"description":"The number of `attempted` messages."},"bounced":{"type":"array","items":{"type":"integer"},"description":"The number of `bounced` messages."},"clicked":{"type":"array","items":{"type":"integer"},"description":"The number of `clicked` messages."},"human_clicked":{"type":"array","items":{"type":"integer"},"description":"The number of `clicked` emails excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."},"prefetch_clicked":{"type":"array","items":{"type":"integer"},"description":"The number of `clicked` emails attributed to machines. This metric is reliable starting April 20, 2025."},"converted":{"type":"array","items":{"type":"integer"},"description":"The number of `converted` messages."},"created":{"type":"array","items":{"type":"integer"},"description":"The number of `created` messages."},"deferred":{"type":"array","items":{"type":"integer"},"description":"The number of `deferred` messages."},"delivered":{"type":"array","items":{"type":"integer"},"description":"The number of `delivered` messages."},"drafted":{"type":"array","items":{"type":"integer"},"description":"The number of `drafted` messages."},"failed":{"type":"array","items":{"type":"integer"},"description":"The number of `failed` messages."},"opened":{"type":"array","items":{"type":"integer"},"description":"The number of `opened` messages."},"human_opened":{"type":"array","items":{"type":"integer"},"description":"The number of `opened` emails excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."},"prefetch_opened":{"type":"array","items":{"type":"integer"},"description":"The number of `opened` emails attributed to machines. This metric is reliable starting March 20, 2025."},"sent":{"type":"array","items":{"type":"integer"},"description":"The number of sent messages."},"spammed":{"type":"array","items":{"type":"integer"},"description":"The number of spam complaints."},"suppressed":{"type":"array","items":{"type":"integer"},"description":"The number of `suppressed` messages."},"undeliverable":{"type":"array","items":{"type":"integer"},"description":"The number of `undeliverable` messages."},"topic_unsubscribed":{"type":"array","items":{"type":"integer"},"description":"The number of topic unsubscribes in a given period."},"unsubscribed":{"type":"array","items":{"type":"integer"},"description":"The number of unsubscribes attributed to the campaign or message."}}},"webhookMetrics":{"type":"object","properties":{"2xx":{"type":"integer","description":"The number of 2xx responses."},"3xx":{"type":"integer","description":"The number of 3xx responses."},"4xx":{"type":"integer","description":"The number of 4xx responses."},"5xx":{"type":"integer","description":"The number of 5xx responses."}}},"messageMetrics":{"type":"object","description":"Metrics for an individual instance of a message; each item in the object represents the timestamp when a message achieved a particular metric. This object only contains metrics that have been recorded.","properties":{"bounced":{"type":"integer","description":"The timestamp when the message `bounced`."},"clicked":{"type":"integer","description":"The timestamp when the message was `clicked`."},"human_clicked":{"type":"integer","description":"The number of `clicked` messages excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."},"prefetch_clicked":{"type":"integer","description":"The number of `clicked` messages attributed to machines. This metric is reliable starting April 20, 2025."},"converted":{"type":"integer","description":"The timestamp when the message was `converted`."},"created":{"type":"integer","description":"The timestamp when the message was `created`."},"delivered":{"type":"integer","description":"The timestamp when the message was `delivered`."},"drafted":{"type":"integer","description":"The timestamp when the message was `drafted`."},"dropped":{"type":"integer","description":"The timestamp when the message was `dropped`."},"failed":{"type":"integer","description":"The timestamp when the message `failed`."},"opened":{"type":"integer","description":"The timestamp when the message was `opened`."},"human_opened":{"type":"integer","description":"The number of `opened` messages excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."},"prefetch_opened":{"type":"integer","description":"The number of `opened` messages attributed to machines. This metric is reliable starting March 20, 2025."},"sent":{"type":"integer","description":"The timestamp when the message was `sent`."},"spammed":{"type":"integer","description":"The timestamp when the message was marked as spam."},"undeliverable":{"type":"integer","description":"The timestamp when the message became `undeliverable`."},"unsubscribed":{"type":"integer","description":"The timestamp when a person unsubscribed based on this message."}}},"messageTotalMetrics":{"type":"object","description":"Total metrics over the lifespan of the requested item.","properties":{"bounced":{"type":"integer","description":"The number of `bounced` messages."},"clicked":{"type":"integer","description":"The number of `clicked` messages."},"converted":{"type":"integer","description":"The number of `converted` messages."},"created":{"type":"integer","description":"The number of `created` messages."},"delivered":{"type":"integer","description":"The number of `delivered` messages."},"drafted":{"type":"integer","description":"The number of `drafted` messages."},"dropped":{"type":"integer","description":"The number of `dropped` messages."},"failed":{"type":"integer","description":"The number of `failed` messages."},"opened":{"type":"integer","description":"The number of `opened` messages"},"sent":{"type":"integer","description":"The number of `sent` messages"},"spammed":{"type":"integer","description":"The number of messages marked as spam."},"undeliverable":{"type":"integer","description":"The number of `undeliverable` messages."},"unsubscribed":{"type":"integer","description":"The number of unsubscribes attributed to messages."}}},"linkMetrics":{"type":"object","properties":{"link":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the link.","example":1234},"href":{"type":"string","description":"The link destination—a URL, mailto, etc.","example":"https://docs.customer.io"}}},"metric":{"type":"object","description":"Contains metrics for the link.","properties":{"series":{"type":"object","properties":{"clicked":{"type":"array","description":"An array of results from oldest to newest, where each result indicates a period.","items":{"type":"integer"},"example":[1,3,5,7]}}}}}}},"campaignObject":{"type":"object","oneOf":[{"title":"Segment","type":"object","properties":{"id":{"description":"The identifier for a campaign.","type":"integer","example":5},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the campaign.","readOnly":true},"type":{"type":"string","deprecated":true,"description":"The type of campaign trigger. **Sunsetting on March 30, 2025**","enum":["segment"]},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"active":{"type":"boolean","description":"If true, the campaign is active and can still send messages."},"state":{"type":"string","description":"The status of the campaign.","enum":["running","draft","stopped"]},"actions":{"type":"array","description":"An array of actions contained within the campaign.","items":{"type":"object","properties":{"type":{"type":"string","description":"The action type.","example":"email"},"id":{"type":"integer","description":"The identifier for the action.","example":259}}}},"first_started":{"type":"integer","format":"unix timestamp","description":"The date and time when you first started the campaign and it first became eligible to be triggered.","example":1552341937},"tags":{"type":"array","description":"An array of tags you set on this campaign.","items":{"type":"string"},"example":["new","welcome"]},"trigger_segment_ids":{"description":"A list of segments used in the campaign trigger, returned if the campaign trigger included one or more segment conditions.","type":"array","items":{"type":"integer"},"example":[90]},"filter_segment_ids":{"description":"A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.","type":"array","items":{"type":"integer"},"example":[21,42]},"msg_templates":{"type":"array","deprecated":true,"description":"Indicates the message templates used in this campaign.","items":{"type":"object","properties":{"type":{"type":"string","description":"The message type the template represents.","enum":["email","sms","push","slack"]},"id":{"type":"integer","description":"The identifier for the template."}}}}}},{"title":"Event","type":"object","properties":{"id":{"description":"The identifier for a campaign.","type":"integer","example":5},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the campaign.","readOnly":true},"type":{"type":"string","deprecated":true,"description":"The type of campaign trigger. **Sunsetting on March 30, 2025**","enum":["event"]},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"active":{"type":"boolean","description":"If true, the campaign is active and can still send messages."},"state":{"type":"string","description":"The status of the campaign.","enum":["running","draft","stopped"]},"actions":{"type":"array","description":"An array of actions contained within the campaign.","items":{"type":"object","properties":{"type":{"type":"string","description":"The action type.","example":"email"},"id":{"type":"integer","description":"The identifier for the action.","example":259}}}},"first_started":{"type":"integer","format":"unix timestamp","description":"The date and time when you first started the campaign and it first became eligible to be triggered.","example":1552341937},"tags":{"type":"array","description":"An array of tags you set on this campaign.","items":{"type":"string"},"example":["new","welcome"]},"filter_segment_ids":{"description":"A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.","type":"array","items":{"type":"integer"},"example":[21,42]},"event_name":{"description":"The name of the event. How you reference the event in campaigns or segments.","type":"string"}}},{"title":"Form","type":"object","properties":{"id":{"description":"The identifier for a campaign.","type":"integer","example":5},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the campaign.","readOnly":true},"type":{"type":"string","deprecated":true,"description":"The type of campaign trigger. **Sunsetting on March 30, 2025**","enum":["form"]},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"active":{"type":"boolean","description":"If true, the campaign is active and can still send messages."},"state":{"type":"string","description":"The status of the campaign.","enum":["running","draft","stopped"]},"actions":{"type":"array","description":"An array of actions contained within the campaign.","items":{"type":"object","properties":{"type":{"type":"string","description":"The action type.","example":"email"},"id":{"type":"integer","description":"The identifier for the action.","example":259}}}},"first_started":{"type":"integer","format":"unix timestamp","description":"The date and time when you first started the campaign and it first became eligible to be triggered.","example":1552341937},"tags":{"type":"array","description":"An array of tags you set on this campaign.","items":{"type":"string"},"example":["new","welcome"]},"filter_segment_ids":{"description":"A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.","type":"array","items":{"type":"integer"},"example":[21,42]}}},{"title":"Date","type":"object","properties":{"id":{"description":"The identifier for a campaign.","type":"integer","example":5},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the campaign.","readOnly":true},"type":{"type":"string","deprecated":true,"description":"The type of campaign trigger. **Sunsetting on March 30, 2025**","enum":["date"]},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"active":{"type":"boolean","description":"If true, the campaign is active and can still send messages."},"state":{"type":"string","description":"The status of the campaign.","enum":["running","draft","stopped"]},"actions":{"type":"array","description":"An array of actions contained within the campaign.","items":{"type":"object","properties":{"type":{"type":"string","description":"The action type.","example":"email"},"id":{"type":"integer","description":"The identifier for the action.","example":259}}}},"first_started":{"type":"integer","format":"unix timestamp","description":"The date and time when you first started the campaign and it first became eligible to be triggered.","example":1552341937},"tags":{"type":"array","description":"An array of tags you set on this campaign.","items":{"type":"string"},"example":["new","welcome"]},"filter_segment_ids":{"description":"A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.","type":"array","items":{"type":"integer"},"example":[21,42]},"frequency":{"description":"How often a person will receive this campaign based on the date specified in the campaign trigger.","type":"string","enum":["once","monthly","yearly"]},"date_attribute":{"description":"The attribute on people's profiles you use to configure the date of the campaign trigger.","type":"string"},"timezone":{"description":"The timezone you set to configure the date of the campaign trigger.","type":"string","example":"America/Chicago"},"use_customer_timezone":{"description":"If you chose \"the user's timezone\" while configuring the date of the campaign trigger, this is `true`. Otherwise, you set a specific timezone so it's `false`.","type":"boolean"},"start_hour":{"description":"The hour you set the campaign to trigger. Follows the 24-hour clock.","type":"integer"},"start_minutes":{"description":"The minutes you set the campaign to trigger. Follows the 24-hour clock.","type":"integer"}}},{"title":"Relationship","type":"object","properties":{"id":{"description":"The identifier for a campaign.","type":"integer","example":5},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the campaign.","readOnly":true},"type":{"type":"string","deprecated":true,"description":"The type of campaign trigger. **Sunsetting on March 30, 2025**","enum":["relationship"]},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"active":{"type":"boolean","description":"If true, the campaign is active and can still send messages."},"state":{"type":"string","description":"The status of the campaign.","enum":["running","draft","stopped"]},"actions":{"type":"array","description":"An array of actions contained within the campaign.","items":{"type":"object","properties":{"type":{"type":"string","description":"The action type.","example":"email"},"id":{"type":"integer","description":"The identifier for the action.","example":259}}}},"first_started":{"type":"integer","format":"unix timestamp","description":"The date and time when you first started the campaign and it first became eligible to be triggered.","example":1552341937},"tags":{"type":"array","description":"An array of tags you set on this campaign.","items":{"type":"string"},"example":["new","welcome"]},"filter_segment_ids":{"description":"A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.","type":"array","items":{"type":"integer"},"example":[21,42]},"object_type_id":{"description":"The the object type ID of the trigger.","type":"integer"},"filter_object_attributes":{"description":"A list of object attributes used in the campaign filter, returned if the campaign audience was filtered on one or more object attributes.","type":"string","example":"{\"and\":[{\"object_attribute\":{\"type_id\":1,\"field\":\"name\",\"operator\":\"eq\",\"value\":\"sfa\"}},{\"object_attribute\":{\"type_id\":1,\"field\":\"renewal_date\",\"operator\":\"eq\",\"value\":\"sdfs\"}}]}"},"filter_relationship_attributes":{"description":"A list of relationship attributes used in the campaign filter, returned if the campaign audience was filtered on one or more relationship attributes.","type":"string","example":"{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"email\",\"operator\":\"eq\",\"value\":\"dscs@test.com\"}},{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"false\"}}]}"},"audience":{"description":"Defines the people who will start a journey in your campaign.","type":"object","properties":{"type":{"description":"The type of audience selected. \"Person added to object\" is `0`. \"Every person in the object\" is `1`. \"Certain people in the object\" is also `1`. \"Certain people\" will always have one or more audience filters (see below). \"Every person\" will never have an audience filter.","type":"integer","minimum":0,"maximum":1},"person_filters":{"description":"Returns the profile attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".","type":"object","example":"{\"and\":[{\"attribute\":{\"field\":\"title\",\"operator\":\"eq\",\"value\":\"asdca\"}}]}"},"relationship_filters":{"description":"Returns the relationship attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".","type":"object","example":"{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"asd\"}}]}"}}},"relationship_attribute_triggers":{"description":"A list of relationship attributes used to trigger the campaign.","type":"object","example":"{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"true\"}}]}"}}},{"title":"Object","type":"object","properties":{"id":{"description":"The identifier for a campaign.","type":"integer","example":5},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the campaign.","readOnly":true},"type":{"type":"string","deprecated":true,"description":"The type of campaign trigger. **Sunsetting on March 30, 2025**","enum":["object"]},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"active":{"type":"boolean","description":"If true, the campaign is active and can still send messages."},"state":{"type":"string","description":"The status of the campaign.","enum":["running","draft","stopped"]},"actions":{"type":"array","description":"An array of actions contained within the campaign.","items":{"type":"object","properties":{"type":{"type":"string","description":"The action type.","example":"email"},"id":{"type":"integer","description":"The identifier for the action.","example":259}}}},"first_started":{"type":"integer","format":"unix timestamp","description":"The date and time when you first started the campaign and it first became eligible to be triggered.","example":1552341937},"tags":{"type":"array","description":"An array of tags you set on this campaign.","items":{"type":"string"},"example":["new","welcome"]},"filter_segment_ids":{"description":"A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.","type":"array","items":{"type":"integer"},"example":[21,42]},"object_type_id":{"description":"The the object type ID of the trigger.","type":"integer"},"filter_object_attributes":{"description":"A list of object attributes used in the campaign filter, returned if the campaign audience was filtered on one or more object attributes.","type":"string","example":"{\"and\":[{\"object_attribute\":{\"type_id\":1,\"field\":\"name\",\"operator\":\"eq\",\"value\":\"sfa\"}},{\"object_attribute\":{\"type_id\":1,\"field\":\"renewal_date\",\"operator\":\"eq\",\"value\":\"sdfs\"}}]}"},"filter_relationship_attributes":{"description":"A list of relationship attributes used in the campaign filter, returned if the campaign audience was filtered on one or more relationship attributes.","type":"string","example":"{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"email\",\"operator\":\"eq\",\"value\":\"dscs@test.com\"}},{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"false\"}}]}"},"audience":{"description":"Defines the people who will start a journey in your campaign.","type":"object","properties":{"type":{"description":"The type of audience selected. \"Every person in the object\" is `1`. \"Certain people in the object\" is also `1`. \"Certain people\" will always have one or more audience filters (see below). \"Every person\" will never have an audience filter.","type":"integer","minimum":0,"maximum":1},"person_filters":{"description":"Returns the profile attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".","type":"object","example":"{\"and\":[{\"attribute\":{\"field\":\"title\",\"operator\":\"eq\",\"value\":\"asdca\"}}]}"},"relationship_filters":{"description":"Returns the relationship attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".","type":"object","example":"{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"asd\"}}]}"}}},"object_attribute_triggers":{"description":"A list of object attributes used to trigger the campaign.","type":"object","example":"{\"and\":[{\"object_attribute\":{\"type_id\":1,\"field\":\"name\",\"operator\":\"eq\",\"value\":\"sfa\"}},{\"object_attribute\":{\"type_id\":1,\"field\":\"renewal_date\",\"operator\":\"eq\",\"value\":\"sdfs\"}}]}"}}},{"title":"Webhook","type":"object","properties":{"id":{"description":"The identifier for a campaign.","type":"integer","example":5},"deduplicate_id":{"type":"string","readOnly":true,"description":"An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.","example":"15:1492548073"},"name":{"type":"string","description":"The name of the campaign.","readOnly":true},"type":{"type":"string","deprecated":true,"description":"The type of campaign trigger. **Sunsetting on March 30, 2025**","enum":["webhook"]},"created":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was created.","example":1552341937,"readOnly":true},"updated":{"type":"integer","format":"unix timestamp","description":"The date time when the referenced ID was last updated.","example":1552341937,"readOnly":true},"active":{"type":"boolean","description":"If true, the campaign is active and can still send messages."},"state":{"type":"string","description":"The status of the campaign.","enum":["running","draft","stopped"]},"actions":{"type":"array","description":"An array of actions contained within the campaign.","items":{"type":"object","properties":{"type":{"type":"string","description":"The action type.","example":"email"},"id":{"type":"integer","description":"The identifier for the action.","example":259}}}},"first_started":{"type":"integer","format":"unix timestamp","description":"The date and time when you first started the campaign and it first became eligible to be triggered.","example":1552341937},"tags":{"type":"array","description":"An array of tags you set on this campaign.","items":{"type":"string"},"example":["new","welcome"]},"webhook_id":{"description":"The ID of the webhook trigger generated by Customer.io.","type":"integer"}}}]},"esp_suppression":{"type":"object","properties":{"category":{"type":"string","description":"The reason the addresses are suppressed.","enum":["bounces","spam"],"example":"bounces"},"suppressions":{"type":"array","description":"The addresses suppressed in this category.","items":{"type":"object","properties":{"created":{"type":"integer","format":"Unix timestamp","description":"The timestamp (in seconds), when the ESP suppressed the address.","example":1650895738},"email":{"type":"string","description":"The email address that the ESP suppressed.","example":"bounced.person@example.com"},"reason":{"type":"string","description":"The reason for the suppression, as [recorded by Mailgun](https://documentation.mailgun.com/en/latest/api-suppressions.html).","example":"Uploaded manually via api.customer.io"},"status":{"type":"string","description":"The status code for the suppression, as [recorded by mailgun](https://documentation.mailgun.com/en/latest/api-suppressions.html). This is normally `550`.","example":"550"}}}}}},"pushTitle":{"type":"string","description":"The title of your push notification."},"pushBody":{"type":"string","description":"The body of your push notification."},"pushLink":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."},"pushImage":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."},"customAndroidProps":{"type":"object","description":"Properties supported specifically by Android on FCM.","properties":{"icon":{"type":"string","description":"Sets the notification icon to `myicon` for drawable resource `myicon`. If you don't send this key, FCM displays the launcher icon from your app manifest."},"sound":{"type":"string","description":"The sound that plays when the device receives the notification. Supports `\"default\"` or the filename of a sound resource bundled in your app. Sound files must reside in `/res/raw/`."},"tag":{"type":"string","description":"Identifier to replace existing notifications in the notification drawer. If empty, each request creates a new notification.\n\nIf you specify a tag, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. \n"},"color":{"type":"string","description":"The notification's icon color in `#rrggbb` format."},"click_action":{"type":"string","description":"The action that occurs when a user taps on the notification. Launches an activity with a matching intent filter when a person taps the notification."},"body_loc_key":{"type":"string","description":"The key to the body string in the app's string resources that you want to use to localize the body text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"body_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `body_loc_key` to localize the body text to the user's current localization. See Formatting and Styling for more information."},"title_loc_key":{"type":"string","description":"The key to the title string in the app's string resources that you want to use to localize the title text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"title_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `title_loc_key` to localize the title text to the user's current localization. See Formatting and Styling for more information."}}},"allAndroidProps":{"allOf":[{"type":"object","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."}}},{"type":"object","description":"Properties supported specifically by Android on FCM.","properties":{"icon":{"type":"string","description":"Sets the notification icon to `myicon` for drawable resource `myicon`. If you don't send this key, FCM displays the launcher icon from your app manifest."},"sound":{"type":"string","description":"The sound that plays when the device receives the notification. Supports `\"default\"` or the filename of a sound resource bundled in your app. Sound files must reside in `/res/raw/`."},"tag":{"type":"string","description":"Identifier to replace existing notifications in the notification drawer. If empty, each request creates a new notification.\n\nIf you specify a tag, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. \n"},"color":{"type":"string","description":"The notification's icon color in `#rrggbb` format."},"click_action":{"type":"string","description":"The action that occurs when a user taps on the notification. Launches an activity with a matching intent filter when a person taps the notification."},"body_loc_key":{"type":"string","description":"The key to the body string in the app's string resources that you want to use to localize the body text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"body_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `body_loc_key` to localize the body text to the user's current localization. See Formatting and Styling for more information."},"title_loc_key":{"type":"string","description":"The key to the title string in the app's string resources that you want to use to localize the title text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"title_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `title_loc_key` to localize the title text to the user's current localization. See Formatting and Styling for more information."}}}]},"fcmBasicPush":{"type":"object","required":["message"],"properties":{"message":{"type":"object","description":"The parent object for all custom push payloads.","required":["notification"],"properties":{"notification":{"type":"object","required":["body"],"description":"Contains properties interpreted by the SDK except for the `link`.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."}}},"data":{"type":"object","description":"Contains the `link` property (interpreted by the SDK) and additional properties that you want to pass to your app.","properties":{"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."}}}}}}},"fcmAndroidWithSdk":{"type":"object","required":["message"],"properties":{"message":{"description":"The parent object for all push payloads.","oneOf":[{"title":"Data object only","type":"object","required":["data"],"properties":{"data":{"type":"object","description":"Contains all properties interpreted by the SDK.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."},"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."}}},"android":{"type":"object","description":"Contains properties that are **not** interpreted by the SDK but are defined by FCM. You need to write your own code to handle these Android push features.","properties":{"notification":{"type":"object","description":"Properties supported specifically by Android on FCM.","properties":{"icon":{"type":"string","description":"Sets the notification icon to `myicon` for drawable resource `myicon`. If you don't send this key, FCM displays the launcher icon from your app manifest."},"sound":{"type":"string","description":"The sound that plays when the device receives the notification. Supports `\"default\"` or the filename of a sound resource bundled in your app. Sound files must reside in `/res/raw/`."},"tag":{"type":"string","description":"Identifier to replace existing notifications in the notification drawer. If empty, each request creates a new notification.\n\nIf you specify a tag, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. \n"},"color":{"type":"string","description":"The notification's icon color in `#rrggbb` format."},"click_action":{"type":"string","description":"The action that occurs when a user taps on the notification. Launches an activity with a matching intent filter when a person taps the notification."},"body_loc_key":{"type":"string","description":"The key to the body string in the app's string resources that you want to use to localize the body text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"body_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `body_loc_key` to localize the body text to the user's current localization. See Formatting and Styling for more information."},"title_loc_key":{"type":"string","description":"The key to the title string in the app's string resources that you want to use to localize the title text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"title_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `title_loc_key` to localize the title text to the user's current localization. See Formatting and Styling for more information."}}}}}}},{"title":"Notification and data object","type":"object","required":["notification"],"properties":{"notification":{"type":"object","description":"Contains properties interpreted by the SDK except for the `link`.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."}}},"data":{"type":"object","description":"Contains the `link` property (interpreted by the SDK) and additional properties that you want to pass to your app.","properties":{"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."}}},"android":{"type":"object","description":"Contains properties that are **not** interpreted by the SDK but are defined by FCM. You need to write your own code to handle these Android push features.","properties":{"notification":{"type":"object","description":"Properties supported specifically by Android on FCM.","properties":{"icon":{"type":"string","description":"Sets the notification icon to `myicon` for drawable resource `myicon`. If you don't send this key, FCM displays the launcher icon from your app manifest."},"sound":{"type":"string","description":"The sound that plays when the device receives the notification. Supports `\"default\"` or the filename of a sound resource bundled in your app. Sound files must reside in `/res/raw/`."},"tag":{"type":"string","description":"Identifier to replace existing notifications in the notification drawer. If empty, each request creates a new notification.\n\nIf you specify a tag, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. \n"},"color":{"type":"string","description":"The notification's icon color in `#rrggbb` format."},"click_action":{"type":"string","description":"The action that occurs when a user taps on the notification. Launches an activity with a matching intent filter when a person taps the notification."},"body_loc_key":{"type":"string","description":"The key to the body string in the app's string resources that you want to use to localize the body text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"body_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `body_loc_key` to localize the body text to the user's current localization. See Formatting and Styling for more information."},"title_loc_key":{"type":"string","description":"The key to the title string in the app's string resources that you want to use to localize the title text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"title_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `title_loc_key` to localize the title text to the user's current localization. See Formatting and Styling for more information."}}}}}}}]}}},"fcmAndroidWithoutSdk":{"type":"object","description":"A custom push payload for Android devices.","required":["message"],"properties":{"message":{"type":"object","description":"The parent object for Android custom push payloads.","properties":{"notification":{"type":"object","description":"Contains the push body and title.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."}}},"data":{"type":"object","description":"Contains key-value pairs that your app interprets.","additionalProperties":{"x-additionalPropertiesName":"Attachment Names","x-doNotRender":true,"type":"string"}},"android":{"type":"object","description":"Contains custom push options for your notification.","properties":{"notification":{"type":"object","description":"Properties supported specifically by Android on FCM.","properties":{"icon":{"type":"string","description":"Sets the notification icon to `myicon` for drawable resource `myicon`. If you don't send this key, FCM displays the launcher icon from your app manifest."},"sound":{"type":"string","description":"The sound that plays when the device receives the notification. Supports `\"default\"` or the filename of a sound resource bundled in your app. Sound files must reside in `/res/raw/`."},"tag":{"type":"string","description":"Identifier to replace existing notifications in the notification drawer. If empty, each request creates a new notification.\n\nIf you specify a tag, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. \n"},"color":{"type":"string","description":"The notification's icon color in `#rrggbb` format."},"click_action":{"type":"string","description":"The action that occurs when a user taps on the notification. Launches an activity with a matching intent filter when a person taps the notification."},"body_loc_key":{"type":"string","description":"The key to the body string in the app's string resources that you want to use to localize the body text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"body_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `body_loc_key` to localize the body text to the user's current localization. See Formatting and Styling for more information."},"title_loc_key":{"type":"string","description":"The key to the title string in the app's string resources that you want to use to localize the title text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"title_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `title_loc_key` to localize the title text to the user's current localization. See Formatting and Styling for more information."}}}}}}}}},"fcmAndroid":{"oneOf":[{"title":"SDK Integration","type":"object","required":["message"],"properties":{"message":{"type":"object","required":["message"],"properties":{"message":{"description":"The parent object for all push payloads.","oneOf":[{"title":"Data object only","type":"object","required":["data"],"properties":{"data":{"type":"object","description":"Contains all properties interpreted by the SDK.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."},"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."}}},"android":{"type":"object","description":"Contains properties that are **not** interpreted by the SDK but are defined by FCM. You need to write your own code to handle these Android push features.","properties":{"notification":{"type":"object","description":"Properties supported specifically by Android on FCM.","properties":{"icon":{"type":"string","description":"Sets the notification icon to `myicon` for drawable resource `myicon`. If you don't send this key, FCM displays the launcher icon from your app manifest."},"sound":{"type":"string","description":"The sound that plays when the device receives the notification. Supports `\"default\"` or the filename of a sound resource bundled in your app. Sound files must reside in `/res/raw/`."},"tag":{"type":"string","description":"Identifier to replace existing notifications in the notification drawer. If empty, each request creates a new notification.\n\nIf you specify a tag, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. \n"},"color":{"type":"string","description":"The notification's icon color in `#rrggbb` format."},"click_action":{"type":"string","description":"The action that occurs when a user taps on the notification. Launches an activity with a matching intent filter when a person taps the notification."},"body_loc_key":{"type":"string","description":"The key to the body string in the app's string resources that you want to use to localize the body text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"body_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `body_loc_key` to localize the body text to the user's current localization. See Formatting and Styling for more information."},"title_loc_key":{"type":"string","description":"The key to the title string in the app's string resources that you want to use to localize the title text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"title_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `title_loc_key` to localize the title text to the user's current localization. See Formatting and Styling for more information."}}}}}}},{"title":"Notification and data object","type":"object","required":["notification"],"properties":{"notification":{"type":"object","description":"Contains properties interpreted by the SDK except for the `link`.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."}}},"data":{"type":"object","description":"Contains the `link` property (interpreted by the SDK) and additional properties that you want to pass to your app.","properties":{"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."}}},"android":{"type":"object","description":"Contains properties that are **not** interpreted by the SDK but are defined by FCM. You need to write your own code to handle these Android push features.","properties":{"notification":{"type":"object","description":"Properties supported specifically by Android on FCM.","properties":{"icon":{"type":"string","description":"Sets the notification icon to `myicon` for drawable resource `myicon`. If you don't send this key, FCM displays the launcher icon from your app manifest."},"sound":{"type":"string","description":"The sound that plays when the device receives the notification. Supports `\"default\"` or the filename of a sound resource bundled in your app. Sound files must reside in `/res/raw/`."},"tag":{"type":"string","description":"Identifier to replace existing notifications in the notification drawer. If empty, each request creates a new notification.\n\nIf you specify a tag, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. \n"},"color":{"type":"string","description":"The notification's icon color in `#rrggbb` format."},"click_action":{"type":"string","description":"The action that occurs when a user taps on the notification. Launches an activity with a matching intent filter when a person taps the notification."},"body_loc_key":{"type":"string","description":"The key to the body string in the app's string resources that you want to use to localize the body text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"body_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `body_loc_key` to localize the body text to the user's current localization. See Formatting and Styling for more information."},"title_loc_key":{"type":"string","description":"The key to the title string in the app's string resources that you want to use to localize the title text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"title_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `title_loc_key` to localize the title text to the user's current localization. See Formatting and Styling for more information."}}}}}}}]}}}}},{"title":"Custom Integration","type":"object","required":["message"],"properties":{"message":{"type":"object","description":"A custom push payload for Android devices.","required":["message"],"properties":{"message":{"type":"object","description":"The parent object for Android custom push payloads.","properties":{"notification":{"type":"object","description":"Contains the push body and title.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."}}},"data":{"type":"object","description":"Contains key-value pairs that your app interprets.","additionalProperties":{"x-additionalPropertiesName":"Attachment Names","x-doNotRender":true,"type":"string"}},"android":{"type":"object","description":"Contains custom push options for your notification.","properties":{"notification":{"type":"object","description":"Properties supported specifically by Android on FCM.","properties":{"icon":{"type":"string","description":"Sets the notification icon to `myicon` for drawable resource `myicon`. If you don't send this key, FCM displays the launcher icon from your app manifest."},"sound":{"type":"string","description":"The sound that plays when the device receives the notification. Supports `\"default\"` or the filename of a sound resource bundled in your app. Sound files must reside in `/res/raw/`."},"tag":{"type":"string","description":"Identifier to replace existing notifications in the notification drawer. If empty, each request creates a new notification.\n\nIf you specify a tag, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. \n"},"color":{"type":"string","description":"The notification's icon color in `#rrggbb` format."},"click_action":{"type":"string","description":"The action that occurs when a user taps on the notification. Launches an activity with a matching intent filter when a person taps the notification."},"body_loc_key":{"type":"string","description":"The key to the body string in the app's string resources that you want to use to localize the body text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"body_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `body_loc_key` to localize the body text to the user's current localization. See Formatting and Styling for more information."},"title_loc_key":{"type":"string","description":"The key to the title string in the app's string resources that you want to use to localize the title text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."},"title_loc_arg":{"type":"string","description":"Variable string values used in place of the format specifiers in `title_loc_key` to localize the title text to the user's current localization. See Formatting and Styling for more information."}}}}}}}}}}}]},"iosSharedOptions":{"type":"object","description":"A push payload intended for an iOS device.","properties":{"alert":{"oneOf":[{"title":"Simple alert","type":"string","description":"A simple alert message."},{"title":"Complex alert","type":"object","properties":{"body":{"type":"string","description":"The body of your push notification."},"title":{"type":"string","description":"The title of your push notification."},"subtitle":{"description":"Additional information that explains the purpose of the notification.","type":"string"},"launch-image":{"description":"The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.","type":"string"},"title-loc-key":{"description":"The key for a localized title string in your app’s Localizable.strings files.","type":"string"},"title-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.","items":{"type":"string"}},"subtitle-loc-key":{"description":"The key for a localized subtitle string in your app’s Localizable.strings file.","type":"string"},"subtitle-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.","items":{"type":"string"}},"loc-key":{"description":"The key for a localized message string in your app’s Localizable.strings file.","type":"string"},"loc-args":{"type":"array","description":"An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.","items":{"type":"string"}}}}]},"badge":{"type":"integer","description":"The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."},"sound":{"oneOf":[{"title":"Regular alert","type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."},{"title":"Critical alert","type":"object","properties":{"critical":{"type":"integer","description":"1 indicates critical. 0 is not critical."},"name":{"type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."},"volume":{"type":"number","description":"The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."}}}]},"thread-id":{"type":"string","description":"An identifier to group related notifications."},"category":{"type":"string","description":"The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."},"content-available":{"type":"integer","description":"The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."},"mutable-content":{"type":"integer","description":"If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"},"target-content-id":{"type":"string","description":"The identifier of the window brought forward."},"interruption-level":{"type":"string","description":"Indicates the importance and delivery timing of a notification.","enum":["passive","active","time-sensitive","critical"]},"relevance-score":{"type":"number","description":"A number between 0 and 1. The highest score is considered the \"most relevant\" and is featured in the notification summary."}}},"fcmIosWithSdk":{"type":"object","required":["message"],"properties":{"message":{"type":"object","description":"The base object for all FCM payloads.","required":["apns"],"properties":{"apns":{"type":"object","required":["payload"],"description":"Defines a payload for iOS devices sent through Firebase Cloud Messaging (FCM).","properties":{"headers":{"description":"Headers defined by [Apple's payload reference](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns) that you want to pass through FCM.","type":"object"},"payload":{"type":"object","description":"Contains a push payload.","properties":{"CIO":{"type":"object","description":"Contains properties interpreted by the Customer.io iOS SDK.","required":["push"],"properties":{"push":{"type":"object","description":"A push payload for the iOS SDK.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."},"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."}}}}},"aps":{"type":"object","description":"A push payload intended for an iOS device.","properties":{"alert":{"oneOf":[{"title":"Simple alert","type":"string","description":"A simple alert message."},{"title":"Complex alert","type":"object","properties":{"body":{"type":"string","description":"The body of your push notification."},"title":{"type":"string","description":"The title of your push notification."},"subtitle":{"description":"Additional information that explains the purpose of the notification.","type":"string"},"launch-image":{"description":"The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.","type":"string"},"title-loc-key":{"description":"The key for a localized title string in your app’s Localizable.strings files.","type":"string"},"title-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.","items":{"type":"string"}},"subtitle-loc-key":{"description":"The key for a localized subtitle string in your app’s Localizable.strings file.","type":"string"},"subtitle-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.","items":{"type":"string"}},"loc-key":{"description":"The key for a localized message string in your app’s Localizable.strings file.","type":"string"},"loc-args":{"type":"array","description":"An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.","items":{"type":"string"}}}}]},"badge":{"type":"integer","description":"The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."},"sound":{"oneOf":[{"title":"Regular alert","type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."},{"title":"Critical alert","type":"object","properties":{"critical":{"type":"integer","description":"1 indicates critical. 0 is not critical."},"name":{"type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."},"volume":{"type":"number","description":"The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."}}}]},"thread-id":{"type":"string","description":"An identifier to group related notifications."},"category":{"type":"string","description":"The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."},"content-available":{"type":"integer","description":"The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."},"mutable-content":{"type":"integer","description":"If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"},"target-content-id":{"type":"string","description":"The identifier of the window brought forward."},"interruption-level":{"type":"string","description":"Indicates the importance and delivery timing of a notification.","enum":["passive","active","time-sensitive","critical"]},"relevance-score":{"type":"number","description":"A number between 0 and 1. The highest score is considered the \"most relevant\" and is featured in the notification summary."}}}},"additionalProperties":{"description":"Additional properties that you've set up your app to interpret outside of the Customer.io SDK.","x-additionalPropertiesName":"Custom key-value pairs"}}}}}}}},"fcmIosWithoutSdk":{"type":"object","required":["message"],"properties":{"message":{"type":"object","required":["apns"],"description":"The base object for all Firebase payloads.","properties":{"apns":{"type":"object","description":"Defines a push notification for iOS devices.","required":["payload"],"properties":{"headers":{"description":"Headers defined by [Apple's payload reference](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns) that you want to pass through FCM.","type":"object"},"payload":{"type":"object","properties":{"aps":{"type":"object","description":"A push payload intended for an iOS device.","properties":{"alert":{"oneOf":[{"title":"Simple alert","type":"string","description":"A simple alert message."},{"title":"Complex alert","type":"object","properties":{"body":{"type":"string","description":"The body of your push notification."},"title":{"type":"string","description":"The title of your push notification."},"subtitle":{"description":"Additional information that explains the purpose of the notification.","type":"string"},"launch-image":{"description":"The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.","type":"string"},"title-loc-key":{"description":"The key for a localized title string in your app’s Localizable.strings files.","type":"string"},"title-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.","items":{"type":"string"}},"subtitle-loc-key":{"description":"The key for a localized subtitle string in your app’s Localizable.strings file.","type":"string"},"subtitle-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.","items":{"type":"string"}},"loc-key":{"description":"The key for a localized message string in your app’s Localizable.strings file.","type":"string"},"loc-args":{"type":"array","description":"An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.","items":{"type":"string"}}}}]},"badge":{"type":"integer","description":"The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."},"sound":{"oneOf":[{"title":"Regular alert","type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."},{"title":"Critical alert","type":"object","properties":{"critical":{"type":"integer","description":"1 indicates critical. 0 is not critical."},"name":{"type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."},"volume":{"type":"number","description":"The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."}}}]},"thread-id":{"type":"string","description":"An identifier to group related notifications."},"category":{"type":"string","description":"The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."},"content-available":{"type":"integer","description":"The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."},"mutable-content":{"type":"integer","description":"If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"},"target-content-id":{"type":"string","description":"The identifier of the window brought forward."},"interruption-level":{"type":"string","description":"Indicates the importance and delivery timing of a notification.","enum":["passive","active","time-sensitive","critical"]},"relevance-score":{"type":"number","description":"A number between 0 and 1. The highest score is considered the \"most relevant\" and is featured in the notification summary."}}}}}}}}}}},"apsBasicPush":{"type":"object","required":["aps"],"properties":{"aps":{"type":"object","description":"A push payload intended for an iOS device.","required":["alert"],"properties":{"alert":{"type":"object","description":"An object containing the push title and body","required":["body"],"properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."}}}}},"CIO":{"type":"object","required":["push"],"description":"Contains options supported by the Customer.io SDK.","properties":{"push":{"type":"object","description":"Describes push notification options supported by the CIO SDK.","properties":{"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."}}}}}}},"apnsWithoutSdk":{"type":"object","properties":{"aps":{"type":"object","description":"A push payload intended for an iOS device.","properties":{"alert":{"oneOf":[{"title":"Simple alert","type":"string","description":"A simple alert message."},{"title":"Complex alert","type":"object","properties":{"body":{"type":"string","description":"The body of your push notification."},"title":{"type":"string","description":"The title of your push notification."},"subtitle":{"description":"Additional information that explains the purpose of the notification.","type":"string"},"launch-image":{"description":"The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.","type":"string"},"title-loc-key":{"description":"The key for a localized title string in your app’s Localizable.strings files.","type":"string"},"title-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.","items":{"type":"string"}},"subtitle-loc-key":{"description":"The key for a localized subtitle string in your app’s Localizable.strings file.","type":"string"},"subtitle-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.","items":{"type":"string"}},"loc-key":{"description":"The key for a localized message string in your app’s Localizable.strings file.","type":"string"},"loc-args":{"type":"array","description":"An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.","items":{"type":"string"}}}}]},"badge":{"type":"integer","description":"The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."},"sound":{"oneOf":[{"title":"Regular alert","type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."},{"title":"Critical alert","type":"object","properties":{"critical":{"type":"integer","description":"1 indicates critical. 0 is not critical."},"name":{"type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."},"volume":{"type":"number","description":"The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."}}}]},"thread-id":{"type":"string","description":"An identifier to group related notifications."},"category":{"type":"string","description":"The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."},"content-available":{"type":"integer","description":"The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."},"mutable-content":{"type":"integer","description":"If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"},"target-content-id":{"type":"string","description":"The identifier of the window brought forward."},"interruption-level":{"type":"string","description":"Indicates the importance and delivery timing of a notification.","enum":["passive","active","time-sensitive","critical"]},"relevance-score":{"type":"number","description":"A number between 0 and 1. The highest score is considered the \"most relevant\" and is featured in the notification summary."}}}}},"iosFcmAndApns":{"description":"Your payload changes depending on whether you send to iOS devices through Google's Firebase Cloud Messaging (FCM) or Apple's Push Notification service (APNs).","oneOf":[{"title":"FCM","type":"object","required":["message"],"properties":{"message":{"type":"object","description":"The base object for all FCM payloads.","required":["apns"],"properties":{"apns":{"type":"object","required":["payload"],"description":"Defines a payload for iOS devices sent through Firebase Cloud Messaging (FCM).","properties":{"headers":{"description":"Headers defined by [Apple's payload reference](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns) that you want to pass through FCM.","type":"object"},"payload":{"type":"object","description":"Contains a push payload.","properties":{"CIO":{"type":"object","description":"Contains properties interpreted by the Customer.io iOS SDK.","required":["push"],"properties":{"push":{"type":"object","description":"A push payload for the iOS SDK.","properties":{"title":{"type":"string","description":"The title of your push notification."},"body":{"type":"string","description":"The body of your push notification."},"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."}}}}},"aps":{"type":"object","description":"A push payload intended for an iOS device.","properties":{"alert":{"oneOf":[{"title":"Simple alert","type":"string","description":"A simple alert message."},{"title":"Complex alert","type":"object","properties":{"body":{"type":"string","description":"The body of your push notification."},"title":{"type":"string","description":"The title of your push notification."},"subtitle":{"description":"Additional information that explains the purpose of the notification.","type":"string"},"launch-image":{"description":"The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.","type":"string"},"title-loc-key":{"description":"The key for a localized title string in your app’s Localizable.strings files.","type":"string"},"title-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.","items":{"type":"string"}},"subtitle-loc-key":{"description":"The key for a localized subtitle string in your app’s Localizable.strings file.","type":"string"},"subtitle-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.","items":{"type":"string"}},"loc-key":{"description":"The key for a localized message string in your app’s Localizable.strings file.","type":"string"},"loc-args":{"type":"array","description":"An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.","items":{"type":"string"}}}}]},"badge":{"type":"integer","description":"The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."},"sound":{"oneOf":[{"title":"Regular alert","type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."},{"title":"Critical alert","type":"object","properties":{"critical":{"type":"integer","description":"1 indicates critical. 0 is not critical."},"name":{"type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."},"volume":{"type":"number","description":"The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."}}}]},"thread-id":{"type":"string","description":"An identifier to group related notifications."},"category":{"type":"string","description":"The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."},"content-available":{"type":"integer","description":"The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."},"mutable-content":{"type":"integer","description":"If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"},"target-content-id":{"type":"string","description":"The identifier of the window brought forward."},"interruption-level":{"type":"string","description":"Indicates the importance and delivery timing of a notification.","enum":["passive","active","time-sensitive","critical"]},"relevance-score":{"type":"number","description":"A number between 0 and 1. The highest score is considered the \"most relevant\" and is featured in the notification summary."}}}},"additionalProperties":{"description":"Additional properties that you've set up your app to interpret outside of the Customer.io SDK.","x-additionalPropertiesName":"Custom key-value pairs"}}}}}}}},{"title":"APNS","type":"object","properties":{"CIO":{"type":"object","required":["push"],"description":"Contains options supported by the Customer.io SDK.","properties":{"push":{"type":"object","description":"Describes push notification options supported by the CIO SDK.","properties":{"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."}}}}},"aps":{"type":"object","description":"A push payload intended for an iOS device.","properties":{"alert":{"oneOf":[{"title":"Simple alert","type":"string","description":"A simple alert message."},{"title":"Complex alert","type":"object","properties":{"body":{"type":"string","description":"The body of your push notification."},"title":{"type":"string","description":"The title of your push notification."},"subtitle":{"description":"Additional information that explains the purpose of the notification.","type":"string"},"launch-image":{"description":"The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.","type":"string"},"title-loc-key":{"description":"The key for a localized title string in your app’s Localizable.strings files.","type":"string"},"title-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.","items":{"type":"string"}},"subtitle-loc-key":{"description":"The key for a localized subtitle string in your app’s Localizable.strings file.","type":"string"},"subtitle-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.","items":{"type":"string"}},"loc-key":{"description":"The key for a localized message string in your app’s Localizable.strings file.","type":"string"},"loc-args":{"type":"array","description":"An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.","items":{"type":"string"}}}}]},"badge":{"type":"integer","description":"The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."},"sound":{"oneOf":[{"title":"Regular alert","type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."},{"title":"Critical alert","type":"object","properties":{"critical":{"type":"integer","description":"1 indicates critical. 0 is not critical."},"name":{"type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."},"volume":{"type":"number","description":"The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."}}}]},"thread-id":{"type":"string","description":"An identifier to group related notifications."},"category":{"type":"string","description":"The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."},"content-available":{"type":"integer","description":"The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."},"mutable-content":{"type":"integer","description":"If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"},"target-content-id":{"type":"string","description":"The identifier of the window brought forward."},"interruption-level":{"type":"string","description":"Indicates the importance and delivery timing of a notification.","enum":["passive","active","time-sensitive","critical"]},"relevance-score":{"type":"number","description":"A number between 0 and 1. The highest score is considered the \"most relevant\" and is featured in the notification summary."}}}}}]},"apnsWithSdk":{"type":"object","properties":{"CIO":{"type":"object","required":["push"],"description":"Contains options supported by the Customer.io SDK.","properties":{"push":{"type":"object","description":"Describes push notification options supported by the CIO SDK.","properties":{"link":{"type":"string","description":"A deep link (to a page in your app), or a link to a web page."},"image":{"type":"string","description":"The URL of an HTTPS image that you want to use for your message."}}}}},"aps":{"type":"object","description":"A push payload intended for an iOS device.","properties":{"alert":{"oneOf":[{"title":"Simple alert","type":"string","description":"A simple alert message."},{"title":"Complex alert","type":"object","properties":{"body":{"type":"string","description":"The body of your push notification."},"title":{"type":"string","description":"The title of your push notification."},"subtitle":{"description":"Additional information that explains the purpose of the notification.","type":"string"},"launch-image":{"description":"The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.","type":"string"},"title-loc-key":{"description":"The key for a localized title string in your app’s Localizable.strings files.","type":"string"},"title-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.","items":{"type":"string"}},"subtitle-loc-key":{"description":"The key for a localized subtitle string in your app’s Localizable.strings file.","type":"string"},"subtitle-loc-args":{"type":"array","description":"An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.","items":{"type":"string"}},"loc-key":{"description":"The key for a localized message string in your app’s Localizable.strings file.","type":"string"},"loc-args":{"type":"array","description":"An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.","items":{"type":"string"}}}}]},"badge":{"type":"integer","description":"The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."},"sound":{"oneOf":[{"title":"Regular alert","type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."},{"title":"Critical alert","type":"object","properties":{"critical":{"type":"integer","description":"1 indicates critical. 0 is not critical."},"name":{"type":"string","description":"The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."},"volume":{"type":"number","description":"The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."}}}]},"thread-id":{"type":"string","description":"An identifier to group related notifications."},"category":{"type":"string","description":"The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."},"content-available":{"type":"integer","description":"The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."},"mutable-content":{"type":"integer","description":"If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"},"target-content-id":{"type":"string","description":"The identifier of the window brought forward."},"interruption-level":{"type":"string","description":"Indicates the importance and delivery timing of a notification.","enum":["passive","active","time-sensitive","critical"]},"relevance-score":{"type":"number","description":"A number between 0 and 1. The highest score is considered the \"most relevant\" and is featured in the notification summary."}}}}},"widgetColor":{"type":"string","description":"The color you want to use for this content. You can only set values here that are defined under [**Content** > **In-App Messages**](https://fly.customer.io/env/last/in-app-messages)."},"widgetRadius":{"type":"integer","description":"Sets the radius of corners for an item in pixels, similar to the `border-radius` CSS property."},"widgetHeight":{"type":"integer","description":"The height of the component in pixels, if you want to constrain it. If you don't set a height or width, we'll scale your content to fit your message or container."},"widgetWidth":{"type":"integer","description":"The width of the component in pixels, if you want to constrain it. If you don't set a height or width, we'll scale your content to fit your message or container."},"widgetComponents":{"description":"An array of child components that you want to make available inside this widget.","type":"array","items":{"type":"object"}},"widgetMainAxisAlignment":{"type":"string","description":"The mainAxisAlignment property supports the following options.","enum":["start","end","spaceBetween","spaceAround","spaceEvenly"]},"widgetCrossAxisAlignment":{"type":"string","description":"The crossAxisAlignment property supports the following options","enum":["center","start","end","center","stretch","baseline"]},"textWidget":{"description":"Displays text in your message.","type":"object","required":["type","text"],"properties":{"type":{"type":"string","description":"Defines the widget type.","enum":["textWidget"]},"text":{"type":"string","description":"The text you want to display.","example":"$person.name"},"style":{"type":"string","description":"The style of text you want to display. You can only set values here that are defined under [**Content** > **In-App Messages**](https://fly.customer.io/env/last/in-app-messages)."},"color":{"type":"string","description":"The color you want to use for this content. You can only set values here that are defined under [**Content** > **In-App Messages**](https://fly.customer.io/env/last/in-app-messages)."},"textAlign":{"type":"string","description":"How you want to align this text.","enum":["center","right","left","start","end","justify"]},"maxLines":{"type":"integer","description":"The maximum lines of text you want to display. Text over this limit is controlled by the `overflow` property. If unset, the message displays an unlimited number of lines."},"overflow":{"type":"string","description":"Determines how to handle text that overflows the `maxLines` limit (if set). By default, we cut off overflowing text with ellipsis (`...`).","enum":["ellipsis","fade","clip"]}}},"imageWidget":{"description":"Displays an image. You can provide the URL of an image. Or, if you use the template designer, you can upload an image and host it directly.","type":"object","required":["type","image"],"properties":{"type":{"type":"string","description":"Defines the widget type.","enum":["imageWidget"]},"image":{"description":"The URL of the image that you want ot use in your message.","example":"$person.imageUrl"},"fit":{"type":"string","description":"Determines how the image fits your message. Defaults to `cover`.","enum":["none","fitWidth","cover","contain","scaleDown","fill","fitHeight"]},"height":{"type":"integer","description":"The height of the component in pixels, if you want to constrain it. If you don't set a height or width, we'll scale your content to fit your message or container."},"width":{"type":"integer","description":"The width of the component in pixels, if you want to constrain it. If you don't set a height or width, we'll scale your content to fit your message or container."},"cornerRadius":{"type":"integer","description":"Sets the radius of corners for an item in pixels, similar to the `border-radius` CSS property."},"fadeInDuration":{"type":"integer","description":"The durration for the image to fade in, in milliseconds, similar to the `fadeIn` CSS transition property."}}},"iconWidget":{"description":"Displays an icon from an icon font that you've loaded into your app or project. You must load your icon font in the assets section of your app configuration.","type":"object","required":["type","color","value"],"properties":{"type":{"type":"string","description":"Defines the widget type.","enum":["iconWidget"]},"color":{"type":"string","description":"The color you want to use for this content. You can only set values here that are defined under [**Content** > **In-App Messages**](https://fly.customer.io/env/last/in-app-messages)."},"font":{"description":"The icon font you want to use."},"size":{"description":"The pixel size of the icon.","type":"integer"},"value":{"description":"The value of the icon that you want to use. For example, for font-awesome, you'd use the name of the icon.","type":"string"}}},"blockWidget":{"type":"object","description":"A widget that provides visual design for one or more child components.","properties":{"type":{"type":"string","description":"Defines the widget type.","enum":["blockWidget"]},"safeInsets":{"type":"boolean","description":"Based on the env `safe-area-inset-*` CSS properties. Set to true to ensure that the block can't overflow the defined screen or the defined area of your message. Defaults to `false`.","default":false},"padding":{"type":"array","description":"Defines padding for the block, based on the values set under *Branding* > *Padding*. As with the CSS `padding` property, values in the array represent top, right, bottom, and left padding.","maxItems":4,"items":{"type":"string","description":"The padding label you set under *Branding* > *Padding*."}},"backgroundColor":{"type":"string","description":"The background color for your block. You must set a value defined under *Branding* > *Colors*."},"borderColor":{"type":"string","description":"The border color for your block, if you set a border width greater than 0. You must set a value defined under *Branding* > *Colors*."},"borderWidth":{"type":"integer","description":"The width of the border for this block in pixels."},"borderRadius":{"type":"integer","description":"Sets the radius of corners for an item in pixels, similar to the `border-radius` CSS property."},"height":{"type":"integer","description":"The height of the component in pixels, if you want to constrain it. If you don't set a height or width, we'll scale your content to fit your message or container."},"backgroundImage":{"type":"string","description":"Set a background image for the block","example":"$user.backgroundImage,"},"flex":{"type":"integer","description":"The single digit syntax for the CSS `flex` property. The value you use here determines the propotional amount of space the block consumes in a parent container."},"components":{"description":"An array of child components that you want to make available inside this widget.","type":"array","items":{"type":"object"}}}},"conditionalWidget":{"description":"Set a true/false condition determining which content to show. Use a variable in your condition to populate the condition when you set up your message in Customer.io.","type":"object","properties":{"type":{"type":"string","description":"Defines the widget type.","enum":["conditionalWidget"]},"condition":{"type":"string","description":"The condition you want to evaluate. You can evaluate a condition using `>`, `<`, `==` & `in` operators. If you don't use an operator, the condition checks if the property is null."},"true":{"type":"object","description":"The component you want to show when your condition is true."},"false":{"type":"object","description":"The component you want to show when your condition is false."}}},"actionWidget":{"description":"An action is either a link or a way to dismiss your message. The `behaviour` property determines how your app treats the action.","type":"object","required":["type","component","action"],"properties":{"type":{"type":"string","description":"Defines the widget type.","enum":["actionWidget"]},"action":{"type":"string","description":"The link or place you want to send a person. This is either a deep link in your app, a web address, a `mailto` link, or a way to close the message (`gist://close`)."},"behaviour":{"type":"string","description":"* `push`: pushes a new route into the navigation stack.\n* `system`: offloads the action onto the operating system. Actions like `mailto:support@bourbon.sh` will open the default email client.\n* `back`: pops the navigation stack one step back.\n* `retain`: retain replaces the current view with a new route.\n","enum":["push","system","back","retain"]},"component":{"type":"object","description":"The component a person taps to perform the action defined in this widget."}}},"fixedListWidget":{"description":"Displays a series of components in a vertical list.","type":"object","properties":{"type":{"description":"Defines the widget type.","enum":["fixedListWidget"]},"mainAxisAlignment":{"type":"string","description":"The mainAxisAlignment property supports the following options.","enum":["start","end","spaceBetween","spaceAround","spaceEvenly"]},"crossAxisAlignment":{"type":"string","description":"The crossAxisAlignment property supports the following options","enum":["center","start","end","center","stretch","baseline"]},"components":{"description":"An array of child components that you want to make available inside this widget.","type":"array","items":{"type":"object"}}}},"fixedHorizontalListWidget":{"description":"Displays a series of components in a horizontal list, like if you want to put an image and text next to each other.","type":"object","properties":{"type":{"type":"string","description":"Defines the widget type.","enum":["fixedHorizontalListWidget"]},"mainAxisAlignment":{"type":"string","description":"The mainAxisAlignment property supports the following options.","enum":["start","end","spaceBetween","spaceAround","spaceEvenly"]},"crossAxisAlignment":{"type":"string","description":"The crossAxisAlignment property supports the following options","enum":["center","start","end","center","stretch","baseline"]},"components":{"description":"An array of child components that you want to make available inside this widget.","type":"array","items":{"type":"object"}}}},"fixedHorizontalScrollWidget":{"type":"object","description":"A series of components that you can scroll through, like a carousel.","properties":{"type":{"type":"string","description":"Defines the widget type","enum":["fixedHorizontalListScrollWidget"]},"height":{"type":"integer","description":"The height of the widget in pixels."},"components":{"description":"An array of child components that you want to make available inside this widget.","type":"array","items":{"type":"object"}}}},"fixedGridWidget":{"description":"Used to layout an in-app message in a fixed grid.","type":"object","required":["type","components","columns"],"properties":{"type":{"type":"string","description":"Defines the widget type.","enum":["fixedGridWidget"]},"itemPadding":{"type":"string","description":"The padding between items in your grid."},"columns":{"type":"integer","description":"The number of columns in your grid."},"childAspectRatio":{"type":"number","description":"The aspect ratio for items in the grid. Defaults to 1.0"},"components":{"description":"An array of child components that you want to make available inside this widget.","type":"array","items":{"type":"object"}}}},"inAppMessageEventDetail":{"type":"object","description":"An object containing message specific data depending on the event type.","properties":{"messageId":{"type":"string","description":"Identifier string of the in-app message."},"deliveryId":{"type":"string","description":"Delivery Id for the corresponding in-app message (not present in test message)."}}},"inAppMessageOpenedEvent":{"type":"object","description":"Event object passed to the listener function when user is shown an in-app message.","properties":{"type":{"type":"string","description":"Defines the event type.","enum":["in-app:message-opened"]},"detail":{"type":"object","description":"An object containing message specific data depending on the event type.","properties":{"messageId":{"type":"string","description":"Identifier string of the in-app message."},"deliveryId":{"type":"string","description":"Delivery Id for the corresponding in-app message (not present in test message)."}}}}},"inAppMessageDismissedEvent":{"type":"object","description":"Event object passed to the listener function when user dismisses an in-app message.","properties":{"type":{"type":"string","description":"Defines the event type.","enum":["in-app:message-dismissed"]},"detail":{"type":"object","description":"An object containing message specific data depending on the event type.","properties":{"messageId":{"type":"string","description":"Identifier string of the in-app message."},"deliveryId":{"type":"string","description":"Delivery Id for the corresponding in-app message (not present in test message)."}}}}},"inAppMessageActionEvent":{"type":"object","description":"Event object passed to the listener function when user performs an action in the in-app message.","properties":{"type":{"type":"string","description":"Defines the event type.","enum":["in-app:message-action"]},"detail":{"type":"object","properties":{"messageId":{"type":"string","description":"Identifier string of the in-app message."},"deliveryId":{"type":"string","description":"Delivery Id for the corresponding in-app message (not present in test message)."},"actionName":{"type":"string","description":"The name of the action specified when building the in-app message."},"actionValue":{"type":"string","description":"The type of action that triggered the event."}}}}},"inAppMessageErrorEvent":{"type":"object","description":"Event object passed to the listener function when an error occurs.","properties":{"type":{"type":"string","description":"Defines the event type.","enum":["in-app:message-error"]},"detail":{"type":"object","description":"An object containing message specific data depending on the event type.","properties":{"messageId":{"type":"string","description":"Identifier string of the in-app message."},"deliveryId":{"type":"string","description":"Delivery Id for the corresponding in-app message (not present in test message)."}}}}},"errors":{"type":"array","description":"An array of errors, where each object represents a different error.","items":{"type":"object","properties":{"reason":{"type":"string","description":"The reason for the error."},"field":{"type":"string","description":"The field containing the error."},"message":{"type":"string","description":"A detailed description of the error in the offending field."}}}},"object_operations":{"title":"Object","oneOf":[{"type":"object","title":"identify","description":"The `action` determines the type of operation you want to perform with an object. If `identifiers.object_id` does not exist, we'll create a new object; if it exists, we'll update the object accordingly.\n","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"identifiers":{"description":"The identifiers for a custom object. When identifying a new object, you *must* use both the `object_type_id` and `object_id` (where `object_type_id` is an integer representing the type of object and the `object_id` is the individual identifier for the object).\n\nIf you're updating an existing object, you can use either the `object_type_id` and `object_id` or the `cio_object_id` (where `cio_object_id` is an immutable unique value that Customer.io sets for an object when you create it).\n","oneOf":[{"title":"Object ID (create and update)","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID (updates only)","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]},"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Indicates that the operation will `identify` the the item of the specified `type`.","enum":["identify"]},"attributes":{"type":"object","description":"The data that belongs to the object. This is information you might want to associate with people later (through `cio_relationships`). Passing `null` or an empty string removes the attribute from the object. Some attributes have special meaning. Please refer to the list of [reserved attributes](/journeys/objects-create/#reserved-attributes).\n"},"cio_relationships":{"type":"array","description":"The people you want to associate with an object. Each object in the array represents a person.","items":{"type":"object","properties":{"identifiers":{"oneOf":[{"title":"id","type":"object","properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]},"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"}}},"example":{"identifiers":{"id":"42"},"relationship_attributes":{"role":"admin","date_created":1702480414}}}}}}]},{"title":"identify_anonymous","description":"The `identify_anonymous` action lets you relate an object to a person who hasn't yet identified themselves by anonymous_id. When you identify the person, their anonymous relationship will carry over to the identified profile.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"identifiers":{"description":"The identifiers for a custom object. When identifying a new object, you *must* use both the `object_type_id` and `object_id` (where `object_type_id` is an integer representing the type of object and the `object_id` is the individual identifier for the object).\n\nIf you're updating an existing object, you can use either the `object_type_id` and `object_id` or the `cio_object_id` (where `cio_object_id` is an immutable unique value that Customer.io sets for an object when you create it).\n","oneOf":[{"title":"Object ID (create and update)","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID (updates only)","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]},"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Indicates that the operation will `identify` the item of the specified `type` and relate it to an `anonymous_id`.","enum":["identify_anonymous"]},"attributes":{"type":"object","description":"The data that belongs to the object. This is information you might want to associate with people later (through `cio_relationships`). Passing `null` or an empty string removes the attribute from the object. Some attributes have special meaning. Please refer to the list of [reserved attributes](/journeys/objects-create/#reserved-attributes).\n"},"cio_relationships":{"type":"array","description":"The anonymous people you want to associate with an object. Each object in the array contains an `anonymous_id` representing a person you haven't yet identified by `id` or `email`.","items":{"type":"object","properties":{"identifiers":{"type":"object","properties":{"anonymous_id":{"type":"string","description":"An identifier for an anonymous event, like a cookie. If set as an attribute on a person, any events bearing the same anonymous value are associated with this person. This value must be unique and is not reusable."}}},"relationship_attributes":{"type":"object","description":"Coming October 2023 - The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship."}}}}}}]},{"title":"delete","description":"Delete an object. This also removes relationships from people.\n","allOf":[{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","required":["type"],"properties":{"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}}]},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Indicates that the operation will `delete` the the item of the specified `type`.","enum":["delete"]}}}]},{"title":"add_relationships","description":"Add relationships between an object and one or more people.","allOf":[{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","required":["type"],"properties":{"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}}]},{"type":"object","required":["action","cio_relationships"],"properties":{"action":{"type":"string","description":"This operation associates an object with one or more people.","enum":["add_relationships"]},"cio_relationships":{"type":"array","description":"The people you want to associate with an object. Each object in the array represents a person.","items":{"type":"object","properties":{"identifiers":{"oneOf":[{"title":"id","type":"object","properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]},"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"}}},"example":{"identifiers":{"id":"42"},"relationship_attributes":{"role":"admin","date_created":1702480414}}}}}}]},{"title":"delete_relationships","description":"Delete relationships between an object and one or more people.","allOf":[{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","required":["type"],"properties":{"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}}]},{"type":"object","required":["action","cio_relationships"],"properties":{"action":{"type":"string","description":"This operation deletes an object relationship from one or more people.","enum":["delete_relationships"]},"cio_relationships":{"type":"array","description":"The people you want to associate with an object. Each object in the array represents a person.","items":{"type":"object","properties":{"identifiers":{"oneOf":[{"title":"id","type":"object","properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]},"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"}}},"example":{"identifiers":{"id":"42"},"relationship_attributes":{"role":"admin","date_created":1702480414}}}}}}]}],"discriminator":{"propertyName":"action","mapping":{"identify":"#/components/schemas/object_identify","identify_anonymous":"#/components/schemas/object_identify_anonymous","delete":"#/components/schemas/object_delete","add_relationships":"#/components/schemas/object_add_relationships","delete_relationships":"#/components/schemas/object_delete_relationships"}}},"person_operations":{"title":"Person","oneOf":[{"title":"identify","description":"Add or update a person.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Indicates that the operation will `identify` the the item of the specified `type`.","enum":["identify"]},"attributes":{"type":"object","description":"Attributes that you want to add or update for this person.","properties":{"cio_subscription_preferences":{"description":"Stores your audience's subscription preferences if you enable our [subscription center](/subscription-center/) feature. These items are set automatically when people use the unsubscribe link in your messages, but you can set preferences outside the subscription flow. To update select topic preferences while preserving those set for other topics, use JSON dot notation `\"cio_subscription_preferences.topics.topic_\":`.","type":"object","properties":{"topics":{"type":"object","description":"Contains active topics in your workspace, named `topic_`.","additionalProperties":{"x-additionalPropertiesName":"topic_","description":"Each property is a boolean named `topic_`. Topic `id` values begin at `1` and increment for each new topic. You can find your topic ids in [Workspace Settings](https://fly.customer.io/workspaces/last/settings/subscription_center/topics) or by querying our [App API](https://customer.io/api/app/#operation/getTopics). For each boolean, `true` means that a person is subscribed to the topic; false means they are unsubscribed. An empty or missing value reverts to the default preference for the topic (opt-in or opt-out).","type":"boolean"}}},"example":{"topics":{"topic_1":true,"topic_2":false,"topic_3":true}}}}},"cio_relationships":{"type":"array","description":"Each object in the array represents a relationship you want to add to, or remove from, a person.","items":{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","properties":{"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"},"example":{"role":"admin"}}}}]}}}}]},{"title":"delete","description":"Delete a person from your workspace.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Indicates that the operation will `delete` the the item of the specified `type`.","enum":["delete"]}}}]},{"description":"A custom event attributed to a person. You can use events to trigger campaigns, or reference event information using liquid in your messages.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","description":"A custom event attributed to the specified person.","enum":["event"]},"id":{"type":"string","format":"ULID","description":"A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id."},"name":{"type":"string","description":"The name of the event. This is how you'll find your event in Customer.io or select it when using events as campaign triggers."},"timestamp":{"type":"integer","description":"The Unix timestamp when the event happened."},"attributes":{"type":"object","description":"Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.\n","additionalProperties":{"x-additionalPropertiesName":"liquid merge data","description":"Insert key-values that you want to reference in your message here."},"properties":{"recipient":{"type":"string","format":"email","description":"The email address of the person associated with the event, overriding the `to` field in emails triggered by the event."},"from_address":{"type":"string","format":"email","description":"The address you want to trigger messages from, overriding the `from` field in emails triggered by the event."},"reply_to":{"type":"string","format":"email","description":"The address you want to receive replies to, overriding the `reply to` field for emails triggered by the event."}}}}}]},{"description":"A mobile \"screenview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","description":"A mobile \"screenview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.","enum":["screen"]},"id":{"type":"string","format":"ULID","description":"A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id."},"name":{"type":"string","description":"The name of the screen a person visited. This is how you'll find and select screen view events in Customer.io."},"timestamp":{"type":"integer","description":"The Unix timestamp when the event happened."},"attributes":{"type":"object","description":"Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.","additionalProperties":{"x-additionalPropertiesName":"liquid merge data","description":"Insert key-values that you want to reference in your message here."}}}}]},{"description":"A web \"pageview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","description":"A web \"pageview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.","enum":["screen"]},"id":{"type":"string","format":"ULID","description":"A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id."},"name":{"type":"string","description":"The name of the page or page path that a person visited. This is how you'll find and select page view events in Customer.io."},"timestamp":{"type":"integer","description":"The Unix timestamp when the event happened."},"attributes":{"type":"object","description":"Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.","additionalProperties":{"x-additionalPropertiesName":"liquid merge data","description":"Insert key-values that you want to reference in your message here."}}}}]},{"title":"add_relationships","description":"Associate multiple objects with a person.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","cio_relationships"],"properties":{"action":{"type":"string","description":"This operation associates a person with one or more objects.","enum":["add_relationships"]},"cio_relationships":{"type":"array","description":"Each object in the array represents a relationship you want to add to, or remove from, a person.","items":{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","properties":{"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"},"example":{"role":"admin"}}}}]}}}}]},{"title":"delete_relationships","description":"Remove multiple object relationships from a person.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","cio_relationships"],"properties":{"action":{"type":"string","description":"This operation deletes an object relationship from one or more people.","enum":["delete_relationships"]},"cio_relationships":{"type":"array","description":"Each object in the array represents a relationship you want to add to, or remove from, a person.","items":{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","properties":{"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"},"example":{"role":"admin"}}}}]}}}}]},{"title":"add_device","description":"Assign devices to a person.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","device"],"properties":{"action":{"type":"string","description":"Add a mobile device to a person's profile.","enum":["add_device"]},"device":{"description":"The properties representing an individual device. [Our SDK's](/sdk/) gather all the properties defined below automatically, unless you disable the `autoTrackDeviceAttributes` setting. You can reference the properties outside the `attributes` object in segments.","allOf":[{"type":"object","required":["token"],"properties":{"token":{"description":"The device token.","type":"string"}}},{"type":"object","description":"Device information common to the v1 and v2 APIs.","required":["platform"],"properties":{"last_used":{"type":"integer","format":"unix timestamp","description":"The `timestamp` when you last identified this device. If you don't pass a timestamp when you add or update a device, we use the time of the request itself. Our SDKs identify a device when a person launches their app."},"platform":{"type":"string","enum":["ios","android"],"description":"The device/messaging platform."},"attributes":{"type":"object","description":"Attributes that you can reference to segment your audience—like a person's attributes, but specific to a device. These can be either the attributes defined below or custom key-value attributes.","properties":{"device_os":{"type":"string","description":"The operating system, including the version, on the device."},"device_model":{"type":"string","description":"The model of the device a person uses."},"app_version":{"type":"string","description":"The version of your app that a customer uses. You might target app versions to let people know when they need to update, or expose them to new features when they do."},"cio_sdk_version":{"type":"string","description":"The version of the Customer.io SDK in the app."},"_last_status":{"type":"string","readOnly":true,"description":"The delivery status of the last message sent to the device—sent, bounced, or suppressed. An empty string indicates that that the device hasn't received a push yet.","enum":["","bounced","sent","suppressed"]},"device_locale":{"type":"string","description":"The four-letter [IETF language code](/localization/#supported-languages) for the device. For example, `en-MX` (indicating an app in Spanish formatted for a user in Mexico) or `es-ES` (indicating an app in Spanish formatted for a user in Spain)."},"push_enabled":{"type":"string","description":"If `\"true\"`, the device is opted-in and can receive push notifications.","enum":["true","false"]}},"additionalProperties":{"x-additionalPropertiesName":"Custom Device Attributes","description":"Custom properties that you want to associate with the device.","type":"string"}}}}]}}}]},{"title":"delete_device","description":"Delete devices that belong to a person.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","device"],"properties":{"action":{"type":"string","description":"Delete a device from a person's profile.","enum":["delete_device"]},"device":{"description":"The device you want to remove.","type":"object","required":["token"],"properties":{"token":{"description":"The token of the device you want to remove.","type":"string"}}}}}]},{"type":"object","description":"Merge two people. You'll merge the `secondary` person into the `primary`. The primary profile remains after the merge and the secondary is deleted. This operation is _not_ reversible. See our page on [merging duplicate people](/merge-people/) for more information.\n","required":["type","primary","secondary","action"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"action":{"type":"string","description":"Merge two people. You'll merge the `secondary` person into the `primary`. The primary profile remains after the merge and the secondary is deleted. This operation is _not_ reversible. See our page on [merging duplicate people](/merge-people/) for more information.\n","enum":["merge"]},"primary":{"description":"The person that you want to remain after the merge, identified by one of `id`, `email`, or `cio_id`. This person receives information from the secondary person in the merge. \n \nIf email is disabled as an identifier in your [workspace settings](https://fly.customer.io/workspaces/last/settings/edit), then you must reference people by `id` or `cio_id`. Under How to Modify, `id` must be set to \"Reference people by cio_id\" for a successful merge. \n","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]},"secondary":{"description":"The person that you want to delete after the merge, identified by one of `id`, `email`, or `cio_id`. This person's information is merged into the primary person's profile and then it is deleted.\n \nIf email is disabled as an identifier in your [workspace settings](https://fly.customer.io/workspaces/last/settings/edit), then you must reference people by `id` or `cio_id`. Under How to Modify, `id` must be set to \"Reference people by cio_id\" for a successful merge.\n","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"title":"suppress","description":"Suppress a person's identifier(s) in Customer.io, so that you can't message a person or add their identifiers back to your workspace. This is separate from suppressions performed by your email provider.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Suppress a person's identifier(s) in Customer.io, so that you can't message a person or add their identifiers back to your workspace. This is separate from suppressions performed by your email provider.","enum":["suppress"]}}}]},{"title":"unsuppress","description":"Unsuppress a person's identifier(s) in Customer.io, so that you can message a person or add their identifiers back to your workspace. This does not unsuppress addresses that were previously suppressed by your email provider.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Unsuppress a person's identifier(s) in Customer.io, so that you can message a person or add their identifiers back to your workspace. This does not unsuppress addresses that were previously suppressed by your email provider.","enum":["unsuppress"]}}}]}],"discriminator":{"propertyName":"action","mapping":{"identify":"#/components/schemas/identify_person","delete":"#/components/schemas/person_delete","event":"#/components/schemas/person_event","screen":"#/components/schemas/person_screen","page":"#/components/schemas/person_page","add_relationships":"#/components/schemas/person_add_relationships","delete_relationships":"#/components/schemas/person_delete_relationships","add_device":"#/components/schemas/person_add_device","delete_device":"#/components/schemas/person_delete_device","merge":"#/components/schemas/person_merge","suppress":"#/components/schemas/person_suppress","unsuppress":"#/components/schemas/person_unsuppress"}}},"person_common":{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},"person_attributes":{"type":"object","description":"Attributes that you want to add or update for this person.","properties":{"cio_subscription_preferences":{"description":"Stores your audience's subscription preferences if you enable our [subscription center](/subscription-center/) feature. These items are set automatically when people use the unsubscribe link in your messages, but you can set preferences outside the subscription flow. To update select topic preferences while preserving those set for other topics, use JSON dot notation `\"cio_subscription_preferences.topics.topic_\":`.","type":"object","properties":{"topics":{"type":"object","description":"Contains active topics in your workspace, named `topic_`.","additionalProperties":{"x-additionalPropertiesName":"topic_","description":"Each property is a boolean named `topic_`. Topic `id` values begin at `1` and increment for each new topic. You can find your topic ids in [Workspace Settings](https://fly.customer.io/workspaces/last/settings/subscription_center/topics) or by querying our [App API](https://customer.io/api/app/#operation/getTopics). For each boolean, `true` means that a person is subscribed to the topic; false means they are unsubscribed. An empty or missing value reverts to the default preference for the topic (opt-in or opt-out).","type":"boolean"}}},"example":{"topics":{"topic_1":true,"topic_2":false,"topic_3":true}}}}},"object_relationships":{"type":"array","description":"Each object in the array represents a relationship you want to add to, or remove from, a person.","items":{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","properties":{"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"},"example":{"role":"admin"}}}}]}},"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"},"example":{"role":"admin"}},"object_attributes":{"type":"object","description":"The data that belongs to the object. This is information you might want to associate with people later (through `cio_relationships`). Passing `null` or an empty string removes the attribute from the object. Some attributes have special meaning. Please refer to the list of [reserved attributes](/journeys/objects-create/#reserved-attributes).\n"},"object_common_identify":{"type":"object","required":["type","identifiers"],"properties":{"identifiers":{"description":"The identifiers for a custom object. When identifying a new object, you *must* use both the `object_type_id` and `object_id` (where `object_type_id` is an integer representing the type of object and the `object_id` is the individual identifier for the object).\n\nIf you're updating an existing object, you can use either the `object_type_id` and `object_id` or the `cio_object_id` (where `cio_object_id` is an immutable unique value that Customer.io sets for an object when you create it).\n","oneOf":[{"title":"Object ID (create and update)","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID (updates only)","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]},"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}},"object_common":{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","required":["type"],"properties":{"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}}]},"v2_cio_relationships":{"type":"array","description":"The people you want to associate with an object. Each object in the array represents a person.","items":{"type":"object","properties":{"identifiers":{"oneOf":[{"title":"id","type":"object","properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]},"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"}}},"example":{"identifiers":{"id":"42"},"relationship_attributes":{"role":"admin","date_created":1702480414}}}},"v1_cio_relationships":{"type":"object","description":"Describes relationships to an entity—a non-person object in Customer.io, like a company, educational course, job board, etc.","properties":{"action":{"type":"string","description":"This determines whether the `relationships` array adds relationships to a person or removes them from a person.","enum":["add_relationships","delete_relationships"]},"relationships":{"type":"array","description":"Each object in the array represents a relationship you want to add to, or remove from, a person.","items":{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","properties":{"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"},"example":{"role":"admin"}}}}]}}}},"object_identify":{"type":"object","title":"identify","description":"The `action` determines the type of operation you want to perform with an object. If `identifiers.object_id` does not exist, we'll create a new object; if it exists, we'll update the object accordingly.\n","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"identifiers":{"description":"The identifiers for a custom object. When identifying a new object, you *must* use both the `object_type_id` and `object_id` (where `object_type_id` is an integer representing the type of object and the `object_id` is the individual identifier for the object).\n\nIf you're updating an existing object, you can use either the `object_type_id` and `object_id` or the `cio_object_id` (where `cio_object_id` is an immutable unique value that Customer.io sets for an object when you create it).\n","oneOf":[{"title":"Object ID (create and update)","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID (updates only)","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]},"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Indicates that the operation will `identify` the the item of the specified `type`.","enum":["identify"]},"attributes":{"type":"object","description":"The data that belongs to the object. This is information you might want to associate with people later (through `cio_relationships`). Passing `null` or an empty string removes the attribute from the object. Some attributes have special meaning. Please refer to the list of [reserved attributes](/journeys/objects-create/#reserved-attributes).\n"},"cio_relationships":{"type":"array","description":"The people you want to associate with an object. Each object in the array represents a person.","items":{"type":"object","properties":{"identifiers":{"oneOf":[{"title":"id","type":"object","properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]},"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"}}},"example":{"identifiers":{"id":"42"},"relationship_attributes":{"role":"admin","date_created":1702480414}}}}}}]},"object_identify_anonymous":{"title":"identify_anonymous","description":"The `identify_anonymous` action lets you relate an object to a person who hasn't yet identified themselves by anonymous_id. When you identify the person, their anonymous relationship will carry over to the identified profile.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"identifiers":{"description":"The identifiers for a custom object. When identifying a new object, you *must* use both the `object_type_id` and `object_id` (where `object_type_id` is an integer representing the type of object and the `object_id` is the individual identifier for the object).\n\nIf you're updating an existing object, you can use either the `object_type_id` and `object_id` or the `cio_object_id` (where `cio_object_id` is an immutable unique value that Customer.io sets for an object when you create it).\n","oneOf":[{"title":"Object ID (create and update)","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID (updates only)","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]},"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Indicates that the operation will `identify` the item of the specified `type` and relate it to an `anonymous_id`.","enum":["identify_anonymous"]},"attributes":{"type":"object","description":"The data that belongs to the object. This is information you might want to associate with people later (through `cio_relationships`). Passing `null` or an empty string removes the attribute from the object. Some attributes have special meaning. Please refer to the list of [reserved attributes](/journeys/objects-create/#reserved-attributes).\n"},"cio_relationships":{"type":"array","description":"The anonymous people you want to associate with an object. Each object in the array contains an `anonymous_id` representing a person you haven't yet identified by `id` or `email`.","items":{"type":"object","properties":{"identifiers":{"type":"object","properties":{"anonymous_id":{"type":"string","description":"An identifier for an anonymous event, like a cookie. If set as an attribute on a person, any events bearing the same anonymous value are associated with this person. This value must be unique and is not reusable."}}},"relationship_attributes":{"type":"object","description":"Coming October 2023 - The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship."}}}}}}]},"object_add_relationships":{"title":"add_relationships","description":"Add relationships between an object and one or more people.","allOf":[{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","required":["type"],"properties":{"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}}]},{"type":"object","required":["action","cio_relationships"],"properties":{"action":{"type":"string","description":"This operation associates an object with one or more people.","enum":["add_relationships"]},"cio_relationships":{"type":"array","description":"The people you want to associate with an object. Each object in the array represents a person.","items":{"type":"object","properties":{"identifiers":{"oneOf":[{"title":"id","type":"object","properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]},"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"}}},"example":{"identifiers":{"id":"42"},"relationship_attributes":{"role":"admin","date_created":1702480414}}}}}}]},"person_add_relationships":{"title":"add_relationships","description":"Associate multiple objects with a person.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","cio_relationships"],"properties":{"action":{"type":"string","description":"This operation associates a person with one or more objects.","enum":["add_relationships"]},"cio_relationships":{"type":"array","description":"Each object in the array represents a relationship you want to add to, or remove from, a person.","items":{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","properties":{"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"},"example":{"role":"admin"}}}}]}}}}]},"object_delete_relationships":{"title":"delete_relationships","description":"Delete relationships between an object and one or more people.","allOf":[{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","required":["type"],"properties":{"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}}]},{"type":"object","required":["action","cio_relationships"],"properties":{"action":{"type":"string","description":"This operation deletes an object relationship from one or more people.","enum":["delete_relationships"]},"cio_relationships":{"type":"array","description":"The people you want to associate with an object. Each object in the array represents a person.","items":{"type":"object","properties":{"identifiers":{"oneOf":[{"title":"id","type":"object","properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]},"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"}}},"example":{"identifiers":{"id":"42"},"relationship_attributes":{"role":"admin","date_created":1702480414}}}}}}]},"person_delete_relationships":{"title":"delete_relationships","description":"Remove multiple object relationships from a person.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","cio_relationships"],"properties":{"action":{"type":"string","description":"This operation deletes an object relationship from one or more people.","enum":["delete_relationships"]},"cio_relationships":{"type":"array","description":"Each object in the array represents a relationship you want to add to, or remove from, a person.","items":{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","properties":{"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"},"example":{"role":"admin"}}}}]}}}}]},"object_delete":{"title":"delete","description":"Delete an object. This also removes relationships from people.\n","allOf":[{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","required":["type"],"properties":{"type":{"description":"The operation modifies a single object—non person data.","type":"string","enum":["object"]}}}]},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Indicates that the operation will `delete` the the item of the specified `type`.","enum":["delete"]}}}]},"identify_person":{"title":"identify","description":"Add or update a person.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Indicates that the operation will `identify` the the item of the specified `type`.","enum":["identify"]},"attributes":{"type":"object","description":"Attributes that you want to add or update for this person.","properties":{"cio_subscription_preferences":{"description":"Stores your audience's subscription preferences if you enable our [subscription center](/subscription-center/) feature. These items are set automatically when people use the unsubscribe link in your messages, but you can set preferences outside the subscription flow. To update select topic preferences while preserving those set for other topics, use JSON dot notation `\"cio_subscription_preferences.topics.topic_\":`.","type":"object","properties":{"topics":{"type":"object","description":"Contains active topics in your workspace, named `topic_`.","additionalProperties":{"x-additionalPropertiesName":"topic_","description":"Each property is a boolean named `topic_`. Topic `id` values begin at `1` and increment for each new topic. You can find your topic ids in [Workspace Settings](https://fly.customer.io/workspaces/last/settings/subscription_center/topics) or by querying our [App API](https://customer.io/api/app/#operation/getTopics). For each boolean, `true` means that a person is subscribed to the topic; false means they are unsubscribed. An empty or missing value reverts to the default preference for the topic (opt-in or opt-out).","type":"boolean"}}},"example":{"topics":{"topic_1":true,"topic_2":false,"topic_3":true}}}}},"cio_relationships":{"type":"array","description":"Each object in the array represents a relationship you want to add to, or remove from, a person.","items":{"allOf":[{"type":"object","properties":{"identifiers":{"description":"The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.","oneOf":[{"title":"Object ID","type":"object","required":["object_type_id","object_id"],"properties":{"object_type_id":{"type":"string","description":"The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.","nullable":false,"example":"1"},"object_id":{"type":"string","description":"The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.","nullable":false,"example":"acme"}}},{"title":"CIO Object ID","type":"object","required":["cio_object_id"],"properties":{"cio_object_id":{"type":"string","description":"A unique value that Customer.io sets for an object when you create it. This ID is immutable.","example":"obb7fd050101"}}}]}}},{"type":"object","properties":{"relationship_attributes":{"type":"object","description":"The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n","additionalProperties":{"x-additionalPropertiesName":"Relationship Attributes"},"example":{"role":"admin"}}}}]}}}}]},"person_delete":{"title":"delete","description":"Delete a person from your workspace.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Indicates that the operation will `delete` the the item of the specified `type`.","enum":["delete"]}}}]},"person_add_device":{"title":"add_device","description":"Assign devices to a person.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","device"],"properties":{"action":{"type":"string","description":"Add a mobile device to a person's profile.","enum":["add_device"]},"device":{"description":"The properties representing an individual device. [Our SDK's](/sdk/) gather all the properties defined below automatically, unless you disable the `autoTrackDeviceAttributes` setting. You can reference the properties outside the `attributes` object in segments.","allOf":[{"type":"object","required":["token"],"properties":{"token":{"description":"The device token.","type":"string"}}},{"type":"object","description":"Device information common to the v1 and v2 APIs.","required":["platform"],"properties":{"last_used":{"type":"integer","format":"unix timestamp","description":"The `timestamp` when you last identified this device. If you don't pass a timestamp when you add or update a device, we use the time of the request itself. Our SDKs identify a device when a person launches their app."},"platform":{"type":"string","enum":["ios","android"],"description":"The device/messaging platform."},"attributes":{"type":"object","description":"Attributes that you can reference to segment your audience—like a person's attributes, but specific to a device. These can be either the attributes defined below or custom key-value attributes.","properties":{"device_os":{"type":"string","description":"The operating system, including the version, on the device."},"device_model":{"type":"string","description":"The model of the device a person uses."},"app_version":{"type":"string","description":"The version of your app that a customer uses. You might target app versions to let people know when they need to update, or expose them to new features when they do."},"cio_sdk_version":{"type":"string","description":"The version of the Customer.io SDK in the app."},"_last_status":{"type":"string","readOnly":true,"description":"The delivery status of the last message sent to the device—sent, bounced, or suppressed. An empty string indicates that that the device hasn't received a push yet.","enum":["","bounced","sent","suppressed"]},"device_locale":{"type":"string","description":"The four-letter [IETF language code](/localization/#supported-languages) for the device. For example, `en-MX` (indicating an app in Spanish formatted for a user in Mexico) or `es-ES` (indicating an app in Spanish formatted for a user in Spain)."},"push_enabled":{"type":"string","description":"If `\"true\"`, the device is opted-in and can receive push notifications.","enum":["true","false"]}},"additionalProperties":{"x-additionalPropertiesName":"Custom Device Attributes","description":"Custom properties that you want to associate with the device.","type":"string"}}}}]}}}]},"person_delete_device":{"title":"delete_device","description":"Delete devices that belong to a person.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","device"],"properties":{"action":{"type":"string","description":"Delete a device from a person's profile.","enum":["delete_device"]},"device":{"description":"The device you want to remove.","type":"object","required":["token"],"properties":{"token":{"description":"The token of the device you want to remove.","type":"string"}}}}}]},"person_suppress":{"title":"suppress","description":"Suppress a person's identifier(s) in Customer.io, so that you can't message a person or add their identifiers back to your workspace. This is separate from suppressions performed by your email provider.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Suppress a person's identifier(s) in Customer.io, so that you can't message a person or add their identifiers back to your workspace. This is separate from suppressions performed by your email provider.","enum":["suppress"]}}}]},"person_unsuppress":{"title":"unsuppress","description":"Unsuppress a person's identifier(s) in Customer.io, so that you can message a person or add their identifiers back to your workspace. This does not unsuppress addresses that were previously suppressed by your email provider.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"Unsuppress a person's identifier(s) in Customer.io, so that you can message a person or add their identifiers back to your workspace. This does not unsuppress addresses that were previously suppressed by your email provider.","enum":["unsuppress"]}}}]},"person_merge":{"type":"object","description":"Merge two people. You'll merge the `secondary` person into the `primary`. The primary profile remains after the merge and the secondary is deleted. This operation is _not_ reversible. See our page on [merging duplicate people](/merge-people/) for more information.\n","required":["type","primary","secondary","action"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"action":{"type":"string","description":"Merge two people. You'll merge the `secondary` person into the `primary`. The primary profile remains after the merge and the secondary is deleted. This operation is _not_ reversible. See our page on [merging duplicate people](/merge-people/) for more information.\n","enum":["merge"]},"primary":{"description":"The person that you want to remain after the merge, identified by one of `id`, `email`, or `cio_id`. This person receives information from the secondary person in the merge. \n \nIf email is disabled as an identifier in your [workspace settings](https://fly.customer.io/workspaces/last/settings/edit), then you must reference people by `id` or `cio_id`. Under How to Modify, `id` must be set to \"Reference people by cio_id\" for a successful merge. \n","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]},"secondary":{"description":"The person that you want to delete after the merge, identified by one of `id`, `email`, or `cio_id`. This person's information is merged into the primary person's profile and then it is deleted.\n \nIf email is disabled as an identifier in your [workspace settings](https://fly.customer.io/workspaces/last/settings/edit), then you must reference people by `id` or `cio_id`. Under How to Modify, `id` must be set to \"Reference people by cio_id\" for a successful merge.\n","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},"person_event":{"description":"A custom event attributed to a person. You can use events to trigger campaigns, or reference event information using liquid in your messages.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","description":"A custom event attributed to the specified person.","enum":["event"]},"id":{"type":"string","format":"ULID","description":"A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id."},"name":{"type":"string","description":"The name of the event. This is how you'll find your event in Customer.io or select it when using events as campaign triggers."},"timestamp":{"type":"integer","description":"The Unix timestamp when the event happened."},"attributes":{"type":"object","description":"Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.\n","additionalProperties":{"x-additionalPropertiesName":"liquid merge data","description":"Insert key-values that you want to reference in your message here."},"properties":{"recipient":{"type":"string","format":"email","description":"The email address of the person associated with the event, overriding the `to` field in emails triggered by the event."},"from_address":{"type":"string","format":"email","description":"The address you want to trigger messages from, overriding the `from` field in emails triggered by the event."},"reply_to":{"type":"string","format":"email","description":"The address you want to receive replies to, overriding the `reply to` field for emails triggered by the event."}}}}}]},"person_screen":{"description":"A mobile \"screenview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","description":"A mobile \"screenview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.","enum":["screen"]},"id":{"type":"string","format":"ULID","description":"A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id."},"name":{"type":"string","description":"The name of the screen a person visited. This is how you'll find and select screen view events in Customer.io."},"timestamp":{"type":"integer","description":"The Unix timestamp when the event happened."},"attributes":{"type":"object","description":"Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.","additionalProperties":{"x-additionalPropertiesName":"liquid merge data","description":"Insert key-values that you want to reference in your message here."}}}}]},"person_page":{"description":"A web \"pageview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.","allOf":[{"type":"object","required":["type","identifiers"],"properties":{"type":{"description":"The operation modifies a person in Customer.io","type":"string","enum":["person"]},"identifiers":{"description":"The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.","oneOf":[{"title":"id","type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The ID of a customer profile, analogous to a \"person\" in the UI.","example":"42"}}},{"title":"email","type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email address of the customer.","example":"test@example.com"}}},{"title":"cio_id","type":"object","required":["cio_id"],"properties":{"cio_id":{"type":"string","description":"A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.","example":"a3000001"}}}]}}},{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","description":"A web \"pageview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.","enum":["screen"]},"id":{"type":"string","format":"ULID","description":"A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id."},"name":{"type":"string","description":"The name of the page or page path that a person visited. This is how you'll find and select page view events in Customer.io."},"timestamp":{"type":"integer","description":"The Unix timestamp when the event happened."},"attributes":{"type":"object","description":"Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.","additionalProperties":{"x-additionalPropertiesName":"liquid merge data","description":"Insert key-values that you want to reference in your message here."}}}}]},"track-metrics":{"description":"The base properties shared across multiple metric types.","type":"object","required":["delivery_id"],"properties":{"delivery_id":{"type":"string","description":"The CIO-Delivery-ID from the notification that you want to associate the `event` with.","example":"RPILAgUBcRhIBqSfeiIwdIYJKxTY"},"timestamp":{"type":"integer","format":"unix timestamp","description":"The unix timestamp when the event occurred.","example":1613063089}}},"delivery_operations":{"title":"Delivery","description":"The \"delivery\" type lets you attribute metrics to messages that don't self-report back to Customer.io, like push and in-app notifications.","type":"object","required":["type","action","identifiers","name","attributes"],"properties":{"type":{"type":"string","description":"The \"delivery\" type lets you attribute metrics to messages that don't self-report back to Customer.io, like push and in-app notifications.","enum":["delivery"]},"action":{"type":"string","description":"An `event` action indicates a delivery event. Use the `name` to determine the specific metric that you want to attribute to this delivery.","enum":["event"]},"identifiers":{"type":"object","description":"Contains identifiers for the delivery itself.","properties":{"id":{"type":"string","description":"The `delivery_id` for the delivery that you want to attribute metrics to."}}},"name":{"type":"string","description":"The name of the metric you want to attribute to this \"delivery\".","enum":["opened","converted","delivered"]},"attributes":{"type":"object","required":["device_token"],"description":"Contains information about the delivery and the individual who received the message.","properties":{"device_token":{"type":"string","description":"The device that received the message."}}}}},"cio_subscription_preferences":{"description":"Stores your audience's subscription preferences if you enable our [subscription center](/subscription-center/) feature. These items are set automatically when people use the unsubscribe link in your messages, but you can set preferences outside the subscription flow. To update select topic preferences while preserving those set for other topics, use JSON dot notation `\"cio_subscription_preferences.topics.topic_\":`.","type":"object","properties":{"topics":{"type":"object","description":"Contains active topics in your workspace, named `topic_`.","additionalProperties":{"x-additionalPropertiesName":"topic_","description":"Each property is a boolean named `topic_`. Topic `id` values begin at `1` and increment for each new topic. You can find your topic ids in [Workspace Settings](https://fly.customer.io/workspaces/last/settings/subscription_center/topics) or by querying our [App API](https://customer.io/api/app/#operation/getTopics). For each boolean, `true` means that a person is subscribed to the topic; false means they are unsubscribed. An empty or missing value reverts to the default preference for the topic (opt-in or opt-out).","type":"boolean"}}},"example":{"topics":{"topic_1":true,"topic_2":false,"topic_3":true}}},"workspace":{"description":"Contains workspace properties including the count of messages, people, and objects. Customer.io caches these counts, so your data may be up to two hours old.","type":"object","properties":{"id":{"type":"integer","description":"The id of the workspace.","example":"13XXXX"},"name":{"type":"string","description":"The name of the workspace.","example":"Workspace 1"},"messages_sent":{"type":"integer","description":"The count of [messages sent](/journeys/message-statuses/#sent) via any channel (email, SMS, in-app, push, slack) in the current billing period.","example":100202},"billable_messages_sent":{"type":"integer","description":"The count of [emails sent](/journeys/message-statuses/#sent) that are considered for billing in your current billing period. Ultimately, we only bill for the overages on your plan.","example":75124},"people":{"type":"integer","description":"The current count of people profiles in the workspace. Updates roughly every hour.","example":25666},"object_types":{"type":"integer","description":"The current count of object types in the workspace. Updates roughly every hour.","example":4},"objects":{"type":"integer","description":"The current count of object profiles in the workspace. Updates roughly every hour.","example":10}}},"campaign_actions":{"type":"array","description":"An array of actions contained within the campaign.","items":{"type":"object","properties":{"type":{"type":"string","description":"The action type.","example":"email"},"id":{"type":"integer","description":"The identifier for the action.","example":259}}}},"campaign_name":{"type":"string","description":"The name of the campaign.","readOnly":true},"active":{"type":"boolean","description":"If true, the campaign is active and can still send messages."},"state":{"type":"string","description":"The status of the campaign.","enum":["running","draft","stopped"]},"first_started":{"type":"integer","format":"unix timestamp","description":"The date and time when you first started the campaign and it first became eligible to be triggered.","example":1552341937},"tags":{"type":"array","description":"An array of tags you set on this campaign.","items":{"type":"string"},"example":["new","welcome"]},"filter_segment_ids":{"description":"A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.","type":"array","items":{"type":"integer"},"example":[21,42]},"object_type_id_trigger":{"description":"The the object type ID of the trigger.","type":"integer"},"filter_object_attributes":{"description":"A list of object attributes used in the campaign filter, returned if the campaign audience was filtered on one or more object attributes.","type":"string","example":"{\"and\":[{\"object_attribute\":{\"type_id\":1,\"field\":\"name\",\"operator\":\"eq\",\"value\":\"sfa\"}},{\"object_attribute\":{\"type_id\":1,\"field\":\"renewal_date\",\"operator\":\"eq\",\"value\":\"sdfs\"}}]}"},"filter_relationship_attributes":{"description":"A list of relationship attributes used in the campaign filter, returned if the campaign audience was filtered on one or more relationship attributes.","type":"string","example":"{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"email\",\"operator\":\"eq\",\"value\":\"dscs@test.com\"}},{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"false\"}}]}"}},"responses":{"200":{"description":"A successful request returns an empty object response."},"204":{"description":"Success. No content."},"400":{"description":"Invalid or malformed request.","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"errors":{"type":"array","description":"An array of errors.","items":{"type":"string","description":"Error descriptions."}}}}}}}}},"401":{"description":"Unauthorized request. Make sure that you provided the right credentials."},"404":{"description":"The campaign and/or action do not exist."},"429":{"description":"Your request is over the 10-per-second limit."},"400-campaigns":{"description":"The `campaignID` or `actionID` is invalid."},"400-campaigns-lang":{"description":"The `campaignID` or `actionID` is invalid. It could also be that the `language` requested does not exist for this action."},"400-broadcasts":{"description":"The `broadcastID`, `actionID` or `triggerID` is invalid."},"400-broadcasts-lang":{"description":"The `broadcastID`, `actionID` or `triggerID` is invalid. Or the `language` does not exist for this action."},"404-broadcasts":{"description":"The broadcast, action, and/or trigger do not exist."},"segment_404":{"description":"The segment does not exist. Check the segment ID and try again.","content":{"application/json":{"schema":{"type":"string","example":"Segment not found"}}}}},"securitySchemes":{"Tracking-API-Key":{"type":"http","scheme":"basic","description":"The Track API uses a basic authentication scheme. Your credentials are your **Site ID** and your **API key**, **Base-64 encoded** in the format `site_id:api_key`.\n\nYou can find your Site ID and API key on the [Track API Keys page](https://fly.customer.io/settings/api_credentials).\n"}}},"x-tagGroups":[{"name":"Track v2 API","tags":["track_v2","Person Schemas","Object Schemas","Delivery Schema"]},{"name":"Track v1 API","tags":["Track v1 Overview","trackRegion","Track Customers","Track Events","Forms","Track Segments"]}]}},"options":{"disableSearch":true,"scrollYOffset":20,"nativeScrollbars":true,"hideDownloadButton":false,"downloadFileName":"cio-journeys-track-api","simpleOneOfTypeLabel":true,"hideSchemaTitles":true,"requiredPropsFirst":true,"expandSingleSchemaField":true,"schemaExpansionLevel":1,"jsonSampleExpandLevel":3,"maxDisplayedEnumValues":6,"pathInMiddlePanel":true,"theme":{"spacing":{"unit":3,"sectionVertical":"15"},"colors":{"tonalOffset":0.2,"primary":{"main":"#3f4e50"},"success":{"main":"#e4ffce"},"warning":{"main":"#C5B200"},"error":{"main":"#900D5B"},"gray":{"50":"#F6F9FA","100":"#EBF0F1"},"text":{"primary":"#4B4B60"},"border":{"dark":"rgba(0,0,0, 0.1)","light":"#ffffff"},"responses":{"success":{"backgroundColor":"#E4FFCE","color":"#00320a"},"error":{"color":"#590909","backgroundColor":"#FDE6E6"}},"http":{"get":"#31A0A8","post":"#5D8DFF","put":"#F36615","options":"#947014","patch":"#bf581d","delete":"#DC1A8E","basic":"#707070","link":"#07818F","head":"#A23DAD"}},"schema":{"defaultDetailsWidth":"75%","labelsTextSize":"1em","nestingSpacing":"1em","nestedBackground":"#fafafa","arrow":{"size":"1.1em"}},"typography":{"fontSize":"14px","lineHeight":"1.5em","fontWeightRegular":"400","fontWeightBold":"600 !important","fontWeightLight":"300","font-family":"Saans, 'Instrument Sans', Helvetica","smoothing":"antialiased","optimizeSpeed":true,"headings":{"font-family":"Saans, 'Instrument Sans', Helvetica","fontWeight":"bold !important","lineHeight":"1.6em !important"},"code":{"fontSize":"14px !important","fontFamily":"Menlo, Monaco, Consolas, Liberation Mono, Courier, Monospace","color":"#900D5B","backgroundColor":"#f6f9fa","wrap":false},"links":{"color":"#331673"}},"sidebar":{"width":"260px","backgroundColor":"#f6f9fa","textColor":"#3f4e50","groupItems":{"textTransform":"uppercase"},"level1Items":{"textTransform":"none !important"},"level2Items":{"textTransform":"none !important"},"arrow":{"size":"1.5em"}},"logo":{"gutter":"25px"},"rightPanel":{"backgroundColor":"#3b454e","width":"40%","textColor":"#ffffff"}}}}; var container = document.getElementById('redoc'); Redoc.hydrate(__redoc_state, container);;