object apnsWithSdk
{
  "type": "object",
  "properties": {
    "CIO": {
      "type": "object",
      "required": [
        "push"
      ],
      "properties": {
        "push": {
          "type": "object",
          "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."
            }
          },
          "description": "Describes push notification options supported by the CIO SDK."
        }
      },
      "description": "Contains options supported by the Customer.io SDK."
    },
    "aps": {
      "type": "object",
      "properties": {
        "alert": {
          "oneOf": [
            {
              "type": "string",
              "title": "Simple alert",
              "description": "A simple alert message."
            },
            {
              "type": "object",
              "title": "Complex alert",
              "properties": {
                "body": {
                  "type": "string",
                  "description": "The body of your push notification."
                },
                "title": {
                  "type": "string",
                  "description": "The title of your push notification."
                },
                "loc-key": {
                  "type": "string",
                  "description": "The key for a localized message string in your app’s Localizable.strings file."
                },
                "loc-args": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "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."
                },
                "subtitle": {
                  "type": "string",
                  "description": "Additional information that explains the purpose of the notification."
                },
                "launch-image": {
                  "type": "string",
                  "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."
                },
                "title-loc-key": {
                  "type": "string",
                  "description": "The key for a localized title string in your app’s Localizable.strings files."
                },
                "title-loc-args": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "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."
                },
                "subtitle-loc-key": {
                  "type": "string",
                  "description": "The key for a localized subtitle string in your app’s Localizable.strings file."
                },
                "subtitle-loc-args": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "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."
                }
              }
            }
          ]
        },
        "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": [
            {
              "type": "string",
              "title": "Regular alert",
              "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."
            },
            {
              "type": "object",
              "title": "Critical alert",
              "properties": {
                "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."
                },
                "critical": {
                  "type": "integer",
                  "description": "1 indicates critical. 0 is not critical."
                }
              }
            }
          ]
        },
        "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."
        },
        "thread-id": {
          "type": "string",
          "description": "An identifier to group related notifications."
        },
        "mutable-content": {
          "type": "integer",
          "description": "The notification service app extension flag. If 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."
        },
        "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."
        },
        "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."
        },
        "target-content-id": {
          "type": "string",
          "description": "The identifier of the window brought forward."
        },
        "interruption-level": {
          "enum": [
            "passive",
            "active",
            "time-sensitive",
            "critical"
          ],
          "type": "string",
          "description": "Indicates the importance and delivery timing of a notification."
        }
      },
      "description": "A push payload intended for an iOS device."
    }
  }
}
object apnsWithoutSdk
{
  "type": "object",
  "properties": {
    "aps": {
      "type": "object",
      "properties": {
        "alert": {
          "oneOf": [
            {
              "type": "string",
              "title": "Simple alert",
              "description": "A simple alert message."
            },
            {
              "type": "object",
              "title": "Complex alert",
              "properties": {
                "body": {
                  "type": "string",
                  "description": "The body of your push notification."
                },
                "title": {
                  "type": "string",
                  "description": "The title of your push notification."
                },
                "loc-key": {
                  "type": "string",
                  "description": "The key for a localized message string in your app’s Localizable.strings file."
                },
                "loc-args": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "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."
                },
                "subtitle": {
                  "type": "string",
                  "description": "Additional information that explains the purpose of the notification."
                },
                "launch-image": {
                  "type": "string",
                  "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."
                },
                "title-loc-key": {
                  "type": "string",
                  "description": "The key for a localized title string in your app’s Localizable.strings files."
                },
                "title-loc-args": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "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."
                },
                "subtitle-loc-key": {
                  "type": "string",
                  "description": "The key for a localized subtitle string in your app’s Localizable.strings file."
                },
                "subtitle-loc-args": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "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."
                }
              }
            }
          ]
        },
        "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": [
            {
              "type": "string",
              "title": "Regular alert",
              "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."
            },
            {
              "type": "object",
              "title": "Critical alert",
              "properties": {
                "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."
                },
                "critical": {
                  "type": "integer",
                  "description": "1 indicates critical. 0 is not critical."
                }
              }
            }
          ]
        },
        "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."
        },
        "thread-id": {
          "type": "string",
          "description": "An identifier to group related notifications."
        },
        "mutable-content": {
          "type": "integer",
          "description": "The notification service app extension flag. If 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."
        },
        "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."
        },
        "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."
        },
        "target-content-id": {
          "type": "string",
          "description": "The identifier of the window brought forward."
        },
        "interruption-level": {
          "enum": [
            "passive",
            "active",
            "time-sensitive",
            "critical"
          ],
          "type": "string",
          "description": "Indicates the importance and delivery timing of a notification."
        }
      },
      "description": "A push payload intended for an iOS device."
    }
  }
}
object apsBasicPush
{
  "type": "object",
  "required": [
    "aps"
  ],
  "properties": {
    "CIO": {
      "type": "object",
      "required": [
        "push"
      ],
      "properties": {
        "push": {
          "type": "object",
          "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."
            }
          },
          "description": "Describes push notification options supported by the CIO SDK."
        }
      },
      "description": "Contains options supported by the Customer.io SDK."
    },
    "aps": {
      "type": "object",
      "required": [
        "alert"
      ],
      "properties": {
        "alert": {
          "type": "object",
          "required": [
            "body"
          ],
          "properties": {
            "body": {
              "type": "string",
              "description": "The body of your push notification."
            },
            "title": {
              "type": "string",
              "description": "The title of your push notification."
            }
          },
          "description": "An object containing the push title and body"
        }
      },
      "description": "A push payload intended for an iOS device."
    }
  }
}
object archivedMessageObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=",
      "readOnly": true,
      "description": "The identifier for a delivery—the instance of a message intended for an individual recipient."
    },
    "bcc": {
      "type": "string",
      "readOnly": true,
      "description": "The blind-copy address(es) for this action."
    },
    "url": {
      "type": "string",
      "example": "http://example.com/webhook",
      "description": "The URL of a webhook or action."
    },
    "body": {
      "type": "string",
      "example": "<!DOCTYPE html><html><head>\\n<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html; charset=UTF-8\\\"/><h1>Hello World</h1>\\n\\n</body></html>",
      "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor."
    },
    "from": {
      "type": "string",
      "example": "sentFrom@example.com",
      "readOnly": true,
      "description": "The address that the message is from, relevant if the action `type` is `email`."
    },
    "headers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "X-Mailgun-Tag",
            "description": "name of header"
          },
          "value": {
            "type": "string",
            "example": "tag-name-for-tracking",
            "description": "value of header"
          }
        }
      },
      "description": "Headers must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten."
    },
    "subject": {
      "type": "string",
      "example": "Did you get that thing I sent you?",
      "description": "The subject line for an `email` action."
    },
    "fake_bcc": {
      "type": "boolean",
      "readOnly": true,
      "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",
      "example": "replyto@example.com",
      "readOnly": true,
      "description": "The address that receives replies for the message, if applicable."
    },
    "forgotten": {
      "type": "boolean",
      "example": false,
      "description": "If true, Customer.io does not retain the message content."
    },
    "recipient": {
      "type": "string",
      "example": "person@example.com",
      "description": "The recipient address for an action."
    },
    "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."
    },
    "request_method": {
      "enum": [
        "GET",
        "POST",
        "PUT",
        "DELETE",
        "PATCH"
      ],
      "type": "string",
      "example": "POST",
      "description": "The method used in conjunction with a webhook `url`."
    }
  },
  "description": "An archived message, including a complete message body.\n"
}
array attachments
{
  "type": "array",
  "items": {
    "type": "object",
    "additionalProperties": {
      "type": "string",
      "format": "base64",
      "x-doNotRender": true,
      "x-additionalPropertiesName": "Attachment Names"
    }
  },
  "description": "A dictionary of attachments where the filename is the key and the value is the base64-encoded contents. The total size of all attachments must be less than 2 MB. Some filetype extensions are restricted.\n"
}
object attributeAudienceFilter
{
  "type": "object",
  "title": "attribute",
  "example": {
    "field": "unsubscribed",
    "value": true,
    "operator": "eq"
  },
  "required": [
    "field",
    "operator"
  ],
  "properties": {
    "field": {
      "type": "string",
      "example": "first_name",
      "description": "The name of the attribute you want to filter against."
    },
    "value": {
      "type": "string",
      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
    },
    "operator": {
      "enum": [
        "eq",
        "exists"
      ],
      "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."
    }
  },
  "description": "Filter your audience by attribute."
}
object attributeChangeAction
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "description": "The new attribute value."
    },
    "from": {
      "type": "string",
      "description": "The old attribute value. If empty, the customer probably didn't bear the attribute before this action."
    }
  }
}
object audienceFilter
{
  "oneOf": [
    {
      "type": "object",
      "title": "and",
      "properties": {
        "and": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "or": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "object",
                      "title": "segment",
                      "properties": {
                        "segment": {
                          "type": "object",
                          "title": "segment",
                          "properties": {
                            "id": {
                              "type": "integer",
                              "example": 4,
                              "description": "The ID of the segment you want to return people from."
                            }
                          },
                          "description": "Provide the `id` of a segment containing people you want to search for."
                        }
                      },
                      "description": "Filter for people who belong to a segment."
                    },
                    {
                      "type": "object",
                      "title": "audience",
                      "properties": {
                        "attribute": {
                          "type": "object",
                          "title": "attribute",
                          "example": {
                            "field": "unsubscribed",
                            "value": true,
                            "operator": "eq"
                          },
                          "required": [
                            "field",
                            "operator"
                          ],
                          "properties": {
                            "field": {
                              "type": "string",
                              "example": "first_name",
                              "description": "The name of the attribute you want to filter against."
                            },
                            "value": {
                              "type": "string",
                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                            },
                            "operator": {
                              "enum": [
                                "eq",
                                "exists"
                              ],
                              "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."
                            }
                          },
                          "description": "Filter your audience by attribute."
                        }
                      },
                      "description": "filter for people who have an attribute or an attribute value."
                    }
                  ]
                },
                "description": "Returns results matching *any* conditions."
              },
              "not": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "and",
                    "properties": {
                      "and": {
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "title": "segment",
                              "properties": {
                                "segment": {
                                  "type": "object",
                                  "title": "segment",
                                  "properties": {
                                    "id": {
                                      "type": "integer",
                                      "example": 4,
                                      "description": "The ID of the segment you want to return people from."
                                    }
                                  },
                                  "description": "Provide the `id` of a segment containing people you want to search for."
                                }
                              },
                              "description": "Filter for people who belong to a segment."
                            },
                            {
                              "type": "object",
                              "title": "audience",
                              "properties": {
                                "attribute": {
                                  "type": "object",
                                  "title": "attribute",
                                  "example": {
                                    "field": "unsubscribed",
                                    "value": true,
                                    "operator": "eq"
                                  },
                                  "required": [
                                    "field",
                                    "operator"
                                  ],
                                  "properties": {
                                    "field": {
                                      "type": "string",
                                      "example": "first_name",
                                      "description": "The name of the attribute you want to filter against."
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                    },
                                    "operator": {
                                      "enum": [
                                        "eq",
                                        "exists"
                                      ],
                                      "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."
                                    }
                                  },
                                  "description": "Filter your audience by attribute."
                                }
                              },
                              "description": "filter for people who have an attribute or an attribute value."
                            }
                          ]
                        },
                        "description": "Match *all* conditions to return results."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "or",
                    "properties": {
                      "or": {
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "title": "segment",
                              "properties": {
                                "segment": {
                                  "type": "object",
                                  "title": "segment",
                                  "properties": {
                                    "id": {
                                      "type": "integer",
                                      "example": 4,
                                      "description": "The ID of the segment you want to return people from."
                                    }
                                  },
                                  "description": "Provide the `id` of a segment containing people you want to search for."
                                }
                              },
                              "description": "Filter for people who belong to a segment."
                            },
                            {
                              "type": "object",
                              "title": "audience",
                              "properties": {
                                "attribute": {
                                  "type": "object",
                                  "title": "attribute",
                                  "example": {
                                    "field": "unsubscribed",
                                    "value": true,
                                    "operator": "eq"
                                  },
                                  "required": [
                                    "field",
                                    "operator"
                                  ],
                                  "properties": {
                                    "field": {
                                      "type": "string",
                                      "example": "first_name",
                                      "description": "The name of the attribute you want to filter against."
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                    },
                                    "operator": {
                                      "enum": [
                                        "eq",
                                        "exists"
                                      ],
                                      "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."
                                    }
                                  },
                                  "description": "Filter your audience by attribute."
                                }
                              },
                              "description": "filter for people who have an attribute or an attribute value."
                            }
                          ]
                        },
                        "description": "Match *any* condition to return results."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "segment",
                    "properties": {
                      "segment": {
                        "type": "object",
                        "title": "segment",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "example": 4,
                            "description": "The ID of the segment you want to return people from."
                          }
                        },
                        "description": "Provide the `id` of a segment containing people you want to search for."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "attribute",
                    "properties": {
                      "attribute": {
                        "type": "object",
                        "title": "attribute",
                        "example": {
                          "field": "unsubscribed",
                          "value": true,
                          "operator": "eq"
                        },
                        "required": [
                          "field",
                          "operator"
                        ],
                        "properties": {
                          "field": {
                            "type": "string",
                            "example": "first_name",
                            "description": "The name of the attribute you want to filter against."
                          },
                          "value": {
                            "type": "string",
                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                          },
                          "operator": {
                            "enum": [
                              "eq",
                              "exists"
                            ],
                            "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."
                          }
                        },
                        "description": "Filter your audience by attribute."
                      }
                    }
                  }
                ],
                "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
              },
              "segment": {
                "type": "object",
                "title": "segment",
                "properties": {
                  "id": {
                    "type": "integer",
                    "example": 4,
                    "description": "The ID of the segment you want to return people from."
                  }
                },
                "description": "Provide the `id` of a segment containing people you want to search for."
              },
              "attribute": {
                "type": "object",
                "title": "attribute",
                "example": {
                  "field": "unsubscribed",
                  "value": true,
                  "operator": "eq"
                },
                "required": [
                  "field",
                  "operator"
                ],
                "properties": {
                  "field": {
                    "type": "string",
                    "example": "first_name",
                    "description": "The name of the attribute you want to filter against."
                  },
                  "value": {
                    "type": "string",
                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                  },
                  "operator": {
                    "enum": [
                      "eq",
                      "exists"
                    ],
                    "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."
                  }
                },
                "description": "Filter your audience by attribute."
              }
            }
          },
          "description": "Match *all* conditions to return results."
        }
      }
    },
    {
      "type": "object",
      "title": "or",
      "properties": {
        "or": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "and": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "object",
                      "title": "segment",
                      "properties": {
                        "segment": {
                          "type": "object",
                          "title": "segment",
                          "properties": {
                            "id": {
                              "type": "integer",
                              "example": 4,
                              "description": "The ID of the segment you want to return people from."
                            }
                          },
                          "description": "Provide the `id` of a segment containing people you want to search for."
                        }
                      },
                      "description": "Filter for people who belong to a segment."
                    },
                    {
                      "type": "object",
                      "title": "audience",
                      "properties": {
                        "attribute": {
                          "type": "object",
                          "title": "attribute",
                          "example": {
                            "field": "unsubscribed",
                            "value": true,
                            "operator": "eq"
                          },
                          "required": [
                            "field",
                            "operator"
                          ],
                          "properties": {
                            "field": {
                              "type": "string",
                              "example": "first_name",
                              "description": "The name of the attribute you want to filter against."
                            },
                            "value": {
                              "type": "string",
                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                            },
                            "operator": {
                              "enum": [
                                "eq",
                                "exists"
                              ],
                              "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."
                            }
                          },
                          "description": "Filter your audience by attribute."
                        }
                      },
                      "description": "filter for people who have an attribute or an attribute value."
                    }
                  ]
                },
                "description": "Returns results matching *all* conditions."
              },
              "not": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "and",
                    "properties": {
                      "and": {
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "title": "segment",
                              "properties": {
                                "segment": {
                                  "type": "object",
                                  "title": "segment",
                                  "properties": {
                                    "id": {
                                      "type": "integer",
                                      "example": 4,
                                      "description": "The ID of the segment you want to return people from."
                                    }
                                  },
                                  "description": "Provide the `id` of a segment containing people you want to search for."
                                }
                              },
                              "description": "Filter for people who belong to a segment."
                            },
                            {
                              "type": "object",
                              "title": "audience",
                              "properties": {
                                "attribute": {
                                  "type": "object",
                                  "title": "attribute",
                                  "example": {
                                    "field": "unsubscribed",
                                    "value": true,
                                    "operator": "eq"
                                  },
                                  "required": [
                                    "field",
                                    "operator"
                                  ],
                                  "properties": {
                                    "field": {
                                      "type": "string",
                                      "example": "first_name",
                                      "description": "The name of the attribute you want to filter against."
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                    },
                                    "operator": {
                                      "enum": [
                                        "eq",
                                        "exists"
                                      ],
                                      "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."
                                    }
                                  },
                                  "description": "Filter your audience by attribute."
                                }
                              },
                              "description": "filter for people who have an attribute or an attribute value."
                            }
                          ]
                        },
                        "description": "Match *all* conditions to return results."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "or",
                    "properties": {
                      "or": {
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "title": "segment",
                              "properties": {
                                "segment": {
                                  "type": "object",
                                  "title": "segment",
                                  "properties": {
                                    "id": {
                                      "type": "integer",
                                      "example": 4,
                                      "description": "The ID of the segment you want to return people from."
                                    }
                                  },
                                  "description": "Provide the `id` of a segment containing people you want to search for."
                                }
                              },
                              "description": "Filter for people who belong to a segment."
                            },
                            {
                              "type": "object",
                              "title": "audience",
                              "properties": {
                                "attribute": {
                                  "type": "object",
                                  "title": "attribute",
                                  "example": {
                                    "field": "unsubscribed",
                                    "value": true,
                                    "operator": "eq"
                                  },
                                  "required": [
                                    "field",
                                    "operator"
                                  ],
                                  "properties": {
                                    "field": {
                                      "type": "string",
                                      "example": "first_name",
                                      "description": "The name of the attribute you want to filter against."
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                    },
                                    "operator": {
                                      "enum": [
                                        "eq",
                                        "exists"
                                      ],
                                      "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."
                                    }
                                  },
                                  "description": "Filter your audience by attribute."
                                }
                              },
                              "description": "filter for people who have an attribute or an attribute value."
                            }
                          ]
                        },
                        "description": "Match *any* condition to return results."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "segment",
                    "properties": {
                      "segment": {
                        "type": "object",
                        "title": "segment",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "example": 4,
                            "description": "The ID of the segment you want to return people from."
                          }
                        },
                        "description": "Provide the `id` of a segment containing people you want to search for."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "attribute",
                    "properties": {
                      "attribute": {
                        "type": "object",
                        "title": "attribute",
                        "example": {
                          "field": "unsubscribed",
                          "value": true,
                          "operator": "eq"
                        },
                        "required": [
                          "field",
                          "operator"
                        ],
                        "properties": {
                          "field": {
                            "type": "string",
                            "example": "first_name",
                            "description": "The name of the attribute you want to filter against."
                          },
                          "value": {
                            "type": "string",
                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                          },
                          "operator": {
                            "enum": [
                              "eq",
                              "exists"
                            ],
                            "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."
                          }
                        },
                        "description": "Filter your audience by attribute."
                      }
                    }
                  }
                ],
                "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
              },
              "segment": {
                "type": "object",
                "title": "segment",
                "properties": {
                  "id": {
                    "type": "integer",
                    "example": 4,
                    "description": "The ID of the segment you want to return people from."
                  }
                },
                "description": "Provide the `id` of a segment containing people you want to search for."
              },
              "attribute": {
                "type": "object",
                "title": "attribute",
                "example": {
                  "field": "unsubscribed",
                  "value": true,
                  "operator": "eq"
                },
                "required": [
                  "field",
                  "operator"
                ],
                "properties": {
                  "field": {
                    "type": "string",
                    "example": "first_name",
                    "description": "The name of the attribute you want to filter against."
                  },
                  "value": {
                    "type": "string",
                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                  },
                  "operator": {
                    "enum": [
                      "eq",
                      "exists"
                    ],
                    "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."
                  }
                },
                "description": "Filter your audience by attribute."
              }
            }
          },
          "description": "Match *any* condition to return results."
        }
      }
    },
    {
      "oneOf": [
        {
          "type": "object",
          "title": "and",
          "properties": {
            "and": {
              "type": "array",
              "items": {
                "type": "object",
                "title": "People Filter",
                "properties": {
                  "or": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "title": "segment",
                          "properties": {
                            "segment": {
                              "type": "object",
                              "title": "segment",
                              "properties": {
                                "id": {
                                  "type": "integer",
                                  "example": 4,
                                  "description": "The ID of the segment you want to return people from."
                                }
                              },
                              "description": "Provide the `id` of a segment containing people you want to search for."
                            }
                          },
                          "description": "Filter for people who belong to a segment."
                        },
                        {
                          "type": "object",
                          "title": "audience",
                          "properties": {
                            "attribute": {
                              "type": "object",
                              "title": "attribute",
                              "example": {
                                "field": "unsubscribed",
                                "value": true,
                                "operator": "eq"
                              },
                              "required": [
                                "field",
                                "operator"
                              ],
                              "properties": {
                                "field": {
                                  "type": "string",
                                  "example": "first_name",
                                  "description": "The name of the attribute you want to filter against."
                                },
                                "value": {
                                  "type": "string",
                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                },
                                "operator": {
                                  "enum": [
                                    "eq",
                                    "exists"
                                  ],
                                  "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."
                                }
                              },
                              "description": "Filter your audience by attribute."
                            }
                          },
                          "description": "filter for people who have an attribute or an attribute value."
                        }
                      ]
                    },
                    "description": "Returns results matching *any* conditions."
                  },
                  "and": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "title": "segment",
                          "properties": {
                            "segment": {
                              "type": "object",
                              "title": "segment",
                              "properties": {
                                "id": {
                                  "type": "integer",
                                  "example": 4,
                                  "description": "The ID of the segment you want to return people from."
                                }
                              },
                              "description": "Provide the `id` of a segment containing people you want to search for."
                            }
                          },
                          "description": "Filter for people who belong to a segment."
                        },
                        {
                          "type": "object",
                          "title": "audience",
                          "properties": {
                            "attribute": {
                              "type": "object",
                              "title": "attribute",
                              "example": {
                                "field": "unsubscribed",
                                "value": true,
                                "operator": "eq"
                              },
                              "required": [
                                "field",
                                "operator"
                              ],
                              "properties": {
                                "field": {
                                  "type": "string",
                                  "example": "first_name",
                                  "description": "The name of the attribute you want to filter against."
                                },
                                "value": {
                                  "type": "string",
                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                },
                                "operator": {
                                  "enum": [
                                    "eq",
                                    "exists"
                                  ],
                                  "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."
                                }
                              },
                              "description": "Filter your audience by attribute."
                            }
                          },
                          "description": "filter for people who have an attribute or an attribute value."
                        }
                      ]
                    },
                    "description": "Returns results matching *all* conditions."
                  },
                  "not": {
                    "oneOf": [
                      {
                        "type": "object",
                        "title": "and",
                        "properties": {
                          "and": {
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "title": "segment",
                                  "properties": {
                                    "segment": {
                                      "type": "object",
                                      "title": "segment",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "example": 4,
                                          "description": "The ID of the segment you want to return people from."
                                        }
                                      },
                                      "description": "Provide the `id` of a segment containing people you want to search for."
                                    }
                                  },
                                  "description": "Filter for people who belong to a segment."
                                },
                                {
                                  "type": "object",
                                  "title": "audience",
                                  "properties": {
                                    "attribute": {
                                      "type": "object",
                                      "title": "attribute",
                                      "example": {
                                        "field": "unsubscribed",
                                        "value": true,
                                        "operator": "eq"
                                      },
                                      "required": [
                                        "field",
                                        "operator"
                                      ],
                                      "properties": {
                                        "field": {
                                          "type": "string",
                                          "example": "first_name",
                                          "description": "The name of the attribute you want to filter against."
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                        },
                                        "operator": {
                                          "enum": [
                                            "eq",
                                            "exists"
                                          ],
                                          "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."
                                        }
                                      },
                                      "description": "Filter your audience by attribute."
                                    }
                                  },
                                  "description": "filter for people who have an attribute or an attribute value."
                                }
                              ]
                            },
                            "description": "Match *all* conditions to return results."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "title": "or",
                        "properties": {
                          "or": {
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "title": "segment",
                                  "properties": {
                                    "segment": {
                                      "type": "object",
                                      "title": "segment",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "example": 4,
                                          "description": "The ID of the segment you want to return people from."
                                        }
                                      },
                                      "description": "Provide the `id` of a segment containing people you want to search for."
                                    }
                                  },
                                  "description": "Filter for people who belong to a segment."
                                },
                                {
                                  "type": "object",
                                  "title": "audience",
                                  "properties": {
                                    "attribute": {
                                      "type": "object",
                                      "title": "attribute",
                                      "example": {
                                        "field": "unsubscribed",
                                        "value": true,
                                        "operator": "eq"
                                      },
                                      "required": [
                                        "field",
                                        "operator"
                                      ],
                                      "properties": {
                                        "field": {
                                          "type": "string",
                                          "example": "first_name",
                                          "description": "The name of the attribute you want to filter against."
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                        },
                                        "operator": {
                                          "enum": [
                                            "eq",
                                            "exists"
                                          ],
                                          "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."
                                        }
                                      },
                                      "description": "Filter your audience by attribute."
                                    }
                                  },
                                  "description": "filter for people who have an attribute or an attribute value."
                                }
                              ]
                            },
                            "description": "Match *any* condition to return results."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "title": "segment",
                        "properties": {
                          "segment": {
                            "type": "object",
                            "title": "segment",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "example": 4,
                                "description": "The ID of the segment you want to return people from."
                              }
                            },
                            "description": "Provide the `id` of a segment containing people you want to search for."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "title": "attribute",
                        "properties": {
                          "attribute": {
                            "type": "object",
                            "title": "attribute",
                            "example": {
                              "field": "unsubscribed",
                              "value": true,
                              "operator": "eq"
                            },
                            "required": [
                              "field",
                              "operator"
                            ],
                            "properties": {
                              "field": {
                                "type": "string",
                                "example": "first_name",
                                "description": "The name of the attribute you want to filter against."
                              },
                              "value": {
                                "type": "string",
                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                              },
                              "operator": {
                                "enum": [
                                  "eq",
                                  "exists"
                                ],
                                "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."
                              }
                            },
                            "description": "Filter your audience by attribute."
                          }
                        }
                      }
                    ],
                    "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
                  },
                  "segment": {
                    "type": "object",
                    "title": "segment",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "example": 4,
                        "description": "The ID of the segment you want to return people from."
                      }
                    },
                    "description": "Provide the `id` of a segment containing people you want to search for."
                  },
                  "attribute": {
                    "type": "object",
                    "title": "attribute",
                    "example": {
                      "field": "unsubscribed",
                      "value": true,
                      "operator": "eq"
                    },
                    "required": [
                      "field",
                      "operator"
                    ],
                    "properties": {
                      "field": {
                        "type": "string",
                        "example": "first_name",
                        "description": "The name of the attribute you want to filter against."
                      },
                      "value": {
                        "type": "string",
                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                      },
                      "operator": {
                        "enum": [
                          "eq",
                          "exists"
                        ],
                        "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."
                      }
                    },
                    "description": "Filter your audience by attribute."
                  }
                },
                "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."
              },
              "description": "Match *all* conditions to return results."
            }
          }
        },
        {
          "type": "object",
          "title": "or",
          "properties": {
            "or": {
              "type": "array",
              "items": {
                "type": "object",
                "title": "People Filter",
                "properties": {
                  "or": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "title": "segment",
                          "properties": {
                            "segment": {
                              "type": "object",
                              "title": "segment",
                              "properties": {
                                "id": {
                                  "type": "integer",
                                  "example": 4,
                                  "description": "The ID of the segment you want to return people from."
                                }
                              },
                              "description": "Provide the `id` of a segment containing people you want to search for."
                            }
                          },
                          "description": "Filter for people who belong to a segment."
                        },
                        {
                          "type": "object",
                          "title": "audience",
                          "properties": {
                            "attribute": {
                              "type": "object",
                              "title": "attribute",
                              "example": {
                                "field": "unsubscribed",
                                "value": true,
                                "operator": "eq"
                              },
                              "required": [
                                "field",
                                "operator"
                              ],
                              "properties": {
                                "field": {
                                  "type": "string",
                                  "example": "first_name",
                                  "description": "The name of the attribute you want to filter against."
                                },
                                "value": {
                                  "type": "string",
                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                },
                                "operator": {
                                  "enum": [
                                    "eq",
                                    "exists"
                                  ],
                                  "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."
                                }
                              },
                              "description": "Filter your audience by attribute."
                            }
                          },
                          "description": "filter for people who have an attribute or an attribute value."
                        }
                      ]
                    },
                    "description": "Returns results matching *any* conditions."
                  },
                  "and": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "title": "segment",
                          "properties": {
                            "segment": {
                              "type": "object",
                              "title": "segment",
                              "properties": {
                                "id": {
                                  "type": "integer",
                                  "example": 4,
                                  "description": "The ID of the segment you want to return people from."
                                }
                              },
                              "description": "Provide the `id` of a segment containing people you want to search for."
                            }
                          },
                          "description": "Filter for people who belong to a segment."
                        },
                        {
                          "type": "object",
                          "title": "audience",
                          "properties": {
                            "attribute": {
                              "type": "object",
                              "title": "attribute",
                              "example": {
                                "field": "unsubscribed",
                                "value": true,
                                "operator": "eq"
                              },
                              "required": [
                                "field",
                                "operator"
                              ],
                              "properties": {
                                "field": {
                                  "type": "string",
                                  "example": "first_name",
                                  "description": "The name of the attribute you want to filter against."
                                },
                                "value": {
                                  "type": "string",
                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                },
                                "operator": {
                                  "enum": [
                                    "eq",
                                    "exists"
                                  ],
                                  "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."
                                }
                              },
                              "description": "Filter your audience by attribute."
                            }
                          },
                          "description": "filter for people who have an attribute or an attribute value."
                        }
                      ]
                    },
                    "description": "Returns results matching *all* conditions."
                  },
                  "not": {
                    "oneOf": [
                      {
                        "type": "object",
                        "title": "and",
                        "properties": {
                          "and": {
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "title": "segment",
                                  "properties": {
                                    "segment": {
                                      "type": "object",
                                      "title": "segment",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "example": 4,
                                          "description": "The ID of the segment you want to return people from."
                                        }
                                      },
                                      "description": "Provide the `id` of a segment containing people you want to search for."
                                    }
                                  },
                                  "description": "Filter for people who belong to a segment."
                                },
                                {
                                  "type": "object",
                                  "title": "audience",
                                  "properties": {
                                    "attribute": {
                                      "type": "object",
                                      "title": "attribute",
                                      "example": {
                                        "field": "unsubscribed",
                                        "value": true,
                                        "operator": "eq"
                                      },
                                      "required": [
                                        "field",
                                        "operator"
                                      ],
                                      "properties": {
                                        "field": {
                                          "type": "string",
                                          "example": "first_name",
                                          "description": "The name of the attribute you want to filter against."
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                        },
                                        "operator": {
                                          "enum": [
                                            "eq",
                                            "exists"
                                          ],
                                          "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."
                                        }
                                      },
                                      "description": "Filter your audience by attribute."
                                    }
                                  },
                                  "description": "filter for people who have an attribute or an attribute value."
                                }
                              ]
                            },
                            "description": "Match *all* conditions to return results."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "title": "or",
                        "properties": {
                          "or": {
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "title": "segment",
                                  "properties": {
                                    "segment": {
                                      "type": "object",
                                      "title": "segment",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "example": 4,
                                          "description": "The ID of the segment you want to return people from."
                                        }
                                      },
                                      "description": "Provide the `id` of a segment containing people you want to search for."
                                    }
                                  },
                                  "description": "Filter for people who belong to a segment."
                                },
                                {
                                  "type": "object",
                                  "title": "audience",
                                  "properties": {
                                    "attribute": {
                                      "type": "object",
                                      "title": "attribute",
                                      "example": {
                                        "field": "unsubscribed",
                                        "value": true,
                                        "operator": "eq"
                                      },
                                      "required": [
                                        "field",
                                        "operator"
                                      ],
                                      "properties": {
                                        "field": {
                                          "type": "string",
                                          "example": "first_name",
                                          "description": "The name of the attribute you want to filter against."
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                        },
                                        "operator": {
                                          "enum": [
                                            "eq",
                                            "exists"
                                          ],
                                          "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."
                                        }
                                      },
                                      "description": "Filter your audience by attribute."
                                    }
                                  },
                                  "description": "filter for people who have an attribute or an attribute value."
                                }
                              ]
                            },
                            "description": "Match *any* condition to return results."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "title": "segment",
                        "properties": {
                          "segment": {
                            "type": "object",
                            "title": "segment",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "example": 4,
                                "description": "The ID of the segment you want to return people from."
                              }
                            },
                            "description": "Provide the `id` of a segment containing people you want to search for."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "title": "attribute",
                        "properties": {
                          "attribute": {
                            "type": "object",
                            "title": "attribute",
                            "example": {
                              "field": "unsubscribed",
                              "value": true,
                              "operator": "eq"
                            },
                            "required": [
                              "field",
                              "operator"
                            ],
                            "properties": {
                              "field": {
                                "type": "string",
                                "example": "first_name",
                                "description": "The name of the attribute you want to filter against."
                              },
                              "value": {
                                "type": "string",
                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                              },
                              "operator": {
                                "enum": [
                                  "eq",
                                  "exists"
                                ],
                                "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."
                              }
                            },
                            "description": "Filter your audience by attribute."
                          }
                        }
                      }
                    ],
                    "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
                  },
                  "segment": {
                    "type": "object",
                    "title": "segment",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "example": 4,
                        "description": "The ID of the segment you want to return people from."
                      }
                    },
                    "description": "Provide the `id` of a segment containing people you want to search for."
                  },
                  "attribute": {
                    "type": "object",
                    "title": "attribute",
                    "example": {
                      "field": "unsubscribed",
                      "value": true,
                      "operator": "eq"
                    },
                    "required": [
                      "field",
                      "operator"
                    ],
                    "properties": {
                      "field": {
                        "type": "string",
                        "example": "first_name",
                        "description": "The name of the attribute you want to filter against."
                      },
                      "value": {
                        "type": "string",
                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                      },
                      "operator": {
                        "enum": [
                          "eq",
                          "exists"
                        ],
                        "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."
                      }
                    },
                    "description": "Filter your audience by attribute."
                  }
                },
                "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."
              },
              "description": "Match *any* condition to return results."
            }
          }
        },
        {
          "type": "object",
          "title": "segment",
          "properties": {
            "segment": {
              "type": "object",
              "title": "segment",
              "properties": {
                "id": {
                  "type": "integer",
                  "example": 4,
                  "description": "The ID of the segment you want to return people from."
                }
              },
              "description": "Provide the `id` of a segment containing people you want to search for."
            }
          }
        },
        {
          "type": "object",
          "title": "attribute",
          "properties": {
            "attribute": {
              "type": "object",
              "title": "attribute",
              "example": {
                "field": "unsubscribed",
                "value": true,
                "operator": "eq"
              },
              "required": [
                "field",
                "operator"
              ],
              "properties": {
                "field": {
                  "type": "string",
                  "example": "first_name",
                  "description": "The name of the attribute you want to filter against."
                },
                "value": {
                  "type": "string",
                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                },
                "operator": {
                  "enum": [
                    "eq",
                    "exists"
                  ],
                  "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."
                }
              },
              "description": "Filter your audience by attribute."
            }
          }
        }
      ],
      "title": "not",
      "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
    },
    {
      "type": "object",
      "title": "segment",
      "properties": {
        "segment": {
          "type": "object",
          "title": "segment",
          "properties": {
            "id": {
              "type": "integer",
              "example": 4,
              "description": "The ID of the segment you want to return people from."
            }
          },
          "description": "Provide the `id` of a segment containing people you want to search for."
        }
      },
      "description": "Filter for people who belong to a segment."
    },
    {
      "type": "object",
      "title": "audience",
      "properties": {
        "attribute": {
          "type": "object",
          "title": "attribute",
          "example": {
            "field": "unsubscribed",
            "value": true,
            "operator": "eq"
          },
          "required": [
            "field",
            "operator"
          ],
          "properties": {
            "field": {
              "type": "string",
              "example": "first_name",
              "description": "The name of the attribute you want to filter against."
            },
            "value": {
              "type": "string",
              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
            },
            "operator": {
              "enum": [
                "eq",
                "exists"
              ],
              "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."
            }
          },
          "description": "Filter your audience by attribute."
        }
      },
      "description": "filter for people who have an attribute or an attribute value."
    }
  ],
  "title": "Audience Filter",
  "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.\n\nThe top level of this object can only contain a single property, but you can nest `and` and `or` properties to produce complex filters.\n"
}
string bcc
{
  "type": "string",
  "readOnly": true,
  "description": "The blind-copy address(es) for this action."
}
object blockWidget
{
  "type": "object",
  "properties": {
    "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."
    },
    "type": {
      "enum": [
        "blockWidget"
      ],
      "type": "string",
      "description": "Defines the widget type."
    },
    "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."
    },
    "padding": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "The padding label you set under *Branding* > *Padding*."
      },
      "maxItems": 4,
      "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."
    },
    "components": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "An array of child components that you want to make available inside this widget."
    },
    "safeInsets": {
      "type": "boolean",
      "default": false,
      "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`."
    },
    "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."
    },
    "backgroundColor": {
      "type": "string",
      "description": "The background color for your block. You must set a value defined under *Branding* > *Colors*."
    },
    "backgroundImage": {
      "type": "string",
      "example": "$user.backgroundImage,",
      "description": "Set a background image for the block"
    }
  },
  "description": "A widget that provides visual design for one or more child components."
}
string 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."
}
string body_content
{
  "type": "string",
  "description": "If your reporting webhook includes content (the *Body Content* box is checked) and the `metric` is `sent, this contains the body of the messages. If the message is an email, this also contains email headers. For push and in-app messages, this is the stringified payload for your message."
}
string 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."
}
object broadcastActionObject
{
  "oneOf": [
    {
      "type": "object",
      "title": "Email / message",
      "properties": {
        "id": {
          "type": "integer",
          "example": 96,
          "nullable": true,
          "readOnly": true,
          "description": "The identifier for an action."
        },
        "bcc": {
          "type": "string",
          "readOnly": true,
          "description": "The blind-copy address(es) for this action."
        },
        "body": {
          "type": "string",
          "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
        },
        "from": {
          "type": "string",
          "example": "sentFrom@example.com",
          "readOnly": true,
          "description": "The address that the message is from, relevant if the action `type` is `email`."
        },
        "name": {
          "type": "string",
          "example": "Opening Message",
          "readOnly": true,
          "description": "The name of the action, if it exists."
        },
        "type": {
          "enum": [
            "email",
            "in_app",
            "push",
            "twilio",
            "slack"
          ],
          "type": "string",
          "readOnly": true,
          "description": "The type of action."
        },
        "layout": {
          "type": "string",
          "readOnly": true,
          "description": "The layout used for the action, if it exists."
        },
        "created": {
          "type": "integer",
          "format": "unix timestamp",
          "example": 1552341937,
          "readOnly": true,
          "description": "The date time when the referenced ID was created."
        },
        "from_id": {
          "type": "integer",
          "example": 1,
          "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](https://customer.io/docs/api/app/) to match the ID to a specific address."
        },
        "headers": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "X-Mailgun-Tag",
                "description": "name of header"
              },
              "value": {
                "type": "string",
                "example": "tag-name-for-tracking",
                "description": "value of header"
              }
            }
          },
          "description": "Headers must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten."
        },
        "subject": {
          "type": "string",
          "example": "Did you get that thing I sent you?",
          "description": "The subject line for an `email` action."
        },
        "updated": {
          "type": "integer",
          "format": "unix timestamp",
          "example": 1552341937,
          "readOnly": true,
          "description": "The date time when the referenced ID was last updated."
        },
        "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."
        },
        "fake_bcc": {
          "type": "boolean",
          "readOnly": true,
          "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"
        },
        "language": {
          "type": "string",
          "example": "fr",
          "readOnly": true,
          "description": "The language variant for your message. If you don't use our [localization feature](https://customer.io/docs/api/app/), or this is the default message, this value is an empty string."
        },
        "reply_to": {
          "type": "string",
          "example": "replyto@example.com",
          "readOnly": true,
          "description": "The address that receives replies for the message, if applicable."
        },
        "recipient": {
          "type": "string",
          "example": "{{customer.email}}",
          "description": "The recipient address for an action."
        },
        "reply_to_id": {
          "type": "integer",
          "example": 38,
          "nullable": true,
          "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](https://customer.io/docs/api/app/) to match the ID to a specific address."
        },
        "broadcast_id": {
          "type": "integer",
          "example": 2,
          "readOnly": true,
          "description": "The identifier for a broadcast."
        },
        "preprocessor": {
          "enum": [
            "premailer"
          ],
          "type": "string",
          "readOnly": true,
          "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."
        },
        "sending_state": {
          "enum": [
            "automatic",
            "draft",
            "off"
          ],
          "type": "string",
          "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."
        },
        "deduplicate_id": {
          "type": "string",
          "example": "15:1492548073",
          "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."
        },
        "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."
        }
      }
    },
    {
      "type": "object",
      "title": "Webhook",
      "properties": {
        "id": {
          "type": "integer",
          "example": 96,
          "nullable": true,
          "readOnly": true,
          "description": "The identifier for an action."
        },
        "url": {
          "type": "string",
          "example": "https://my.example.com/webhook",
          "description": "The URL to send a webhook to, applies to `webhook` type actions."
        },
        "body": {
          "type": "string",
          "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
        },
        "name": {
          "type": "string",
          "example": "Opening Message",
          "readOnly": true,
          "description": "The name of the action, if it exists."
        },
        "type": {
          "enum": [
            "webhook"
          ],
          "type": "string",
          "readOnly": true,
          "description": "The type of action."
        },
        "layout": {
          "type": "string",
          "readOnly": true,
          "description": "The layout used for the action, if it exists."
        },
        "method": {
          "enum": [
            "get",
            "post",
            "put",
            "delete",
            "patch"
          ],
          "type": "string",
          "example": "post",
          "description": "The HTTP method for your webhook."
        },
        "created": {
          "type": "integer",
          "format": "unix timestamp",
          "example": 1552341937,
          "readOnly": true,
          "description": "The date time when the referenced ID was created."
        },
        "headers": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "X-Mailgun-Tag",
                "description": "name of header"
              },
              "value": {
                "type": "string",
                "example": "tag-name-for-tracking",
                "description": "value of header"
              }
            }
          },
          "description": "Headers must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten."
        },
        "updated": {
          "type": "integer",
          "format": "unix timestamp",
          "example": 1552341937,
          "readOnly": true,
          "description": "The date time when the referenced ID was last updated."
        },
        "broadcast_id": {
          "type": "integer",
          "example": 2,
          "description": "The identifier for a broadcast."
        },
        "sending_state": {
          "enum": [
            "automatic",
            "draft",
            "off"
          ],
          "type": "string",
          "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."
        },
        "deduplicate_id": {
          "type": "string",
          "example": "15:1492548073",
          "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."
        }
      }
    }
  ]
}
object broadcastObject
{
  "type": "object",
  "example": {
    "id": 2,
    "name": "basic",
    "tags": "nil",
    "type": "triggered_broadcast",
    "active": true,
    "actions": [
      {
        "id": 3,
        "type": "email"
      },
      {
        "id": 4
      },
      {
        "type": "webhook"
      }
    ],
    "created": 1520467200,
    "updated": 1520467200,
    "created_by": "ExamplePerson",
    "first_started": 1520467200,
    "deduplicate_id": "2:1520467200"
  },
  "properties": {
    "id": {
      "type": "integer",
      "example": 2,
      "description": "The identifier for a broadcast."
    },
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the broadcast."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array of tags you set on this broadcast."
    },
    "active": {
      "type": "boolean",
      "description": "If true, the broadcast is active."
    },
    "actions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The identifier for the action."
          },
          "type": {
            "enum": [
              "email",
              "webhook",
              "push",
              "sms",
              "slack"
            ],
            "type": "string",
            "description": "The type of action."
          }
        }
      },
      "description": "A list of actions used by the broadcast."
    },
    "created": {
      "type": "integer",
      "format": "unix timestamp",
      "example": 1552341937,
      "readOnly": true,
      "description": "The date time when the referenced ID was created."
    },
    "updated": {
      "type": "integer",
      "format": "unix timestamp",
      "example": 1552341937,
      "readOnly": true,
      "description": "The date time when the referenced ID was last updated."
    },
    "deduplicate_id": {
      "type": "string",
      "example": "15:1492548073",
      "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."
    },
    "msg_template_ids": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The identifier for the template."
          },
          "type": {
            "enum": [
              "email",
              "webhook",
              "push",
              "sms",
              "slack"
            ],
            "type": "string",
            "description": "The type of template."
          }
        }
      },
      "deprecated": true,
      "description": "Indicates the message template(s) used in this broadcast."
    }
  }
}
object broadcastTriggerObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "The identifier for a broadcast trigger."
    },
    "created_at": {
      "type": "integer",
      "format": "unix timestamp",
      "example": 1552341937,
      "readOnly": true,
      "description": "The date time when the referenced ID was created."
    },
    "broadcast_id": {
      "type": "integer",
      "example": 2,
      "description": "The identifier for a broadcast."
    },
    "processed_at": {
      "type": "integer",
      "format": "unix timestamp",
      "description": "The date-time when Customer.io processed the trigger."
    }
  },
  "description": "You can get triggers to know when you triggered a broadcast and whether or not it's been processed."
}
integer broadcast_id
{
  "type": "integer",
  "example": 2,
  "description": "The identifier for a broadcast."
}
object campaignObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "example": 5,
      "description": "The identifier for a campaign."
    },
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the campaign."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "example": [
        "new",
        "welcome"
      ],
      "description": "An array of tags you set on this campaign."
    },
    "type": {
      "enum": [
        "segment"
      ],
      "type": "string",
      "description": "The type of campaign."
    },
    "active": {
      "type": "boolean",
      "description": "If true, the campaign is active and can still send messages."
    },
    "actions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The identifier for the action."
          },
          "type": {
            "enum": [
              "email",
              "sms",
              "push",
              "slack",
              "webhook"
            ],
            "type": "string",
            "description": "The message type actions resulting from the campaign."
          }
        }
      },
      "description": "An array of actions contained within the campaign."
    },
    "created": {
      "type": "integer",
      "format": "unix timestamp",
      "example": 1552341937,
      "readOnly": true,
      "description": "The date time when the referenced ID was created."
    },
    "updated": {
      "type": "integer",
      "format": "unix timestamp",
      "example": 1552341937,
      "readOnly": true,
      "description": "The date time when the referenced ID was last updated."
    },
    "created_by": {
      "type": "string",
      "format": "email",
      "example": "hugh.mann@example.com",
      "description": "The email address of the person who created the campaign."
    },
    "first_started": {
      "type": "integer",
      "format": "unix timestamp",
      "example": 1552341937,
      "description": "The date and time when you first started the campaign and it first became eligible to be triggered."
    },
    "msg_templates": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The identifier for the template."
          },
          "type": {
            "enum": [
              "email",
              "sms",
              "push",
              "slack"
            ],
            "type": "string",
            "description": "The message type the template represents."
          }
        }
      },
      "deprecated": true,
      "description": "Indicates the message templates used in this campaign."
    },
    "deduplicate_id": {
      "type": "string",
      "example": "15:1492548073",
      "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."
    },
    "filter_segment_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "example": [
        21,
        42
      ],
      "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments."
    },
    "trigger_segment_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "example": [
        90
      ],
      "description": "A list of segments used in the campaign trigger, returned if the campaign trigger included one or more segment conditions."
    }
  }
}
object campaignRequest
{
  "oneOf": [
    {
      "type": "object",
      "title": "Default audience",
      "properties": {
        "data": {
          "type": "object",
          "example": {
            "date": 1511315635,
            "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!",
            "headline": "Roadrunner spotted in Albuquerque!"
          },
          "description": "Contains information you want to use to populate your broadcast.",
          "additionalProperties": {
            "description": "Insert key-values that you want to reference in your message here.",
            "x-additionalPropertiesName": "Broadcast liquid data"
          }
        },
        "id_ignore_missing": {
          "type": "boolean",
          "default": false,
          "description": "If false, a missing customer ID is an error."
        },
        "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."
        }
      },
      "description": "Send your broadcast to the default set of recipients defined in the UI."
    },
    {
      "allOf": [
        {
          "type": "object",
          "required": [
            "recipients"
          ],
          "properties": {
            "recipients": {
              "oneOf": [
                {
                  "type": "object",
                  "title": "and",
                  "properties": {
                    "and": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "or": {
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "title": "segment",
                                  "properties": {
                                    "segment": {
                                      "type": "object",
                                      "title": "segment",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "example": 4,
                                          "description": "The ID of the segment you want to return people from."
                                        }
                                      },
                                      "description": "Provide the `id` of a segment containing people you want to search for."
                                    }
                                  },
                                  "description": "Filter for people who belong to a segment."
                                },
                                {
                                  "type": "object",
                                  "title": "audience",
                                  "properties": {
                                    "attribute": {
                                      "type": "object",
                                      "title": "attribute",
                                      "example": {
                                        "field": "unsubscribed",
                                        "value": true,
                                        "operator": "eq"
                                      },
                                      "required": [
                                        "field",
                                        "operator"
                                      ],
                                      "properties": {
                                        "field": {
                                          "type": "string",
                                          "example": "first_name",
                                          "description": "The name of the attribute you want to filter against."
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                        },
                                        "operator": {
                                          "enum": [
                                            "eq",
                                            "exists"
                                          ],
                                          "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."
                                        }
                                      },
                                      "description": "Filter your audience by attribute."
                                    }
                                  },
                                  "description": "filter for people who have an attribute or an attribute value."
                                }
                              ]
                            },
                            "description": "Returns results matching *any* conditions."
                          },
                          "not": {
                            "oneOf": [
                              {
                                "type": "object",
                                "title": "and",
                                "properties": {
                                  "and": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "object",
                                          "title": "segment",
                                          "properties": {
                                            "segment": {
                                              "type": "object",
                                              "title": "segment",
                                              "properties": {
                                                "id": {
                                                  "type": "integer",
                                                  "example": 4,
                                                  "description": "The ID of the segment you want to return people from."
                                                }
                                              },
                                              "description": "Provide the `id` of a segment containing people you want to search for."
                                            }
                                          },
                                          "description": "Filter for people who belong to a segment."
                                        },
                                        {
                                          "type": "object",
                                          "title": "audience",
                                          "properties": {
                                            "attribute": {
                                              "type": "object",
                                              "title": "attribute",
                                              "example": {
                                                "field": "unsubscribed",
                                                "value": true,
                                                "operator": "eq"
                                              },
                                              "required": [
                                                "field",
                                                "operator"
                                              ],
                                              "properties": {
                                                "field": {
                                                  "type": "string",
                                                  "example": "first_name",
                                                  "description": "The name of the attribute you want to filter against."
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                },
                                                "operator": {
                                                  "enum": [
                                                    "eq",
                                                    "exists"
                                                  ],
                                                  "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."
                                                }
                                              },
                                              "description": "Filter your audience by attribute."
                                            }
                                          },
                                          "description": "filter for people who have an attribute or an attribute value."
                                        }
                                      ]
                                    },
                                    "description": "Match *all* conditions to return results."
                                  }
                                }
                              },
                              {
                                "type": "object",
                                "title": "or",
                                "properties": {
                                  "or": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "object",
                                          "title": "segment",
                                          "properties": {
                                            "segment": {
                                              "type": "object",
                                              "title": "segment",
                                              "properties": {
                                                "id": {
                                                  "type": "integer",
                                                  "example": 4,
                                                  "description": "The ID of the segment you want to return people from."
                                                }
                                              },
                                              "description": "Provide the `id` of a segment containing people you want to search for."
                                            }
                                          },
                                          "description": "Filter for people who belong to a segment."
                                        },
                                        {
                                          "type": "object",
                                          "title": "audience",
                                          "properties": {
                                            "attribute": {
                                              "type": "object",
                                              "title": "attribute",
                                              "example": {
                                                "field": "unsubscribed",
                                                "value": true,
                                                "operator": "eq"
                                              },
                                              "required": [
                                                "field",
                                                "operator"
                                              ],
                                              "properties": {
                                                "field": {
                                                  "type": "string",
                                                  "example": "first_name",
                                                  "description": "The name of the attribute you want to filter against."
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                },
                                                "operator": {
                                                  "enum": [
                                                    "eq",
                                                    "exists"
                                                  ],
                                                  "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."
                                                }
                                              },
                                              "description": "Filter your audience by attribute."
                                            }
                                          },
                                          "description": "filter for people who have an attribute or an attribute value."
                                        }
                                      ]
                                    },
                                    "description": "Match *any* condition to return results."
                                  }
                                }
                              },
                              {
                                "type": "object",
                                "title": "segment",
                                "properties": {
                                  "segment": {
                                    "type": "object",
                                    "title": "segment",
                                    "properties": {
                                      "id": {
                                        "type": "integer",
                                        "example": 4,
                                        "description": "The ID of the segment you want to return people from."
                                      }
                                    },
                                    "description": "Provide the `id` of a segment containing people you want to search for."
                                  }
                                }
                              },
                              {
                                "type": "object",
                                "title": "attribute",
                                "properties": {
                                  "attribute": {
                                    "type": "object",
                                    "title": "attribute",
                                    "example": {
                                      "field": "unsubscribed",
                                      "value": true,
                                      "operator": "eq"
                                    },
                                    "required": [
                                      "field",
                                      "operator"
                                    ],
                                    "properties": {
                                      "field": {
                                        "type": "string",
                                        "example": "first_name",
                                        "description": "The name of the attribute you want to filter against."
                                      },
                                      "value": {
                                        "type": "string",
                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                      },
                                      "operator": {
                                        "enum": [
                                          "eq",
                                          "exists"
                                        ],
                                        "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."
                                      }
                                    },
                                    "description": "Filter your audience by attribute."
                                  }
                                }
                              }
                            ],
                            "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
                          },
                          "segment": {
                            "type": "object",
                            "title": "segment",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "example": 4,
                                "description": "The ID of the segment you want to return people from."
                              }
                            },
                            "description": "Provide the `id` of a segment containing people you want to search for."
                          },
                          "attribute": {
                            "type": "object",
                            "title": "attribute",
                            "example": {
                              "field": "unsubscribed",
                              "value": true,
                              "operator": "eq"
                            },
                            "required": [
                              "field",
                              "operator"
                            ],
                            "properties": {
                              "field": {
                                "type": "string",
                                "example": "first_name",
                                "description": "The name of the attribute you want to filter against."
                              },
                              "value": {
                                "type": "string",
                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                              },
                              "operator": {
                                "enum": [
                                  "eq",
                                  "exists"
                                ],
                                "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."
                              }
                            },
                            "description": "Filter your audience by attribute."
                          }
                        }
                      },
                      "description": "Match *all* conditions to return results."
                    }
                  }
                },
                {
                  "type": "object",
                  "title": "or",
                  "properties": {
                    "or": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "and": {
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "title": "segment",
                                  "properties": {
                                    "segment": {
                                      "type": "object",
                                      "title": "segment",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "example": 4,
                                          "description": "The ID of the segment you want to return people from."
                                        }
                                      },
                                      "description": "Provide the `id` of a segment containing people you want to search for."
                                    }
                                  },
                                  "description": "Filter for people who belong to a segment."
                                },
                                {
                                  "type": "object",
                                  "title": "audience",
                                  "properties": {
                                    "attribute": {
                                      "type": "object",
                                      "title": "attribute",
                                      "example": {
                                        "field": "unsubscribed",
                                        "value": true,
                                        "operator": "eq"
                                      },
                                      "required": [
                                        "field",
                                        "operator"
                                      ],
                                      "properties": {
                                        "field": {
                                          "type": "string",
                                          "example": "first_name",
                                          "description": "The name of the attribute you want to filter against."
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                        },
                                        "operator": {
                                          "enum": [
                                            "eq",
                                            "exists"
                                          ],
                                          "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."
                                        }
                                      },
                                      "description": "Filter your audience by attribute."
                                    }
                                  },
                                  "description": "filter for people who have an attribute or an attribute value."
                                }
                              ]
                            },
                            "description": "Returns results matching *all* conditions."
                          },
                          "not": {
                            "oneOf": [
                              {
                                "type": "object",
                                "title": "and",
                                "properties": {
                                  "and": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "object",
                                          "title": "segment",
                                          "properties": {
                                            "segment": {
                                              "type": "object",
                                              "title": "segment",
                                              "properties": {
                                                "id": {
                                                  "type": "integer",
                                                  "example": 4,
                                                  "description": "The ID of the segment you want to return people from."
                                                }
                                              },
                                              "description": "Provide the `id` of a segment containing people you want to search for."
                                            }
                                          },
                                          "description": "Filter for people who belong to a segment."
                                        },
                                        {
                                          "type": "object",
                                          "title": "audience",
                                          "properties": {
                                            "attribute": {
                                              "type": "object",
                                              "title": "attribute",
                                              "example": {
                                                "field": "unsubscribed",
                                                "value": true,
                                                "operator": "eq"
                                              },
                                              "required": [
                                                "field",
                                                "operator"
                                              ],
                                              "properties": {
                                                "field": {
                                                  "type": "string",
                                                  "example": "first_name",
                                                  "description": "The name of the attribute you want to filter against."
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                },
                                                "operator": {
                                                  "enum": [
                                                    "eq",
                                                    "exists"
                                                  ],
                                                  "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."
                                                }
                                              },
                                              "description": "Filter your audience by attribute."
                                            }
                                          },
                                          "description": "filter for people who have an attribute or an attribute value."
                                        }
                                      ]
                                    },
                                    "description": "Match *all* conditions to return results."
                                  }
                                }
                              },
                              {
                                "type": "object",
                                "title": "or",
                                "properties": {
                                  "or": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "object",
                                          "title": "segment",
                                          "properties": {
                                            "segment": {
                                              "type": "object",
                                              "title": "segment",
                                              "properties": {
                                                "id": {
                                                  "type": "integer",
                                                  "example": 4,
                                                  "description": "The ID of the segment you want to return people from."
                                                }
                                              },
                                              "description": "Provide the `id` of a segment containing people you want to search for."
                                            }
                                          },
                                          "description": "Filter for people who belong to a segment."
                                        },
                                        {
                                          "type": "object",
                                          "title": "audience",
                                          "properties": {
                                            "attribute": {
                                              "type": "object",
                                              "title": "attribute",
                                              "example": {
                                                "field": "unsubscribed",
                                                "value": true,
                                                "operator": "eq"
                                              },
                                              "required": [
                                                "field",
                                                "operator"
                                              ],
                                              "properties": {
                                                "field": {
                                                  "type": "string",
                                                  "example": "first_name",
                                                  "description": "The name of the attribute you want to filter against."
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                },
                                                "operator": {
                                                  "enum": [
                                                    "eq",
                                                    "exists"
                                                  ],
                                                  "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."
                                                }
                                              },
                                              "description": "Filter your audience by attribute."
                                            }
                                          },
                                          "description": "filter for people who have an attribute or an attribute value."
                                        }
                                      ]
                                    },
                                    "description": "Match *any* condition to return results."
                                  }
                                }
                              },
                              {
                                "type": "object",
                                "title": "segment",
                                "properties": {
                                  "segment": {
                                    "type": "object",
                                    "title": "segment",
                                    "properties": {
                                      "id": {
                                        "type": "integer",
                                        "example": 4,
                                        "description": "The ID of the segment you want to return people from."
                                      }
                                    },
                                    "description": "Provide the `id` of a segment containing people you want to search for."
                                  }
                                }
                              },
                              {
                                "type": "object",
                                "title": "attribute",
                                "properties": {
                                  "attribute": {
                                    "type": "object",
                                    "title": "attribute",
                                    "example": {
                                      "field": "unsubscribed",
                                      "value": true,
                                      "operator": "eq"
                                    },
                                    "required": [
                                      "field",
                                      "operator"
                                    ],
                                    "properties": {
                                      "field": {
                                        "type": "string",
                                        "example": "first_name",
                                        "description": "The name of the attribute you want to filter against."
                                      },
                                      "value": {
                                        "type": "string",
                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                      },
                                      "operator": {
                                        "enum": [
                                          "eq",
                                          "exists"
                                        ],
                                        "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."
                                      }
                                    },
                                    "description": "Filter your audience by attribute."
                                  }
                                }
                              }
                            ],
                            "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
                          },
                          "segment": {
                            "type": "object",
                            "title": "segment",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "example": 4,
                                "description": "The ID of the segment you want to return people from."
                              }
                            },
                            "description": "Provide the `id` of a segment containing people you want to search for."
                          },
                          "attribute": {
                            "type": "object",
                            "title": "attribute",
                            "example": {
                              "field": "unsubscribed",
                              "value": true,
                              "operator": "eq"
                            },
                            "required": [
                              "field",
                              "operator"
                            ],
                            "properties": {
                              "field": {
                                "type": "string",
                                "example": "first_name",
                                "description": "The name of the attribute you want to filter against."
                              },
                              "value": {
                                "type": "string",
                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                              },
                              "operator": {
                                "enum": [
                                  "eq",
                                  "exists"
                                ],
                                "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."
                              }
                            },
                            "description": "Filter your audience by attribute."
                          }
                        }
                      },
                      "description": "Match *any* condition to return results."
                    }
                  }
                },
                {
                  "oneOf": [
                    {
                      "type": "object",
                      "title": "and",
                      "properties": {
                        "and": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "title": "People Filter",
                            "properties": {
                              "or": {
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "title": "segment",
                                      "properties": {
                                        "segment": {
                                          "type": "object",
                                          "title": "segment",
                                          "properties": {
                                            "id": {
                                              "type": "integer",
                                              "example": 4,
                                              "description": "The ID of the segment you want to return people from."
                                            }
                                          },
                                          "description": "Provide the `id` of a segment containing people you want to search for."
                                        }
                                      },
                                      "description": "Filter for people who belong to a segment."
                                    },
                                    {
                                      "type": "object",
                                      "title": "audience",
                                      "properties": {
                                        "attribute": {
                                          "type": "object",
                                          "title": "attribute",
                                          "example": {
                                            "field": "unsubscribed",
                                            "value": true,
                                            "operator": "eq"
                                          },
                                          "required": [
                                            "field",
                                            "operator"
                                          ],
                                          "properties": {
                                            "field": {
                                              "type": "string",
                                              "example": "first_name",
                                              "description": "The name of the attribute you want to filter against."
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                            },
                                            "operator": {
                                              "enum": [
                                                "eq",
                                                "exists"
                                              ],
                                              "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."
                                            }
                                          },
                                          "description": "Filter your audience by attribute."
                                        }
                                      },
                                      "description": "filter for people who have an attribute or an attribute value."
                                    }
                                  ]
                                },
                                "description": "Returns results matching *any* conditions."
                              },
                              "and": {
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "title": "segment",
                                      "properties": {
                                        "segment": {
                                          "type": "object",
                                          "title": "segment",
                                          "properties": {
                                            "id": {
                                              "type": "integer",
                                              "example": 4,
                                              "description": "The ID of the segment you want to return people from."
                                            }
                                          },
                                          "description": "Provide the `id` of a segment containing people you want to search for."
                                        }
                                      },
                                      "description": "Filter for people who belong to a segment."
                                    },
                                    {
                                      "type": "object",
                                      "title": "audience",
                                      "properties": {
                                        "attribute": {
                                          "type": "object",
                                          "title": "attribute",
                                          "example": {
                                            "field": "unsubscribed",
                                            "value": true,
                                            "operator": "eq"
                                          },
                                          "required": [
                                            "field",
                                            "operator"
                                          ],
                                          "properties": {
                                            "field": {
                                              "type": "string",
                                              "example": "first_name",
                                              "description": "The name of the attribute you want to filter against."
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                            },
                                            "operator": {
                                              "enum": [
                                                "eq",
                                                "exists"
                                              ],
                                              "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."
                                            }
                                          },
                                          "description": "Filter your audience by attribute."
                                        }
                                      },
                                      "description": "filter for people who have an attribute or an attribute value."
                                    }
                                  ]
                                },
                                "description": "Returns results matching *all* conditions."
                              },
                              "not": {
                                "oneOf": [
                                  {
                                    "type": "object",
                                    "title": "and",
                                    "properties": {
                                      "and": {
                                        "type": "array",
                                        "items": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "title": "segment",
                                              "properties": {
                                                "segment": {
                                                  "type": "object",
                                                  "title": "segment",
                                                  "properties": {
                                                    "id": {
                                                      "type": "integer",
                                                      "example": 4,
                                                      "description": "The ID of the segment you want to return people from."
                                                    }
                                                  },
                                                  "description": "Provide the `id` of a segment containing people you want to search for."
                                                }
                                              },
                                              "description": "Filter for people who belong to a segment."
                                            },
                                            {
                                              "type": "object",
                                              "title": "audience",
                                              "properties": {
                                                "attribute": {
                                                  "type": "object",
                                                  "title": "attribute",
                                                  "example": {
                                                    "field": "unsubscribed",
                                                    "value": true,
                                                    "operator": "eq"
                                                  },
                                                  "required": [
                                                    "field",
                                                    "operator"
                                                  ],
                                                  "properties": {
                                                    "field": {
                                                      "type": "string",
                                                      "example": "first_name",
                                                      "description": "The name of the attribute you want to filter against."
                                                    },
                                                    "value": {
                                                      "type": "string",
                                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                    },
                                                    "operator": {
                                                      "enum": [
                                                        "eq",
                                                        "exists"
                                                      ],
                                                      "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."
                                                    }
                                                  },
                                                  "description": "Filter your audience by attribute."
                                                }
                                              },
                                              "description": "filter for people who have an attribute or an attribute value."
                                            }
                                          ]
                                        },
                                        "description": "Match *all* conditions to return results."
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "title": "or",
                                    "properties": {
                                      "or": {
                                        "type": "array",
                                        "items": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "title": "segment",
                                              "properties": {
                                                "segment": {
                                                  "type": "object",
                                                  "title": "segment",
                                                  "properties": {
                                                    "id": {
                                                      "type": "integer",
                                                      "example": 4,
                                                      "description": "The ID of the segment you want to return people from."
                                                    }
                                                  },
                                                  "description": "Provide the `id` of a segment containing people you want to search for."
                                                }
                                              },
                                              "description": "Filter for people who belong to a segment."
                                            },
                                            {
                                              "type": "object",
                                              "title": "audience",
                                              "properties": {
                                                "attribute": {
                                                  "type": "object",
                                                  "title": "attribute",
                                                  "example": {
                                                    "field": "unsubscribed",
                                                    "value": true,
                                                    "operator": "eq"
                                                  },
                                                  "required": [
                                                    "field",
                                                    "operator"
                                                  ],
                                                  "properties": {
                                                    "field": {
                                                      "type": "string",
                                                      "example": "first_name",
                                                      "description": "The name of the attribute you want to filter against."
                                                    },
                                                    "value": {
                                                      "type": "string",
                                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                    },
                                                    "operator": {
                                                      "enum": [
                                                        "eq",
                                                        "exists"
                                                      ],
                                                      "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."
                                                    }
                                                  },
                                                  "description": "Filter your audience by attribute."
                                                }
                                              },
                                              "description": "filter for people who have an attribute or an attribute value."
                                            }
                                          ]
                                        },
                                        "description": "Match *any* condition to return results."
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "title": "segment",
                                    "properties": {
                                      "segment": {
                                        "type": "object",
                                        "title": "segment",
                                        "properties": {
                                          "id": {
                                            "type": "integer",
                                            "example": 4,
                                            "description": "The ID of the segment you want to return people from."
                                          }
                                        },
                                        "description": "Provide the `id` of a segment containing people you want to search for."
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "title": "attribute",
                                    "properties": {
                                      "attribute": {
                                        "type": "object",
                                        "title": "attribute",
                                        "example": {
                                          "field": "unsubscribed",
                                          "value": true,
                                          "operator": "eq"
                                        },
                                        "required": [
                                          "field",
                                          "operator"
                                        ],
                                        "properties": {
                                          "field": {
                                            "type": "string",
                                            "example": "first_name",
                                            "description": "The name of the attribute you want to filter against."
                                          },
                                          "value": {
                                            "type": "string",
                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                          },
                                          "operator": {
                                            "enum": [
                                              "eq",
                                              "exists"
                                            ],
                                            "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."
                                          }
                                        },
                                        "description": "Filter your audience by attribute."
                                      }
                                    }
                                  }
                                ],
                                "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
                              },
                              "segment": {
                                "type": "object",
                                "title": "segment",
                                "properties": {
                                  "id": {
                                    "type": "integer",
                                    "example": 4,
                                    "description": "The ID of the segment you want to return people from."
                                  }
                                },
                                "description": "Provide the `id` of a segment containing people you want to search for."
                              },
                              "attribute": {
                                "type": "object",
                                "title": "attribute",
                                "example": {
                                  "field": "unsubscribed",
                                  "value": true,
                                  "operator": "eq"
                                },
                                "required": [
                                  "field",
                                  "operator"
                                ],
                                "properties": {
                                  "field": {
                                    "type": "string",
                                    "example": "first_name",
                                    "description": "The name of the attribute you want to filter against."
                                  },
                                  "value": {
                                    "type": "string",
                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                  },
                                  "operator": {
                                    "enum": [
                                      "eq",
                                      "exists"
                                    ],
                                    "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."
                                  }
                                },
                                "description": "Filter your audience by attribute."
                              }
                            },
                            "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."
                          },
                          "description": "Match *all* conditions to return results."
                        }
                      }
                    },
                    {
                      "type": "object",
                      "title": "or",
                      "properties": {
                        "or": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "title": "People Filter",
                            "properties": {
                              "or": {
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "title": "segment",
                                      "properties": {
                                        "segment": {
                                          "type": "object",
                                          "title": "segment",
                                          "properties": {
                                            "id": {
                                              "type": "integer",
                                              "example": 4,
                                              "description": "The ID of the segment you want to return people from."
                                            }
                                          },
                                          "description": "Provide the `id` of a segment containing people you want to search for."
                                        }
                                      },
                                      "description": "Filter for people who belong to a segment."
                                    },
                                    {
                                      "type": "object",
                                      "title": "audience",
                                      "properties": {
                                        "attribute": {
                                          "type": "object",
                                          "title": "attribute",
                                          "example": {
                                            "field": "unsubscribed",
                                            "value": true,
                                            "operator": "eq"
                                          },
                                          "required": [
                                            "field",
                                            "operator"
                                          ],
                                          "properties": {
                                            "field": {
                                              "type": "string",
                                              "example": "first_name",
                                              "description": "The name of the attribute you want to filter against."
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                            },
                                            "operator": {
                                              "enum": [
                                                "eq",
                                                "exists"
                                              ],
                                              "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."
                                            }
                                          },
                                          "description": "Filter your audience by attribute."
                                        }
                                      },
                                      "description": "filter for people who have an attribute or an attribute value."
                                    }
                                  ]
                                },
                                "description": "Returns results matching *any* conditions."
                              },
                              "and": {
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "title": "segment",
                                      "properties": {
                                        "segment": {
                                          "type": "object",
                                          "title": "segment",
                                          "properties": {
                                            "id": {
                                              "type": "integer",
                                              "example": 4,
                                              "description": "The ID of the segment you want to return people from."
                                            }
                                          },
                                          "description": "Provide the `id` of a segment containing people you want to search for."
                                        }
                                      },
                                      "description": "Filter for people who belong to a segment."
                                    },
                                    {
                                      "type": "object",
                                      "title": "audience",
                                      "properties": {
                                        "attribute": {
                                          "type": "object",
                                          "title": "attribute",
                                          "example": {
                                            "field": "unsubscribed",
                                            "value": true,
                                            "operator": "eq"
                                          },
                                          "required": [
                                            "field",
                                            "operator"
                                          ],
                                          "properties": {
                                            "field": {
                                              "type": "string",
                                              "example": "first_name",
                                              "description": "The name of the attribute you want to filter against."
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                            },
                                            "operator": {
                                              "enum": [
                                                "eq",
                                                "exists"
                                              ],
                                              "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."
                                            }
                                          },
                                          "description": "Filter your audience by attribute."
                                        }
                                      },
                                      "description": "filter for people who have an attribute or an attribute value."
                                    }
                                  ]
                                },
                                "description": "Returns results matching *all* conditions."
                              },
                              "not": {
                                "oneOf": [
                                  {
                                    "type": "object",
                                    "title": "and",
                                    "properties": {
                                      "and": {
                                        "type": "array",
                                        "items": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "title": "segment",
                                              "properties": {
                                                "segment": {
                                                  "type": "object",
                                                  "title": "segment",
                                                  "properties": {
                                                    "id": {
                                                      "type": "integer",
                                                      "example": 4,
                                                      "description": "The ID of the segment you want to return people from."
                                                    }
                                                  },
                                                  "description": "Provide the `id` of a segment containing people you want to search for."
                                                }
                                              },
                                              "description": "Filter for people who belong to a segment."
                                            },
                                            {
                                              "type": "object",
                                              "title": "audience",
                                              "properties": {
                                                "attribute": {
                                                  "type": "object",
                                                  "title": "attribute",
                                                  "example": {
                                                    "field": "unsubscribed",
                                                    "value": true,
                                                    "operator": "eq"
                                                  },
                                                  "required": [
                                                    "field",
                                                    "operator"
                                                  ],
                                                  "properties": {
                                                    "field": {
                                                      "type": "string",
                                                      "example": "first_name",
                                                      "description": "The name of the attribute you want to filter against."
                                                    },
                                                    "value": {
                                                      "type": "string",
                                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                    },
                                                    "operator": {
                                                      "enum": [
                                                        "eq",
                                                        "exists"
                                                      ],
                                                      "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."
                                                    }
                                                  },
                                                  "description": "Filter your audience by attribute."
                                                }
                                              },
                                              "description": "filter for people who have an attribute or an attribute value."
                                            }
                                          ]
                                        },
                                        "description": "Match *all* conditions to return results."
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "title": "or",
                                    "properties": {
                                      "or": {
                                        "type": "array",
                                        "items": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "title": "segment",
                                              "properties": {
                                                "segment": {
                                                  "type": "object",
                                                  "title": "segment",
                                                  "properties": {
                                                    "id": {
                                                      "type": "integer",
                                                      "example": 4,
                                                      "description": "The ID of the segment you want to return people from."
                                                    }
                                                  },
                                                  "description": "Provide the `id` of a segment containing people you want to search for."
                                                }
                                              },
                                              "description": "Filter for people who belong to a segment."
                                            },
                                            {
                                              "type": "object",
                                              "title": "audience",
                                              "properties": {
                                                "attribute": {
                                                  "type": "object",
                                                  "title": "attribute",
                                                  "example": {
                                                    "field": "unsubscribed",
                                                    "value": true,
                                                    "operator": "eq"
                                                  },
                                                  "required": [
                                                    "field",
                                                    "operator"
                                                  ],
                                                  "properties": {
                                                    "field": {
                                                      "type": "string",
                                                      "example": "first_name",
                                                      "description": "The name of the attribute you want to filter against."
                                                    },
                                                    "value": {
                                                      "type": "string",
                                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                    },
                                                    "operator": {
                                                      "enum": [
                                                        "eq",
                                                        "exists"
                                                      ],
                                                      "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."
                                                    }
                                                  },
                                                  "description": "Filter your audience by attribute."
                                                }
                                              },
                                              "description": "filter for people who have an attribute or an attribute value."
                                            }
                                          ]
                                        },
                                        "description": "Match *any* condition to return results."
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "title": "segment",
                                    "properties": {
                                      "segment": {
                                        "type": "object",
                                        "title": "segment",
                                        "properties": {
                                          "id": {
                                            "type": "integer",
                                            "example": 4,
                                            "description": "The ID of the segment you want to return people from."
                                          }
                                        },
                                        "description": "Provide the `id` of a segment containing people you want to search for."
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "title": "attribute",
                                    "properties": {
                                      "attribute": {
                                        "type": "object",
                                        "title": "attribute",
                                        "example": {
                                          "field": "unsubscribed",
                                          "value": true,
                                          "operator": "eq"
                                        },
                                        "required": [
                                          "field",
                                          "operator"
                                        ],
                                        "properties": {
                                          "field": {
                                            "type": "string",
                                            "example": "first_name",
                                            "description": "The name of the attribute you want to filter against."
                                          },
                                          "value": {
                                            "type": "string",
                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                          },
                                          "operator": {
                                            "enum": [
                                              "eq",
                                              "exists"
                                            ],
                                            "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."
                                          }
                                        },
                                        "description": "Filter your audience by attribute."
                                      }
                                    }
                                  }
                                ],
                                "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
                              },
                              "segment": {
                                "type": "object",
                                "title": "segment",
                                "properties": {
                                  "id": {
                                    "type": "integer",
                                    "example": 4,
                                    "description": "The ID of the segment you want to return people from."
                                  }
                                },
                                "description": "Provide the `id` of a segment containing people you want to search for."
                              },
                              "attribute": {
                                "type": "object",
                                "title": "attribute",
                                "example": {
                                  "field": "unsubscribed",
                                  "value": true,
                                  "operator": "eq"
                                },
                                "required": [
                                  "field",
                                  "operator"
                                ],
                                "properties": {
                                  "field": {
                                    "type": "string",
                                    "example": "first_name",
                                    "description": "The name of the attribute you want to filter against."
                                  },
                                  "value": {
                                    "type": "string",
                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                  },
                                  "operator": {
                                    "enum": [
                                      "eq",
                                      "exists"
                                    ],
                                    "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."
                                  }
                                },
                                "description": "Filter your audience by attribute."
                              }
                            },
                            "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."
                          },
                          "description": "Match *any* condition to return results."
                        }
                      }
                    },
                    {
                      "type": "object",
                      "title": "segment",
                      "properties": {
                        "segment": {
                          "type": "object",
                          "title": "segment",
                          "properties": {
                            "id": {
                              "type": "integer",
                              "example": 4,
                              "description": "The ID of the segment you want to return people from."
                            }
                          },
                          "description": "Provide the `id` of a segment containing people you want to search for."
                        }
                      }
                    },
                    {
                      "type": "object",
                      "title": "attribute",
                      "properties": {
                        "attribute": {
                          "type": "object",
                          "title": "attribute",
                          "example": {
                            "field": "unsubscribed",
                            "value": true,
                            "operator": "eq"
                          },
                          "required": [
                            "field",
                            "operator"
                          ],
                          "properties": {
                            "field": {
                              "type": "string",
                              "example": "first_name",
                              "description": "The name of the attribute you want to filter against."
                            },
                            "value": {
                              "type": "string",
                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                            },
                            "operator": {
                              "enum": [
                                "eq",
                                "exists"
                              ],
                              "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."
                            }
                          },
                          "description": "Filter your audience by attribute."
                        }
                      }
                    }
                  ],
                  "title": "not",
                  "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
                },
                {
                  "type": "object",
                  "title": "segment",
                  "properties": {
                    "segment": {
                      "type": "object",
                      "title": "segment",
                      "properties": {
                        "id": {
                          "type": "integer",
                          "example": 4,
                          "description": "The ID of the segment you want to return people from."
                        }
                      },
                      "description": "Provide the `id` of a segment containing people you want to search for."
                    }
                  },
                  "description": "Filter for people who belong to a segment."
                },
                {
                  "type": "object",
                  "title": "audience",
                  "properties": {
                    "attribute": {
                      "type": "object",
                      "title": "attribute",
                      "example": {
                        "field": "unsubscribed",
                        "value": true,
                        "operator": "eq"
                      },
                      "required": [
                        "field",
                        "operator"
                      ],
                      "properties": {
                        "field": {
                          "type": "string",
                          "example": "first_name",
                          "description": "The name of the attribute you want to filter against."
                        },
                        "value": {
                          "type": "string",
                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                        },
                        "operator": {
                          "enum": [
                            "eq",
                            "exists"
                          ],
                          "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."
                        }
                      },
                      "description": "Filter your audience by attribute."
                    }
                  },
                  "description": "filter for people who have an attribute or an attribute value."
                }
              ],
              "title": "Audience Filter",
              "description": "A filter defining the group of people that you want send the broadcast to."
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "object",
              "example": {
                "date": 1511315635,
                "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!",
                "headline": "Roadrunner spotted in Albuquerque!"
              },
              "description": "Contains information you want to use to populate your broadcast.",
              "additionalProperties": {
                "description": "Insert key-values that you want to reference in your message here.",
                "x-additionalPropertiesName": "Broadcast liquid data"
              }
            },
            "id_ignore_missing": {
              "type": "boolean",
              "default": false,
              "description": "If false, a missing customer ID is an error."
            },
            "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."
            }
          }
        }
      ],
      "title": "Custom recipients",
      "example": {
        "data": {
          "date": 1511315635,
          "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!",
          "headline": "Roadrunner spotted in Albuquerque!"
        },
        "recipients": {
          "and": [
            {
              "segment": {
                "id": 3
              }
            },
            {
              "or": [
                {
                  "attribute": {
                    "field": "interest",
                    "value": "roadrunners",
                    "operator": "eq"
                  }
                },
                {
                  "attribute": {
                    "field": "state",
                    "value": "NM",
                    "operator": "eq"
                  }
                },
                {
                  "not": {
                    "attribute": {
                      "field": "species",
                      "value": "roadrunners",
                      "operator": "eq"
                    }
                  }
                }
              ]
            }
          ]
        }
      },
      "description": "Send your broadcast to a group of people defined by a set of filters."
    },
    {
      "allOf": [
        {
          "type": "object",
          "required": [
            "emails"
          ],
          "properties": {
            "emails": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "email"
              },
              "example": [
                "recipient1@example.com",
                "anotherRecipient@example.com"
              ],
              "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": "object",
          "properties": {
            "data": {
              "type": "object",
              "example": {
                "date": 1511315635,
                "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!",
                "headline": "Roadrunner spotted in Albuquerque!"
              },
              "description": "Contains information you want to use to populate your broadcast.",
              "additionalProperties": {
                "description": "Insert key-values that you want to reference in your message here.",
                "x-additionalPropertiesName": "Broadcast liquid data"
              }
            },
            "id_ignore_missing": {
              "type": "boolean",
              "default": false,
              "description": "If false, a missing customer ID is an error."
            },
            "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."
            }
          }
        }
      ],
      "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": [
            "ids"
          ],
          "properties": {
            "ids": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": [
                "id1",
                "id4"
              ],
              "maxItems": 10000,
              "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": "object",
          "properties": {
            "data": {
              "type": "object",
              "example": {
                "date": 1511315635,
                "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!",
                "headline": "Roadrunner spotted in Albuquerque!"
              },
              "description": "Contains information you want to use to populate your broadcast.",
              "additionalProperties": {
                "description": "Insert key-values that you want to reference in your message here.",
                "x-additionalPropertiesName": "Broadcast liquid data"
              }
            },
            "id_ignore_missing": {
              "type": "boolean",
              "default": false,
              "description": "If false, a missing customer ID is an error."
            },
            "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."
            }
          }
        }
      ],
      "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": [
            "per_user_data"
          ],
          "properties": {
            "per_user_data": {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "ids",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "example": 1,
                        "description": "The ID of the recipient."
                      },
                      "data": {
                        "type": "object",
                        "example": {
                          "lastName": "Mann",
                          "purchase": "shoes",
                          "firstName": "Hugh"
                        },
                        "description": "Merge data associated with the recipient.",
                        "additionalProperties": {
                          "description": "Insert key-values that you want to reference in your message here.",
                          "x-additionalPropertiesName": "Liquid merge data"
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "emails",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "data": {
                        "type": "object",
                        "example": {
                          "lastName": "Mann",
                          "purchase": "shoes",
                          "firstName": "Hugh"
                        },
                        "description": "Merge data associated with the recipient.",
                        "additionalProperties": {
                          "description": "Insert key-values that you want to reference in your message here.",
                          "x-additionalPropertiesName": "Liquid merge data"
                        }
                      },
                      "email": {
                        "type": "string",
                        "example": "recipient1@example.com",
                        "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": [
                {
                  "id": "wiley_coyote",
                  "data": {
                    "voucher_code": "FESwYm"
                  }
                },
                {
                  "data": {
                    "voucher_code": "cYm6XJ"
                  },
                  "email": "road@runner.net"
                }
              ],
              "maxItems": 10000,
              "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\n**Remove line-breaks from `per_user_data`**. We've added line breaks in examples to make the code easy to read, but you must remove line breaks (collapsing/uglifying your payload) to prevent errors.\n"
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "object",
              "example": {
                "date": 1511315635,
                "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!",
                "headline": "Roadrunner spotted in Albuquerque!"
              },
              "description": "Contains information you want to use to populate your broadcast.",
              "additionalProperties": {
                "description": "Insert key-values that you want to reference in your message here.",
                "x-additionalPropertiesName": "Broadcast liquid data"
              }
            },
            "id_ignore_missing": {
              "type": "boolean",
              "default": false,
              "description": "If false, a missing customer ID is an error."
            },
            "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."
            }
          }
        }
      ],
      "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": [
            "data_file_url"
          ],
          "properties": {
            "data_file_url": {
              "type": "string",
              "format": "url",
              "example": "https://myFile.example.com",
              "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": "object",
          "properties": {
            "data": {
              "type": "object",
              "example": {
                "date": 1511315635,
                "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!",
                "headline": "Roadrunner spotted in Albuquerque!"
              },
              "description": "Contains information you want to use to populate your broadcast.",
              "additionalProperties": {
                "description": "Insert key-values that you want to reference in your message here.",
                "x-additionalPropertiesName": "Broadcast liquid data"
              }
            },
            "id_ignore_missing": {
              "type": "boolean",
              "default": false,
              "description": "If false, a missing customer ID is an error."
            },
            "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."
            }
          }
        }
      ],
      "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"
    }
  ]
}
integer campaign_id
{
  "type": "integer",
  "example": 5,
  "description": "The identifier for a campaign."
}
string cio_id
{
  "type": "string",
  "example": "a3000001",
  "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers."
}
object cio_subscription_preferences
{
  "type": "object",
  "example": {
    "topic_1": true,
    "topic_2": false,
    "topic_3": true
  },
  "properties": {
    "topics": {
      "type": "object",
      "description": "Contains active topics in your workspace, named `topic_<id>`.",
      "additionalProperties": {
        "type": "boolean",
        "description": "Each property is a boolean named `topic_<id>`. 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/docs/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).",
        "x-additionalPropertiesName": "topic_<id>"
      }
    }
  },
  "description": "Stores your audience's subscription preferences if you enable our [subscription center](https://customer.io/docs/api/app/) 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>`."
}
object collectionResponse
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "example": 1,
      "description": "The identifier for the collection. This is how you'll reference the collection from the API."
    },
    "name": {
      "type": "string",
      "example": "upcoming events",
      "description": "The name of the collection. This is how you'll reference the collection in liquid, e.g. `{{collection_name.data_property}}`."
    },
    "rows": {
      "type": "integer",
      "example": 2,
      "description": "Represents the number of objects in the `data` array or CSV rows in your collection schema."
    },
    "bytes": {
      "type": "integer",
      "example": 296,
      "description": "The size of the collection in bytes."
    },
    "schema": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "example": [
        "eventDate",
        "eventName",
        "presents"
      ],
      "description": "Lists the top-level keys that you can reference within this collection. Customer.io does not enforce any of these keys as required from your `data`."
    },
    "created_at": {
      "type": "integer",
      "format": "unix timestamp",
      "example": 1552341937,
      "readOnly": true,
      "description": "The date time when the referenced ID was created."
    },
    "updated_at": {
      "type": "integer",
      "format": "unix timestamp",
      "example": 1552341937,
      "readOnly": true,
      "description": "The date time when the referenced ID was last updated."
    }
  }
}
object commonTriggerProps
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "example": {
        "date": 1511315635,
        "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!",
        "headline": "Roadrunner spotted in Albuquerque!"
      },
      "description": "Contains information you want to use to populate your broadcast.",
      "additionalProperties": {
        "description": "Insert key-values that you want to reference in your message here.",
        "x-additionalPropertiesName": "Broadcast liquid data"
      }
    },
    "id_ignore_missing": {
      "type": "boolean",
      "default": false,
      "description": "If false, a missing customer ID is an error."
    },
    "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."
    }
  }
}
object complexAudienceFilter
{
  "type": "object",
  "title": "People Filter",
  "properties": {
    "or": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "title": "segment",
            "properties": {
              "segment": {
                "type": "object",
                "title": "segment",
                "properties": {
                  "id": {
                    "type": "integer",
                    "example": 4,
                    "description": "The ID of the segment you want to return people from."
                  }
                },
                "description": "Provide the `id` of a segment containing people you want to search for."
              }
            },
            "description": "Filter for people who belong to a segment."
          },
          {
            "type": "object",
            "title": "audience",
            "properties": {
              "attribute": {
                "type": "object",
                "title": "attribute",
                "example": {
                  "field": "unsubscribed",
                  "value": true,
                  "operator": "eq"
                },
                "required": [
                  "field",
                  "operator"
                ],
                "properties": {
                  "field": {
                    "type": "string",
                    "example": "first_name",
                    "description": "The name of the attribute you want to filter against."
                  },
                  "value": {
                    "type": "string",
                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                  },
                  "operator": {
                    "enum": [
                      "eq",
                      "exists"
                    ],
                    "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."
                  }
                },
                "description": "Filter your audience by attribute."
              }
            },
            "description": "filter for people who have an attribute or an attribute value."
          }
        ]
      },
      "description": "Returns results matching *any* conditions."
    },
    "and": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "title": "segment",
            "properties": {
              "segment": {
                "type": "object",
                "title": "segment",
                "properties": {
                  "id": {
                    "type": "integer",
                    "example": 4,
                    "description": "The ID of the segment you want to return people from."
                  }
                },
                "description": "Provide the `id` of a segment containing people you want to search for."
              }
            },
            "description": "Filter for people who belong to a segment."
          },
          {
            "type": "object",
            "title": "audience",
            "properties": {
              "attribute": {
                "type": "object",
                "title": "attribute",
                "example": {
                  "field": "unsubscribed",
                  "value": true,
                  "operator": "eq"
                },
                "required": [
                  "field",
                  "operator"
                ],
                "properties": {
                  "field": {
                    "type": "string",
                    "example": "first_name",
                    "description": "The name of the attribute you want to filter against."
                  },
                  "value": {
                    "type": "string",
                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                  },
                  "operator": {
                    "enum": [
                      "eq",
                      "exists"
                    ],
                    "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."
                  }
                },
                "description": "Filter your audience by attribute."
              }
            },
            "description": "filter for people who have an attribute or an attribute value."
          }
        ]
      },
      "description": "Returns results matching *all* conditions."
    },
    "not": {
      "oneOf": [
        {
          "type": "object",
          "title": "and",
          "properties": {
            "and": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "object",
                    "title": "segment",
                    "properties": {
                      "segment": {
                        "type": "object",
                        "title": "segment",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "example": 4,
                            "description": "The ID of the segment you want to return people from."
                          }
                        },
                        "description": "Provide the `id` of a segment containing people you want to search for."
                      }
                    },
                    "description": "Filter for people who belong to a segment."
                  },
                  {
                    "type": "object",
                    "title": "audience",
                    "properties": {
                      "attribute": {
                        "type": "object",
                        "title": "attribute",
                        "example": {
                          "field": "unsubscribed",
                          "value": true,
                          "operator": "eq"
                        },
                        "required": [
                          "field",
                          "operator"
                        ],
                        "properties": {
                          "field": {
                            "type": "string",
                            "example": "first_name",
                            "description": "The name of the attribute you want to filter against."
                          },
                          "value": {
                            "type": "string",
                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                          },
                          "operator": {
                            "enum": [
                              "eq",
                              "exists"
                            ],
                            "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."
                          }
                        },
                        "description": "Filter your audience by attribute."
                      }
                    },
                    "description": "filter for people who have an attribute or an attribute value."
                  }
                ]
              },
              "description": "Match *all* conditions to return results."
            }
          }
        },
        {
          "type": "object",
          "title": "or",
          "properties": {
            "or": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "object",
                    "title": "segment",
                    "properties": {
                      "segment": {
                        "type": "object",
                        "title": "segment",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "example": 4,
                            "description": "The ID of the segment you want to return people from."
                          }
                        },
                        "description": "Provide the `id` of a segment containing people you want to search for."
                      }
                    },
                    "description": "Filter for people who belong to a segment."
                  },
                  {
                    "type": "object",
                    "title": "audience",
                    "properties": {
                      "attribute": {
                        "type": "object",
                        "title": "attribute",
                        "example": {
                          "field": "unsubscribed",
                          "value": true,
                          "operator": "eq"
                        },
                        "required": [
                          "field",
                          "operator"
                        ],
                        "properties": {
                          "field": {
                            "type": "string",
                            "example": "first_name",
                            "description": "The name of the attribute you want to filter against."
                          },
                          "value": {
                            "type": "string",
                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                          },
                          "operator": {
                            "enum": [
                              "eq",
                              "exists"
                            ],
                            "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."
                          }
                        },
                        "description": "Filter your audience by attribute."
                      }
                    },
                    "description": "filter for people who have an attribute or an attribute value."
                  }
                ]
              },
              "description": "Match *any* condition to return results."
            }
          }
        },
        {
          "type": "object",
          "title": "segment",
          "properties": {
            "segment": {
              "type": "object",
              "title": "segment",
              "properties": {
                "id": {
                  "type": "integer",
                  "example": 4,
                  "description": "The ID of the segment you want to return people from."
                }
              },
              "description": "Provide the `id` of a segment containing people you want to search for."
            }
          }
        },
        {
          "type": "object",
          "title": "attribute",
          "properties": {
            "attribute": {
              "type": "object",
              "title": "attribute",
              "example": {
                "field": "unsubscribed",
                "value": true,
                "operator": "eq"
              },
              "required": [
                "field",
                "operator"
              ],
              "properties": {
                "field": {
                  "type": "string",
                  "example": "first_name",
                  "description": "The name of the attribute you want to filter against."
                },
                "value": {
                  "type": "string",
                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                },
                "operator": {
                  "enum": [
                    "eq",
                    "exists"
                  ],
                  "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."
                }
              },
              "description": "Filter your audience by attribute."
            }
          }
        }
      ],
      "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
    },
    "segment": {
      "type": "object",
      "title": "segment",
      "properties": {
        "id": {
          "type": "integer",
          "example": 4,
          "description": "The ID of the segment you want to return people from."
        }
      },
      "description": "Provide the `id` of a segment containing people you want to search for."
    },
    "attribute": {
      "type": "object",
      "title": "attribute",
      "example": {
        "field": "unsubscribed",
        "value": true,
        "operator": "eq"
      },
      "required": [
        "field",
        "operator"
      ],
      "properties": {
        "field": {
          "type": "string",
          "example": "first_name",
          "description": "The name of the attribute you want to filter against."
        },
        "value": {
          "type": "string",
          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
        },
        "operator": {
          "enum": [
            "eq",
            "exists"
          ],
          "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."
        }
      },
      "description": "Filter your audience by attribute."
    }
  },
  "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."
}
object complexObjectFilter
{
  "type": "object",
  "title": "Object Filter",
  "properties": {
    "or": {
      "type": "array",
      "items": {
        "type": "object",
        "title": "object attribute",
        "example": {
          "field": "cancelled",
          "value": true,
          "operator": "eq"
        },
        "required": [
          "field",
          "operator"
        ],
        "properties": {
          "field": {
            "type": "string",
            "example": "location",
            "description": "The name of the attribute you want to filter against."
          },
          "value": {
            "type": "string",
            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
          },
          "operator": {
            "enum": [
              "eq",
              "exists"
            ],
            "type": "string",
            "description": "Determine how to evaluate criteria against the field—`exists` returns results if an object has the attribute; `eq` returns results an object's attribute exists and the attribute has the `value` you specify."
          }
        },
        "description": "Filter your objects by their attributes."
      },
      "description": "Returns results matching *any* conditions."
    },
    "and": {
      "type": "array",
      "items": {
        "type": "object",
        "title": "object attribute",
        "example": {
          "field": "cancelled",
          "value": true,
          "operator": "eq"
        },
        "required": [
          "field",
          "operator"
        ],
        "properties": {
          "field": {
            "type": "string",
            "example": "location",
            "description": "The name of the attribute you want to filter against."
          },
          "value": {
            "type": "string",
            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
          },
          "operator": {
            "enum": [
              "eq",
              "exists"
            ],
            "type": "string",
            "description": "Determine how to evaluate criteria against the field—`exists` returns results if an object has the attribute; `eq` returns results an object's attribute exists and the attribute has the `value` you specify."
          }
        },
        "description": "Filter your objects by their attributes."
      },
      "description": "Returns results matching *all* conditions."
    },
    "not": {
      "oneOf": [
        {
          "type": "object",
          "title": "and",
          "properties": {
            "and": {
              "type": "array",
              "items": {
                "type": "object",
                "title": "object attribute",
                "example": {
                  "field": "cancelled",
                  "value": true,
                  "operator": "eq"
                },
                "required": [
                  "field",
                  "operator"
                ],
                "properties": {
                  "field": {
                    "type": "string",
                    "example": "location",
                    "description": "The name of the attribute you want to filter against."
                  },
                  "value": {
                    "type": "string",
                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                  },
                  "operator": {
                    "enum": [
                      "eq",
                      "exists"
                    ],
                    "type": "string",
                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if an object has the attribute; `eq` returns results an object's attribute exists and the attribute has the `value` you specify."
                  }
                },
                "description": "Filter your objects by their attributes."
              },
              "description": "Match *all* conditions to return results."
            }
          }
        },
        {
          "type": "object",
          "title": "or",
          "properties": {
            "or": {
              "type": "array",
              "items": {
                "type": "object",
                "title": "object attribute",
                "example": {
                  "field": "cancelled",
                  "value": true,
                  "operator": "eq"
                },
                "required": [
                  "field",
                  "operator"
                ],
                "properties": {
                  "field": {
                    "type": "string",
                    "example": "location",
                    "description": "The name of the attribute you want to filter against."
                  },
                  "value": {
                    "type": "string",
                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                  },
                  "operator": {
                    "enum": [
                      "eq",
                      "exists"
                    ],
                    "type": "string",
                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if an object has the attribute; `eq` returns results an object's attribute exists and the attribute has the `value` you specify."
                  }
                },
                "description": "Filter your objects by their attributes."
              },
              "description": "Match *any* condition to return results."
            }
          }
        },
        {
          "type": "object",
          "title": "object attribute",
          "properties": {
            "object_attribute": {
              "type": "object",
              "title": "object attribute",
              "example": {
                "field": "cancelled",
                "value": true,
                "type_id": 1,
                "operator": "eq"
              },
              "required": [
                "field",
                "operator",
                "type_id"
              ],
              "properties": {
                "field": {
                  "type": "string",
                  "example": "location",
                  "description": "The name of the attribute you want to filter against."
                },
                "value": {
                  "type": "string",
                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                },
                "type_id": {
                  "type": "string",
                  "example": "1",
                  "nullable": false,
                  "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."
                },
                "operator": {
                  "enum": [
                    "eq",
                    "exists"
                  ],
                  "type": "string",
                  "description": "Determine how to evaluate criteria against the field—`exists` returns results if an object has the attribute; `eq` returns results an object's attribute exists and the attribute has the `value` you specify."
                }
              },
              "description": "Filter your objects by their attributes."
            }
          }
        }
      ],
      "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object."
    },
    "object_attribute": {
      "type": "object",
      "title": "object attribute",
      "example": {
        "field": "cancelled",
        "value": true,
        "type_id": 1,
        "operator": "eq"
      },
      "required": [
        "field",
        "operator",
        "type_id"
      ],
      "properties": {
        "field": {
          "type": "string",
          "example": "location",
          "description": "The name of the attribute you want to filter against."
        },
        "value": {
          "type": "string",
          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
        },
        "type_id": {
          "type": "string",
          "example": "1",
          "nullable": false,
          "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."
        },
        "operator": {
          "enum": [
            "eq",
            "exists"
          ],
          "type": "string",
          "description": "Determine how to evaluate criteria against the field—`exists` returns results if an object has the attribute; `eq` returns results an object's attribute exists and the attribute has the `value` you specify."
        }
      },
      "description": "Filter your objects by their attributes."
    }
  },
  "description": "When filtering for objects, 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."
}
object conditionalWidget
{
  "type": "object",
  "properties": {
    "true": {
      "type": "object",
      "description": "The component you want to show when your condition is true."
    },
    "type": {
      "enum": [
        "conditionalWidget"
      ],
      "type": "string",
      "description": "Defines the widget type."
    },
    "false": {
      "type": "object",
      "description": "The component you want to show when your condition is false."
    },
    "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."
    }
  },
  "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."
}
object contentObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test."
    },
    "bcc": {
      "type": "string",
      "readOnly": true,
      "description": "The blind-copy address(es) for this action."
    },
    "body": {
      "type": "string",
      "example": "<strong>Hello from the API</strong>",
      "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor."
    },
    "from": {
      "type": "string",
      "example": "sentFrom@example.com",
      "readOnly": true,
      "description": "The address that the message is from, relevant if the action `type` is `email`."
    },
    "name": {
      "type": "string",
      "example": "newsletter variant A",
      "readOnly": true,
      "description": "The name of the variant, if it exists."
    },
    "type": {
      "enum": [
        "email",
        "webhook",
        "twilio",
        "slack",
        "push"
      ],
      "type": "string",
      "example": "email",
      "readOnly": true,
      "description": "The type of message/action."
    },
    "layout": {
      "type": "string",
      "example": "<html><body>{{ content }}</body></html>",
      "readOnly": true,
      "description": "The layout used for the variant, if it exists."
    },
    "from_id": {
      "type": "integer",
      "example": 1,
      "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](https://customer.io/docs/api/app/) to match the ID to a specific address."
    },
    "headers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "X-Mailgun-Tag",
            "description": "name of header"
          },
          "value": {
            "type": "string",
            "example": "tag-name-for-tracking",
            "description": "value of header"
          }
        }
      },
      "description": "Headers must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten."
    },
    "subject": {
      "type": "string",
      "example": "Did you get that thing I sent you?",
      "description": "The subject line for an `email` action."
    },
    "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."
    },
    "fake_bcc": {
      "type": "boolean",
      "readOnly": true,
      "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"
    },
    "language": {
      "type": "string",
      "example": "fr",
      "readOnly": true,
      "description": "The language variant for your message. If you don't use our [localization feature](https://customer.io/docs/api/app/), or this is the default message, this value is an empty string."
    },
    "reply_to": {
      "type": "string",
      "example": "replyto@example.com",
      "readOnly": true,
      "description": "The address that receives replies for the message, if applicable."
    },
    "recipient": {
      "type": "string",
      "example": "{{customer.email}}",
      "description": "The recipient address for an action."
    },
    "reply_to_id": {
      "type": "integer",
      "example": 38,
      "nullable": true,
      "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](https://customer.io/docs/api/app/) to match the ID to a specific address."
    },
    "preprocessor": {
      "enum": [
        "premailer"
      ],
      "type": "string",
      "readOnly": true,
      "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."
    },
    "newsletter_id": {
      "type": "integer",
      "example": 10,
      "readOnly": true,
      "description": "The identifier for a newsletter."
    },
    "deduplicate_id": {
      "type": "string",
      "example": "15:1492548073",
      "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."
    },
    "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."
    }
  }
}
integer content_id
{
  "type": "integer",
  "example": 1,
  "nullable": true,
  "readOnly": true,
  "description": "The identifier for a newsletter variant."
}
integer content_id_event
{
  "type": "integer",
  "example": 3,
  "description": "The identifier for a newsletter variant."
}
integer created
{
  "type": "integer",
  "format": "unix timestamp",
  "example": 1552341937,
  "readOnly": true,
  "description": "The date time when the referenced ID was created."
}
object customAndroidProps
{
  "type": "object",
  "properties": {
    "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"
    },
    "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."
    },
    "color": {
      "type": "string",
      "description": "The notification's icon color in `#rrggbb` format."
    },
    "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/`."
    },
    "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."
    },
    "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."
    },
    "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."
    },
    "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_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."
    }
  },
  "description": "Properties supported specifically by Android on FCM."
}
object customerAttributesObject
{
  "type": "object",
  "example": {
    "customer": {
      "id": "1X",
      "devices": [
        {
          "id": "my_android_device_id",
          "platform": "android",
          "last_used": 1514764800
        },
        {
          "id": "my_ios_device_id",
          "platform": "ios",
          "last_used": 1514764800
        }
      ],
      "attributes": {
        "id": "1X",
        "email": "test@example.com",
        "title": "tester",
        "cio_id": "03000001",
        "created_at": "1489014595",
        "department": "qa",
        "_last_emailed": "1528932553",
        "cio_subscription_preferences": "{\"topics\":{\"topic_7\":false,\"topic_8\":false}}",
        "_cio_subscription_preferences_computed": "{\"topics\":{\"topic_6\":false,\"topic_7\":false,\"topic_8\":false}}"
      },
      "timestamps": {
        "id": 1489014595,
        "email": 1508932553,
        "title": 1508932553,
        "cio_id": 1489014595,
        "created_at": 1489014595,
        "department": 1508932553,
        "_last_emailed": 1528932553,
        "cio_subscription_preferences": 1673987303,
        "_cio_subscription_preferences_computed": 0
      },
      "unsubscribed": false
    }
  },
  "properties": {
    "customer": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The customer ID referenced in the request."
        },
        "devices": {
          "type": "array",
          "items": {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The device token."
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "platform"
                ],
                "properties": {
                  "platform": {
                    "enum": [
                      "ios",
                      "android"
                    ],
                    "type": "string",
                    "description": "The device/messaging platform."
                  },
                  "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."
                  },
                  "attributes": {
                    "type": "object",
                    "properties": {
                      "device_os": {
                        "type": "string",
                        "description": "The operating system, including the version, on the device."
                      },
                      "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."
                      },
                      "_last_status": {
                        "enum": [
                          "",
                          "bounced",
                          "sent",
                          "suppressed"
                        ],
                        "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."
                      },
                      "device_model": {
                        "type": "string",
                        "description": "The model of the device a person uses."
                      },
                      "push_enabled": {
                        "enum": [
                          "true",
                          "false"
                        ],
                        "type": "string",
                        "description": "If `\"true\"`, the device is opted-in and can receive push notifications."
                      },
                      "device_locale": {
                        "type": "string",
                        "description": "The four-letter [IETF language code](https://customer.io/docs/api/app/) 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)."
                      },
                      "cio_sdk_version": {
                        "type": "string",
                        "description": "The version of the Customer.io SDK in the app."
                      }
                    },
                    "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.",
                    "additionalProperties": {
                      "type": "string",
                      "description": "Custom properties that you want to associate with the device.",
                      "x-additionalPropertiesName": "Custom Device Attributes"
                    }
                  }
                },
                "description": "Device information common to the v1 and v2 APIs."
              }
            ],
            "description": "The properties representing an individual device. [Our SDK's](https://customer.io/docs/api/app/) 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."
          },
          "description": "Lists the devices associated with the customer profile."
        },
        "attributes": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "example": "42",
              "nullable": true,
              "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."
            },
            "email": {
              "type": "string",
              "example": "test@example.com",
              "nullable": true,
              "description": "The email address of the customer."
            },
            "cio_id": {
              "type": "string",
              "example": "a3000001",
              "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers."
            },
            "cio_subscription_preferences": {
              "type": "string",
              "description": "A person's stringified subscription preferences. These are preferences that a person set through the subscription center or attributes that you set on a person. A person who hasn't set their subscription preferences has computed preferences based on the nature of your topics (opt-in or opt-out). See the `_cio_subscription_preferences_computed` attribute for computed preferences.\n"
            },
            "_cio_subscription_preferences_computed": {
              "type": "string",
              "description": "Returns the computed subscription preferences for a person—any subscription preferences set on a person and the defaults for any subscription preferences _not_ set on a person—as stringified JSON. For example, if you have an \"opt-in\" topic that a person hasn't set a preference for, that topic would show `false`—even though a person doesn't have that attribute on their profile. [Learn more about topics](https://customer.io/docs/api/app/).  \n"
            }
          },
          "description": "Contains attributes assigned to this profile, including your workspace's people-identifiers (by default, these are `id`, `email`, and `cio_id`). Attributes are all stored as strings.",
          "additionalProperties": {
            "type": "string",
            "description": "Non-identifier attributes assigned to this person.",
            "x-additionalPropertiesName": "additional attributes"
          }
        },
        "timestamps": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "format": "unix timestamp",
              "description": "The date-time when the person's ID was generated."
            },
            "email": {
              "type": "integer",
              "format": "unix timestamp",
              "description": "The date-time when the person's email address was added."
            },
            "cio_id": {
              "type": "integer",
              "format": "unix timestamp",
              "description": "The date-time when `cio_id` was assigned."
            },
            "unsubscribed": {
              "type": "integer",
              "format": "unix timestamp",
              "description": "The date-time when the person unsubscribed."
            },
            "_last_emailed": {
              "type": "integer",
              "format": "unix timestamp",
              "description": "The date-time when you last emailed a person."
            },
            "additionalProperties": {
              "format": "unix timestamp",
              "description": "Timestamps when attributes assigned to the person were set.",
              "x-additionalPropertiesName": "additional attribute timestamps"
            },
            "cio_subscription_preferences": {
              "type": "integer",
              "format": "unix timestamp",
              "description": "The datetime when a person's subscription preferences were last updated."
            },
            "_cio_subscription_preferences_computed": {
              "type": "integer",
              "description": "Because this value is computed and not actually set on a person, this value is always 0"
            }
          },
          "description": "The epoch timestamps when corresponding attributes were set on the customer profile."
        },
        "identifiers": {
          "type": "object",
          "required": [
            "email",
            "id",
            "cio_id"
          ],
          "properties": {
            "id": {
              "type": "string",
              "example": 2,
              "nullable": true,
              "description": "A person's unique ID, if set. This is the same as the `customer_id` if present."
            },
            "email": {
              "type": "string",
              "format": "email",
              "example": "test@example.com",
              "nullable": true,
              "description": "A person's email address, if set."
            },
            "cio_id": {
              "type": "string",
              "example": "a3000001",
              "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers."
            }
          },
          "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"
        },
        "unsubscribed": {
          "type": "boolean",
          "description": "If true, the person is unsubscribed from messages."
        }
      },
      "description": "The profile you referenced by ID in the request."
    }
  }
}
object customer_event
{
  "oneOf": [
    {
      "allOf": [
        {
          "type": "object",
          "required": [
            "metric"
          ],
          "properties": {
            "metric": {
              "enum": [
                "subscribed"
              ],
              "type": "string",
              "description": "The metric recorded by the event. For `customer` events, this is whether the customer explicitly subscribed or unsubscribed."
            }
          }
        },
        {
          "type": "object",
          "required": [
            "event_id",
            "object_type",
            "timestamp",
            "data"
          ],
          "properties": {
            "data": {
              "type": "object",
              "required": [
                "identifiers",
                "customer_id",
                "email_address"
              ],
              "properties": {
                "customer_id": {
                  "type": "string",
                  "example": "42",
                  "deprecated": true,
                  "description": "The ID of the person the webhook event occurred to. Blank if the person in question has been deleted.\n\nWhile webhooks may still contain this property, you should rely on the newer `identifiers` object wherever possible.\n"
                },
                "identifiers": {
                  "type": "object",
                  "required": [
                    "id"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "42",
                      "nullable": true,
                      "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."
                    },
                    "email": {
                      "type": "string",
                      "example": "test@example.com",
                      "nullable": true,
                      "description": "The email address of the customer."
                    },
                    "cio_id": {
                      "type": "string",
                      "example": "d9c106000001",
                      "description": "The canonical identifier for a person, present only if your workspace supports multiple identifiers (email and ID). This value exists to keep a record of a person in your workspace across changes to their other identifiers."
                    }
                  },
                  "description": "The person the event represents. This object contains all of the identifiers available to people in your workspace, even if they aren't set. If your workspace supports multiple identifiers (email and ID), this object contains `id`, `email` (either of which can be null), and `cio_id`. \n\nOtherwise, if your workspace only supports ID, this object just contains the `id` of the person the event represents.\n"
                },
                "email_address": {
                  "type": "string",
                  "example": "test@example.com",
                  "nullable": true,
                  "description": "The email address of the customer."
                }
              },
              "description": "Contains information about the event, specific to the `object_type` and `metric`."
            },
            "event_id": {
              "type": "string",
              "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ",
              "description": "The unique ID of the reporting webhook event being sent."
            },
            "timestamp": {
              "type": "integer",
              "format": "unix timestamp",
              "example": 1613063089,
              "description": "The unix timestamp when the event occurred."
            },
            "object_type": {
              "enum": [
                "customer"
              ],
              "type": "string",
              "example": "customer",
              "description": "The event represents a customer subscribing, unsubscribing, or changing their subscription preferences."
            }
          }
        }
      ],
      "title": "subscribed",
      "description": "A person subscribed to messages from you—their `unsubscribed` attribute was set to `false`."
    },
    {
      "allOf": [
        {
          "type": "object",
          "required": [
            "metric"
          ],
          "properties": {
            "metric": {
              "enum": [
                "unsubscribed"
              ],
              "type": "string",
              "description": "The metric recorded by the event. For `customer` events, this is whether the customer explicitly subscribed or unsubscribed."
            }
          }
        },
        {
          "type": "object",
          "required": [
            "event_id",
            "object_type",
            "timestamp",
            "data"
          ],
          "properties": {
            "data": {
              "type": "object",
              "required": [
                "identifiers",
                "customer_id",
                "email_address"
              ],
              "properties": {
                "customer_id": {
                  "type": "string",
                  "example": "42",
                  "deprecated": true,
                  "description": "The ID of the person the webhook event occurred to. Blank if the person in question has been deleted.\n\nWhile webhooks may still contain this property, you should rely on the newer `identifiers` object wherever possible.\n"
                },
                "identifiers": {
                  "type": "object",
                  "required": [
                    "id"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "42",
                      "nullable": true,
                      "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."
                    },
                    "email": {
                      "type": "string",
                      "example": "test@example.com",
                      "nullable": true,
                      "description": "The email address of the customer."
                    },
                    "cio_id": {
                      "type": "string",
                      "example": "d9c106000001",
                      "description": "The canonical identifier for a person, present only if your workspace supports multiple identifiers (email and ID). This value exists to keep a record of a person in your workspace across changes to their other identifiers."
                    }
                  },
                  "description": "The person the event represents. This object contains all of the identifiers available to people in your workspace, even if they aren't set. If your workspace supports multiple identifiers (email and ID), this object contains `id`, `email` (either of which can be null), and `cio_id`. \n\nOtherwise, if your workspace only supports ID, this object just contains the `id` of the person the event represents.\n"
                },
                "email_address": {
                  "type": "string",
                  "example": "test@example.com",
                  "nullable": true,
                  "description": "The email address of the customer."
                }
              },
              "description": "Contains information about the event, specific to the `object_type` and `metric`."
            },
            "event_id": {
              "type": "string",
              "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ",
              "description": "The unique ID of the reporting webhook event being sent."
            },
            "timestamp": {
              "type": "integer",
              "format": "unix timestamp",
              "example": 1613063089,
              "description": "The unix timestamp when the event occurred."
            },
            "object_type": {
              "enum": [
                "customer"
              ],
              "type": "string",
              "example": "customer",
              "description": "The event represents a customer subscribing, unsubscribing, or changing their subscription preferences."
            }
          }
        }
      ],
      "title": "unsubscribed",
      "description": "A person unsubscribed to messages from you—their `unsubscribed` attribute was set to `true`."
    },
    {
      "type": "object",
      "title": "changed subscription preferences",
      "required": [
        "metric",
        "event_id",
        "data",
        "timestamp"
      ],
      "properties": {
        "data": {
          "allOf": [
            {
              "type": "object",
              "required": [
                "identifiers",
                "customer_id",
                "email_address",
                "content"
              ],
              "properties": {
                "content": {
                  "type": "string",
                  "example": "{\"topics\":{\"topic_1\":true}}",
                  "description": "Contains the subscription preferences that a person changed in a stringified object format. The `topic_1` key refers to a topic with an ID of `1`; you can get more information about each topic from our [App API](https://customer.io/docs/api/app/)."
                },
                "customer_id": {
                  "type": "string",
                  "example": "42",
                  "deprecated": true,
                  "description": "The ID of the person the webhook event occurred to. Blank if the person in question has been deleted.\n\nWhile webhooks may still contain this property, you should rely on the newer `identifiers` object wherever possible.\n"
                },
                "identifiers": {
                  "type": "object",
                  "required": [
                    "id"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "42",
                      "nullable": true,
                      "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."
                    },
                    "email": {
                      "type": "string",
                      "example": "test@example.com",
                      "nullable": true,
                      "description": "The email address of the customer."
                    },
                    "cio_id": {
                      "type": "string",
                      "example": "d9c106000001",
                      "description": "The canonical identifier for a person, present only if your workspace supports multiple identifiers (email and ID). This value exists to keep a record of a person in your workspace across changes to their other identifiers."
                    }
                  },
                  "description": "The person the event represents. This object contains all of the identifiers available to people in your workspace, even if they aren't set. If your workspace supports multiple identifiers (email and ID), this object contains `id`, `email` (either of which can be null), and `cio_id`. \n\nOtherwise, if your workspace only supports ID, this object just contains the `id` of the person the event represents.\n"
                },
                "email_address": {
                  "type": "string",
                  "example": "test@example.com",
                  "nullable": true,
                  "description": "The email address of the customer."
                }
              },
              "description": "Contains information about the event, specific to the `object_type` and `metric`."
            },
            {
              "oneOf": [
                {
                  "type": "object",
                  "title": "API triggered broadcast",
                  "required": [
                    "trigger_id",
                    "broadcast_id",
                    "delivery_id",
                    "action_id"
                  ],
                  "properties": {
                    "action_id": {
                      "type": "integer",
                      "example": 96,
                      "readOnly": true,
                      "description": "The identifier for an action."
                    },
                    "journey_id": {
                      "type": "string",
                      "example": "01GW20GXAAXBKZD8J96M8FNV3R",
                      "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow."
                    },
                    "trigger_id": {
                      "type": "integer",
                      "example": 1,
                      "description": "The trigger ID returned by the [Trigger Broadcast API](https://customer.io/docs/api/app/)."
                    },
                    "customer_id": {
                      "type": "string",
                      "example": "42",
                      "deprecated": true,
                      "description": "The ID of the person the webhook event occurred to. Blank if the person in question has been deleted.\n\nWhile webhooks may still contain this property, you should rely on the newer `identifiers` object wherever possible.\n"
                    },
                    "delivery_id": {
                      "type": "string",
                      "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ==",
                      "description": "The instance of a message sent to a person."
                    },
                    "broadcast_id": {
                      "type": "integer",
                      "example": 2,
                      "nullable": true,
                      "description": "The identifier for a broadcast."
                    },
                    "parent_action_id": {
                      "type": "integer",
                      "example": 1,
                      "readOnly": true,
                      "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc)."
                    }
                  }
                },
                {
                  "type": "object",
                  "title": "Campaign",
                  "required": [
                    "campaign_id",
                    "delivery_id",
                    "action_id"
                  ],
                  "properties": {
                    "action_id": {
                      "type": "integer",
                      "example": 96,
                      "readOnly": true,
                      "description": "The identifier for an action."
                    },
                    "journey_id": {
                      "type": "string",
                      "example": "01GW20GXAAXBKZD8J96M8FNV3R",
                      "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow."
                    },
                    "campaign_id": {
                      "type": "integer",
                      "example": 5,
                      "nullable": true,
                      "description": "The identifier for a campaign."
                    },
                    "customer_id": {
                      "type": "string",
                      "example": "42",
                      "deprecated": true,
                      "description": "The ID of the person the webhook event occurred to. Blank if the person in question has been deleted.\n\nWhile webhooks may still contain this property, you should rely on the newer `identifiers` object wherever possible.\n"
                    },
                    "delivery_id": {
                      "type": "string",
                      "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ==",
                      "description": "The instance of a message sent to a person."
                    },
                    "parent_action_id": {
                      "type": "integer",
                      "example": 1,
                      "readOnly": true,
                      "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc)."
                    },
                    "trigger_event_id": {
                      "type": "string",
                      "example": "21E4C3CT6YDC7Y4N7FE1GWWABC",
                      "nullable": true,
                      "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast)."
                    }
                  }
                },
                {
                  "type": "object",
                  "title": "Newsletter",
                  "required": [
                    "newsletter_id",
                    "delivery_id"
                  ],
                  "properties": {
                    "content_id": {
                      "type": "integer",
                      "example": 3,
                      "description": "The identifier for a newsletter variant."
                    },
                    "customer_id": {
                      "type": "string",
                      "example": "42",
                      "deprecated": true,
                      "description": "The ID of the person the webhook event occurred to. Blank if the person in question has been deleted.\n\nWhile webhooks may still contain this property, you should rely on the newer `identifiers` object wherever possible.\n"
                    },
                    "delivery_id": {
                      "type": "string",
                      "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ==",
                      "description": "The instance of a message sent to a person."
                    },
                    "newsletter_id": {
                      "type": "integer",
                      "example": 10,
                      "nullable": true,
                      "description": "The identifier for a newsletter."
                    }
                  }
                }
              ]
            }
          ]
        },
        "metric": {
          "enum": [
            "cio_subscription_preferences_changed"
          ],
          "type": "string",
          "description": "The event we're reporting to your webhook endpoint. In this case, a person changed their subscription preferences."
        },
        "event_id": {
          "type": "string",
          "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ",
          "description": "The unique ID of the reporting webhook event being sent."
        },
        "timestamp": {
          "type": "integer",
          "format": "unix timestamp",
          "example": 1613063089,
          "description": "The unix timestamp when the event occurred."
        },
        "delivery_type": {
          "enum": [
            "email",
            "sms",
            "push",
            "in_app",
            "slack",
            "webhook"
          ],
          "type": "string",
          "example": "email",
          "description": "The type of delivery that resulted in a change to preferences."
        }
      },
      "description": "A person changed their subscription preferences through our subscription center or you changed their `cio_subscription_preferences` attribute values.\n\nSome fields in the `data` object change based on whether the message that resulted in the change originated from a broadcast, campaign, or newsletter.\n"
    }
  ],
  "title": "Customer",
  "description": "Events that occur when a customer subscribes or unsubscribes from your messages."
}
object customer_event_common
{
  "type": "object",
  "required": [
    "event_id",
    "object_type",
    "timestamp",
    "data"
  ],
  "properties": {
    "data": {
      "type": "object",
      "required": [
        "identifiers",
        "customer_id",
        "email_address"
      ],
      "properties": {
        "customer_id": {
          "type": "string",
          "example": "42",
          "deprecated": true,
          "description": "The ID of the person the webhook event occurred to. Blank if the person in question has been deleted.\n\nWhile webhooks may still contain this property, you should rely on the newer `identifiers` object wherever possible.\n"
        },
        "identifiers": {
          "type": "object",
          "required": [
            "id"
          ],
          "properties": {
            "id": {
              "type": "string",
              "example": "42",
              "nullable": true,
              "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."
            },
            "email": {
              "type": "string",
              "example": "test@example.com",
              "nullable": true,
              "description": "The email address of the customer."
            },
            "cio_id": {
              "type": "string",
              "example": "d9c106000001",
              "description": "The canonical identifier for a person, present only if your workspace supports multiple identifiers (email and ID). This value exists to keep a record of a person in your workspace across changes to their other identifiers."
            }
          },
          "description": "The person the event represents. This object contains all of the identifiers available to people in your workspace, even if they aren't set. If your workspace supports multiple identifiers (email and ID), this object contains `id`, `email` (either of which can be null), and `cio_id`. \n\nOtherwise, if your workspace only supports ID, this object just contains the `id` of the person the event represents.\n"
        },
        "email_address": {
          "type": "string",
          "example": "test@example.com",
          "nullable": true,
          "description": "The email address of the customer."
        }
      },
      "description": "Contains information about the event, specific to the `object_type` and `metric`."
    },
    "event_id": {
      "type": "string",
      "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ",
      "description": "The unique ID of the reporting webhook event being sent."
    },
    "timestamp": {
      "type": "integer",
      "format": "unix timestamp",
      "example": 1613063089,
      "description": "The unix timestamp when the event occurred."
    },
    "object_type": {
      "enum": [
        "customer"
      ],
      "type": "string",
      "example": "customer",
      "description": "The event represents a customer subscribing, unsubscribing, or changing their subscription preferences."
    }
  }
}
object customer_events
{
  "type": "object",
  "properties": {
    "customer_subscribed": {
      "type": "boolean",
      "description": "A person's `unsubscribed` attribute was explicitly set to `false`. Set to true to report `subscribed` events."
    },
    "customer_unsubscribed": {
      "type": "boolean",
      "description": "A person's `unsubscribed` attribute was explicitly set to `true`. Set to true to report `unsubscribed` events."
    },
    "cio_subscription_preferences_changed": {
      "type": "boolean",
      "description": "A person's subscription preferences changed. [Learn more about the subscription center](https://customer.io/docs/api/app/)."
    }
  },
  "description": "Describes the customer events reported from Customer.io to a webhook."
}
string customer_id
{
  "type": "string",
  "example": "42",
  "nullable": true,
  "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."
}
object customer_identifiers
{
  "type": "object",
  "required": [
    "email",
    "id",
    "cio_id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": 2,
      "nullable": true,
      "description": "A person's unique ID, if set. This is the same as the `customer_id` if present."
    },
    "email": {
      "type": "string",
      "format": "email",
      "example": "test@example.com",
      "nullable": true,
      "description": "A person's email address, if set."
    },
    "cio_id": {
      "type": "string",
      "example": "a3000001",
      "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers."
    }
  },
  "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"
}
string data_to_process
{
  "enum": [
    "all",
    "only_new",
    "only_existing"
  ],
  "type": "string",
  "description": "Determines whether your import operation performs `all` add/update operations, only adds items (`only_new`), or only updates existing items (`only_existing`). Defaults to `all`. If `import_type` is `event`, you can only use `all` or `only_existing`. \n\nThis field was previously called `people_to_process` - we still support it but will deprecate it soon.\n"
}
string dedupe_id
{
  "type": "string",
  "format": "ulid",
  "description": "An identifier used to deduplicate events. This value must be a [ULID](https://github.com/ulid/spec). 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."
}
string deduplicate_id
{
  "type": "string",
  "example": "15:1492548073",
  "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."
}
string delivery_id
{
  "type": "string",
  "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ==",
  "description": "The instance of a message sent to a person."
}
object delivery_operations
{
  "type": "object",
  "title": "Delivery",
  "required": [
    "type",
    "action",
    "identifiers",
    "name",
    "attributes"
  ],
  "properties": {
    "name": {
      "enum": [
        "opened",
        "converted",
        "delivered"
      ],
      "type": "string",
      "description": "The name of the metric you want to attribute to this \"delivery\"."
    },
    "type": {
      "enum": [
        "delivery"
      ],
      "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."
    },
    "action": {
      "enum": [
        "event"
      ],
      "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."
    },
    "attributes": {
      "type": "object",
      "required": [
        "device_token"
      ],
      "properties": {
        "device_token": {
          "type": "string",
          "description": "The device that received the message."
        }
      },
      "description": "Contains information about the delivery and the individual who received the message."
    },
    "identifiers": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The `delivery_id` for the delivery that you want to attribute metrics to."
        }
      },
      "description": "Contains identifiers for the delivery itself."
    }
  },
  "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."
}
string device_id
{
  "type": "string",
  "description": "The identifier for a person's device—typically a device token."
}
object device_object
{
  "allOf": [
    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The device token."
        }
      }
    },
    {
      "type": "object",
      "required": [
        "platform"
      ],
      "properties": {
        "platform": {
          "enum": [
            "ios",
            "android"
          ],
          "type": "string",
          "description": "The device/messaging platform."
        },
        "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."
        },
        "attributes": {
          "type": "object",
          "properties": {
            "device_os": {
              "type": "string",
              "description": "The operating system, including the version, on the device."
            },
            "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."
            },
            "_last_status": {
              "enum": [
                "",
                "bounced",
                "sent",
                "suppressed"
              ],
              "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."
            },
            "device_model": {
              "type": "string",
              "description": "The model of the device a person uses."
            },
            "push_enabled": {
              "enum": [
                "true",
                "false"
              ],
              "type": "string",
              "description": "If `\"true\"`, the device is opted-in and can receive push notifications."
            },
            "device_locale": {
              "type": "string",
              "description": "The four-letter [IETF language code](https://customer.io/docs/api/app/) 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)."
            },
            "cio_sdk_version": {
              "type": "string",
              "description": "The version of the Customer.io SDK in the app."
            }
          },
          "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.",
          "additionalProperties": {
            "type": "string",
            "description": "Custom properties that you want to associate with the device.",
            "x-additionalPropertiesName": "Custom Device Attributes"
          }
        }
      },
      "description": "Device information common to the v1 and v2 APIs."
    }
  ],
  "description": "The properties representing an individual device. [Our SDK's](https://customer.io/docs/api/app/) 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."
}
object device_object_cdp
{
  "allOf": [
    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The device token."
        }
      }
    },
    {
      "type": "object",
      "required": [
        "platform"
      ],
      "properties": {
        "platform": {
          "enum": [
            "ios",
            "android"
          ],
          "type": "string",
          "description": "The device/messaging platform."
        },
        "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."
        },
        "attributes": {
          "type": "object",
          "properties": {
            "timezone": {
              "type": "string",
              "description": "The timezone of the device."
            },
            "device_os": {
              "type": "string",
              "description": "The operating system, including the version, on the device."
            },
            "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."
            },
            "_last_status": {
              "enum": [
                "",
                "bounced",
                "sent",
                "suppressed"
              ],
              "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."
            },
            "device_model": {
              "type": "string",
              "description": "The model of the device a person uses."
            },
            "network_wifi": {
              "type": "boolean",
              "description": "If `true`, the device's WiFi connection is on."
            },
            "push_enabled": {
              "enum": [
                "true",
                "false"
              ],
              "type": "string",
              "description": "If `\"true\"`, the device is opted-in and can receive push notifications."
            },
            "screen_width": {
              "type": "integer",
              "description": "The width of the device's screen in pixels."
            },
            "device_locale": {
              "type": "string",
              "description": "The four-letter [IETF language code](https://customer.io/docs/api/app/) 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)."
            },
            "screen_height": {
              "type": "integer",
              "description": "The height of the device's screen in pixels."
            },
            "cio_sdk_version": {
              "type": "string",
              "description": "The version of the Customer.io SDK in the app."
            },
            "network_cellular": {
              "type": "boolean",
              "description": "If `true`, the device's cellular connection is on."
            },
            "network_bluetooth": {
              "type": "boolean",
              "description": "If `true`, the device's bluetooth connection is on."
            }
          },
          "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.",
          "additionalProperties": {
            "type": "string",
            "description": "Custom properties that you want to associate with the device.",
            "x-additionalPropertiesName": "Custom Device Attributes"
          }
        }
      },
      "description": "Device information common to the v1 and v2 APIs."
    }
  ],
  "description": "The properties representing an individual device in Journeys when sent from a Customer.io SDK that natively supports Data Pipelines (like iOS 3.x or later). [Our CDP-enabled SDK's](https://customer.io/docs/api/app/) gather all the properties defined below automatically, unless you disable the `autoTrackDeviceAttributes` setting."
}
object device_object_cdp_common
{
  "type": "object",
  "required": [
    "platform"
  ],
  "properties": {
    "platform": {
      "enum": [
        "ios",
        "android"
      ],
      "type": "string",
      "description": "The device/messaging platform."
    },
    "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."
    },
    "attributes": {
      "type": "object",
      "properties": {
        "timezone": {
          "type": "string",
          "description": "The timezone of the device."
        },
        "device_os": {
          "type": "string",
          "description": "The operating system, including the version, on the device."
        },
        "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."
        },
        "_last_status": {
          "enum": [
            "",
            "bounced",
            "sent",
            "suppressed"
          ],
          "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."
        },
        "device_model": {
          "type": "string",
          "description": "The model of the device a person uses."
        },
        "network_wifi": {
          "type": "boolean",
          "description": "If `true`, the device's WiFi connection is on."
        },
        "push_enabled": {
          "enum": [
            "true",
            "false"
          ],
          "type": "string",
          "description": "If `\"true\"`, the device is opted-in and can receive push notifications."
        },
        "screen_width": {
          "type": "integer",
          "description": "The width of the device's screen in pixels."
        },
        "device_locale": {
          "type": "string",
          "description": "The four-letter [IETF language code](https://customer.io/docs/api/app/) 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)."
        },
        "screen_height": {
          "type": "integer",
          "description": "The height of the device's screen in pixels."
        },
        "cio_sdk_version": {
          "type": "string",
          "description": "The version of the Customer.io SDK in the app."
        },
        "network_cellular": {
          "type": "boolean",
          "description": "If `true`, the device's cellular connection is on."
        },
        "network_bluetooth": {
          "type": "boolean",
          "description": "If `true`, the device's bluetooth connection is on."
        }
      },
      "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.",
      "additionalProperties": {
        "type": "string",
        "description": "Custom properties that you want to associate with the device.",
        "x-additionalPropertiesName": "Custom Device Attributes"
      }
    }
  },
  "description": "Device information common to the v1 and v2 APIs."
}
object device_object_common
{
  "type": "object",
  "required": [
    "platform"
  ],
  "properties": {
    "platform": {
      "enum": [
        "ios",
        "android"
      ],
      "type": "string",
      "description": "The device/messaging platform."
    },
    "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."
    },
    "attributes": {
      "type": "object",
      "properties": {
        "device_os": {
          "type": "string",
          "description": "The operating system, including the version, on the device."
        },
        "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."
        },
        "_last_status": {
          "enum": [
            "",
            "bounced",
            "sent",
            "suppressed"
          ],
          "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."
        },
        "device_model": {
          "type": "string",
          "description": "The model of the device a person uses."
        },
        "push_enabled": {
          "enum": [
            "true",
            "false"
          ],
          "type": "string",
          "description": "If `\"true\"`, the device is opted-in and can receive push notifications."
        },
        "device_locale": {
          "type": "string",
          "description": "The four-letter [IETF language code](https://customer.io/docs/api/app/) 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)."
        },
        "cio_sdk_version": {
          "type": "string",
          "description": "The version of the Customer.io SDK in the app."
        }
      },
      "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.",
      "additionalProperties": {
        "type": "string",
        "description": "Custom properties that you want to associate with the device.",
        "x-additionalPropertiesName": "Custom Device Attributes"
      }
    }
  },
  "description": "Device information common to the v1 and v2 APIs."
}
string device_platform
{
  "enum": [
    "android",
    "ios"
  ],
  "type": "string",
  "example": "ios",
  "description": "The device's operating system."
}
boolean 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`."
}
Load more schemas