{
  "components": {
    "securitySchemes": {
      "Bearer-Auth": {
        "type": "http",
        "scheme": "bearer",
        "description": "The App API uses a bearer authentication scheme.\n\nYou can generate a bearer token, known as an **App API Key**, with a defined scope in [your account settings](https://fly.customer.io/settings/api_credentials?keyType=app). [Learn more about bearer authorization in Customer.io](/managing-credentials).\n"
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key passed as a Bearer token"
      }
    },
    "schemas": {
      "object_identify": {
        "x-scalar-ignore": true,
        "x-tags": [
          "Object Schemas"
        ],
        "type": "object",
        "title": "identify",
        "description": "The `action` determines the type of operation you want to perform with an object. If `identifiers.object_id` does not exist, we'll create a new object; if it exists, we'll update the object accordingly.\n",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "identifiers": {
                "description": "The identifiers for a custom object. When identifying a new object, you *must* use both the `object_type_id` and `object_id` (where `object_type_id` is an integer representing the type of object and the `object_id` is the individual identifier for the object).\n\nIf you're updating an existing object, you can use either the `object_type_id` and `object_id` or the `cio_object_id` (where `cio_object_id` is an immutable unique value that Customer.io sets for an object when you create it).\n",
                "oneOf": [
                  {
                    "title": "Object ID (create and update)",
                    "type": "object",
                    "required": [
                      "object_type_id",
                      "object_id"
                    ],
                    "properties": {
                      "object_type_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                        "nullable": false,
                        "example": "1"
                      },
                      "object_id": {
                        "type": "string",
                        "description": "The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.",
                        "nullable": false,
                        "example": "acme"
                      }
                    }
                  },
                  {
                    "title": "CIO Object ID (updates only)",
                    "type": "object",
                    "required": [
                      "cio_object_id"
                    ],
                    "properties": {
                      "cio_object_id": {
                        "type": "string",
                        "description": "A unique value that Customer.io sets for an object when you create it. This ID is immutable.",
                        "example": "obb7fd050101"
                      }
                    }
                  }
                ]
              },
              "type": {
                "description": "The operation modifies a single object—non person data.",
                "type": "string",
                "enum": [
                  "object"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "Indicates that the operation will `identify` the the item of the specified `type`.",
                "enum": [
                  "identify"
                ]
              },
              "attributes": {
                "x-scalar-ignore": true,
                "type": "object",
                "description": "The data that belongs to the object. This is information you might want to associate with people later (through `cio_relationships`). Passing `null` or an empty string removes the attribute from the object. Some attributes have special meaning. Please refer to the list of [reserved attributes](/journeys/objects-create/#reserved-attributes).\n"
              },
              "cio_relationships": {
                "x-scalar-ignore": true,
                "type": "array",
                "description": "The people you want to associate with an object. Each object in the array represents a person.",
                "items": {
                  "type": "object",
                  "properties": {
                    "identifiers": {
                      "oneOf": [
                        {
                          "title": "id",
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                              "example": "42"
                            }
                          }
                        },
                        {
                          "title": "email",
                          "type": "object",
                          "properties": {
                            "email": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The email address of the customer.",
                              "example": "test@example.com"
                            }
                          }
                        },
                        {
                          "title": "cio_id",
                          "type": "object",
                          "properties": {
                            "cio_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                              "example": "a3000001"
                            }
                          }
                        }
                      ]
                    },
                    "relationship_attributes": {
                      "type": "object",
                      "description": "The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n",
                      "additionalProperties": {
                        "x-additionalPropertiesName": "Relationship Attributes"
                      }
                    }
                  },
                  "example": {
                    "identifiers": {
                      "id": "42"
                    },
                    "relationship_attributes": {
                      "role": "admin",
                      "date_created": 1702480414
                    }
                  }
                }
              }
            }
          }
        ]
      },
      "object_identify_anonymous": {
        "x-tags": [
          "Object Schemas"
        ],
        "title": "identify_anonymous",
        "description": "The `identify_anonymous` action lets you relate an object to a person who hasn't yet identified themselves by anonymous_id. When you identify the person, their anonymous relationship will carry over to the identified profile.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "identifiers": {
                "description": "The identifiers for a custom object. When identifying a new object, you *must* use both the `object_type_id` and `object_id` (where `object_type_id` is an integer representing the type of object and the `object_id` is the individual identifier for the object).\n\nIf you're updating an existing object, you can use either the `object_type_id` and `object_id` or the `cio_object_id` (where `cio_object_id` is an immutable unique value that Customer.io sets for an object when you create it).\n",
                "oneOf": [
                  {
                    "title": "Object ID (create and update)",
                    "type": "object",
                    "required": [
                      "object_type_id",
                      "object_id"
                    ],
                    "properties": {
                      "object_type_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                        "nullable": false,
                        "example": "1"
                      },
                      "object_id": {
                        "type": "string",
                        "description": "The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.",
                        "nullable": false,
                        "example": "acme"
                      }
                    }
                  },
                  {
                    "title": "CIO Object ID (updates only)",
                    "type": "object",
                    "required": [
                      "cio_object_id"
                    ],
                    "properties": {
                      "cio_object_id": {
                        "type": "string",
                        "description": "A unique value that Customer.io sets for an object when you create it. This ID is immutable.",
                        "example": "obb7fd050101"
                      }
                    }
                  }
                ]
              },
              "type": {
                "description": "The operation modifies a single object—non person data.",
                "type": "string",
                "enum": [
                  "object"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "Indicates that the operation will `identify` the item of the specified `type` and relate it to an `anonymous_id`.",
                "enum": [
                  "identify_anonymous"
                ]
              },
              "attributes": {
                "x-scalar-ignore": true,
                "type": "object",
                "description": "The data that belongs to the object. This is information you might want to associate with people later (through `cio_relationships`). Passing `null` or an empty string removes the attribute from the object. Some attributes have special meaning. Please refer to the list of [reserved attributes](/journeys/objects-create/#reserved-attributes).\n"
              },
              "cio_relationships": {
                "type": "array",
                "description": "The anonymous people you want to associate with an object. Each object in the array contains an `anonymous_id` representing a person you haven't yet identified by `id` or `email`.",
                "items": {
                  "type": "object",
                  "properties": {
                    "identifiers": {
                      "type": "object",
                      "properties": {
                        "anonymous_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "An identifier for an anonymous event, like a cookie. If set as an attribute on a person, any events bearing the same anonymous value are associated with this person. This value must be unique and is not reusable."
                        }
                      }
                    },
                    "relationship_attributes": {
                      "type": "object",
                      "description": "Coming October 2023 - The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship."
                    }
                  }
                }
              }
            }
          }
        ]
      },
      "object_delete": {
        "x-tags": [
          "Object Schemas"
        ],
        "title": "delete",
        "description": "Delete an object. This also removes relationships from people.\n",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "allOf": [
              {
                "x-scalar-ignore": true,
                "type": "object",
                "properties": {
                  "identifiers": {
                    "description": "The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.",
                    "oneOf": [
                      {
                        "title": "Object ID",
                        "type": "object",
                        "required": [
                          "object_type_id",
                          "object_id"
                        ],
                        "properties": {
                          "object_type_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                            "nullable": false,
                            "example": "1"
                          },
                          "object_id": {
                            "type": "string",
                            "description": "The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.",
                            "nullable": false,
                            "example": "acme"
                          }
                        }
                      },
                      {
                        "title": "CIO Object ID",
                        "type": "object",
                        "required": [
                          "cio_object_id"
                        ],
                        "properties": {
                          "cio_object_id": {
                            "type": "string",
                            "description": "A unique value that Customer.io sets for an object when you create it. This ID is immutable.",
                            "example": "obb7fd050101"
                          }
                        }
                      }
                    ]
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "description": "The operation modifies a single object—non person data.",
                    "type": "string",
                    "enum": [
                      "object"
                    ]
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "required": [
              "action"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "Indicates that the operation will `delete` the the item of the specified `type`.",
                "enum": [
                  "delete"
                ]
              }
            }
          }
        ]
      },
      "object_add_relationships": {
        "x-tags": [
          "Object Schemas"
        ],
        "title": "add_relationships",
        "description": "Add relationships between an object and one or more people.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "allOf": [
              {
                "x-scalar-ignore": true,
                "type": "object",
                "properties": {
                  "identifiers": {
                    "description": "The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.",
                    "oneOf": [
                      {
                        "title": "Object ID",
                        "type": "object",
                        "required": [
                          "object_type_id",
                          "object_id"
                        ],
                        "properties": {
                          "object_type_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                            "nullable": false,
                            "example": "1"
                          },
                          "object_id": {
                            "type": "string",
                            "description": "The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.",
                            "nullable": false,
                            "example": "acme"
                          }
                        }
                      },
                      {
                        "title": "CIO Object ID",
                        "type": "object",
                        "required": [
                          "cio_object_id"
                        ],
                        "properties": {
                          "cio_object_id": {
                            "type": "string",
                            "description": "A unique value that Customer.io sets for an object when you create it. This ID is immutable.",
                            "example": "obb7fd050101"
                          }
                        }
                      }
                    ]
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "description": "The operation modifies a single object—non person data.",
                    "type": "string",
                    "enum": [
                      "object"
                    ]
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "required": [
              "action",
              "cio_relationships"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "This operation associates an object with one or more people.",
                "enum": [
                  "add_relationships"
                ]
              },
              "cio_relationships": {
                "x-scalar-ignore": true,
                "type": "array",
                "description": "The people you want to associate with an object. Each object in the array represents a person.",
                "items": {
                  "type": "object",
                  "properties": {
                    "identifiers": {
                      "oneOf": [
                        {
                          "title": "id",
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                              "example": "42"
                            }
                          }
                        },
                        {
                          "title": "email",
                          "type": "object",
                          "properties": {
                            "email": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The email address of the customer.",
                              "example": "test@example.com"
                            }
                          }
                        },
                        {
                          "title": "cio_id",
                          "type": "object",
                          "properties": {
                            "cio_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                              "example": "a3000001"
                            }
                          }
                        }
                      ]
                    },
                    "relationship_attributes": {
                      "type": "object",
                      "description": "The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n",
                      "additionalProperties": {
                        "x-additionalPropertiesName": "Relationship Attributes"
                      }
                    }
                  },
                  "example": {
                    "identifiers": {
                      "id": "42"
                    },
                    "relationship_attributes": {
                      "role": "admin",
                      "date_created": 1702480414
                    }
                  }
                }
              }
            }
          }
        ]
      },
      "object_delete_relationships": {
        "x-tags": [
          "Object Schemas"
        ],
        "title": "delete_relationships",
        "description": "Delete relationships between an object and one or more people.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "allOf": [
              {
                "x-scalar-ignore": true,
                "type": "object",
                "properties": {
                  "identifiers": {
                    "description": "The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.",
                    "oneOf": [
                      {
                        "title": "Object ID",
                        "type": "object",
                        "required": [
                          "object_type_id",
                          "object_id"
                        ],
                        "properties": {
                          "object_type_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                            "nullable": false,
                            "example": "1"
                          },
                          "object_id": {
                            "type": "string",
                            "description": "The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.",
                            "nullable": false,
                            "example": "acme"
                          }
                        }
                      },
                      {
                        "title": "CIO Object ID",
                        "type": "object",
                        "required": [
                          "cio_object_id"
                        ],
                        "properties": {
                          "cio_object_id": {
                            "type": "string",
                            "description": "A unique value that Customer.io sets for an object when you create it. This ID is immutable.",
                            "example": "obb7fd050101"
                          }
                        }
                      }
                    ]
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "description": "The operation modifies a single object—non person data.",
                    "type": "string",
                    "enum": [
                      "object"
                    ]
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "required": [
              "action",
              "cio_relationships"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "This operation deletes an object relationship from one or more people.",
                "enum": [
                  "delete_relationships"
                ]
              },
              "cio_relationships": {
                "x-scalar-ignore": true,
                "type": "array",
                "description": "The people you want to associate with an object. Each object in the array represents a person.",
                "items": {
                  "type": "object",
                  "properties": {
                    "identifiers": {
                      "oneOf": [
                        {
                          "title": "id",
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                              "example": "42"
                            }
                          }
                        },
                        {
                          "title": "email",
                          "type": "object",
                          "properties": {
                            "email": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The email address of the customer.",
                              "example": "test@example.com"
                            }
                          }
                        },
                        {
                          "title": "cio_id",
                          "type": "object",
                          "properties": {
                            "cio_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                              "example": "a3000001"
                            }
                          }
                        }
                      ]
                    },
                    "relationship_attributes": {
                      "type": "object",
                      "description": "The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n",
                      "additionalProperties": {
                        "x-additionalPropertiesName": "Relationship Attributes"
                      }
                    }
                  },
                  "example": {
                    "identifiers": {
                      "id": "42"
                    },
                    "relationship_attributes": {
                      "role": "admin",
                      "date_created": 1702480414
                    }
                  }
                }
              }
            }
          }
        ]
      },
      "identify_person": {
        "x-scalar-ignore": true,
        "title": "identify",
        "description": "Add or update a person.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "Indicates that the operation will `identify` the the item of the specified `type`.",
                "enum": [
                  "identify"
                ]
              },
              "timestamp": {
                "type": "integer",
                "description": "The Unix timestamp for when the attribute update occurred. This can be used to control the order of attribute updates when multiple requests are sent in rapid succession.",
                "example": 1772013598
              },
              "attributes": {
                "type": "object",
                "description": "Attributes that you want to add or update for this person. You can pass properties that aren't defined below to set custom attributes; the defined properties are reserved in the Customer.io Track API.",
                "properties": {
                  "cio_subscription_preferences": {
                    "x-scalar-ignore": true,
                    "description": "Stores your audience's subscription preferences if you enable our [subscription center](/subscription-center/) feature. These items are set automatically when people use the unsubscribe link in your messages, but you can set preferences outside the subscription flow. To update select topic preferences while preserving those set for other topics, use JSON dot notation `\"cio_subscription_preferences.topics.topic_<topic ID>\":<boolean>`.",
                    "type": "object",
                    "properties": {
                      "topics": {
                        "type": "object",
                        "description": "Contains active topics in your workspace, named `topic_<id>`.",
                        "additionalProperties": {
                          "x-additionalPropertiesName": "topic_<id>",
                          "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/api/app/#operation/getTopics). For each boolean, `true` means that a person is subscribed to the topic; false means they are unsubscribed. An empty or missing value reverts to the default preference for the topic (opt-in or opt-out).",
                          "type": "boolean"
                        }
                      }
                    },
                    "example": {
                      "topics": {
                        "topic_1": true,
                        "topic_2": false,
                        "topic_3": true
                      }
                    }
                  },
                  "_update": {
                    "type": "boolean",
                    "default": false,
                    "description": "By default, an `identify` request creates a new person if they don't already exist. If you perform multiple requests in rapid succession, there's a danger that you could create multiple profiles. If you know that a profile already exists and you want to update it, set this value to `true`, and Customer.io will _not_ create a new profile, even if the person doesn't exist.\n\nIf the identifiers in your request don't belong to an existing person, the request does nothing.\n"
                  }
                },
                "additionalProperties": {
                  "x-additionalPropertiesName": "additional attributes",
                  "description": "Custom properties that you want to set as attributes on this person."
                }
              },
              "cio_relationships": {
                "x-scalar-ignore": true,
                "type": "array",
                "description": "Each object in the array represents a relationship you want to add to, or remove from, a person.",
                "items": {
                  "allOf": [
                    {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "identifiers": {
                          "description": "The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.",
                          "oneOf": [
                            {
                              "title": "Object ID",
                              "type": "object",
                              "required": [
                                "object_type_id",
                                "object_id"
                              ],
                              "properties": {
                                "object_type_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                                  "nullable": false,
                                  "example": "1"
                                },
                                "object_id": {
                                  "type": "string",
                                  "description": "The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.",
                                  "nullable": false,
                                  "example": "acme"
                                }
                              }
                            },
                            {
                              "title": "CIO Object ID",
                              "type": "object",
                              "required": [
                                "cio_object_id"
                              ],
                              "properties": {
                                "cio_object_id": {
                                  "type": "string",
                                  "description": "A unique value that Customer.io sets for an object when you create it. This ID is immutable.",
                                  "example": "obb7fd050101"
                                }
                              }
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "relationship_attributes": {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "description": "The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n",
                          "additionalProperties": {
                            "x-additionalPropertiesName": "Relationship Attributes"
                          },
                          "example": {
                            "role": "admin"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "person_delete": {
        "x-tags": [
          "Person Schemas"
        ],
        "title": "delete",
        "description": "Delete a person from your workspace.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "Indicates that the operation will `delete` the the item of the specified `type`.",
                "enum": [
                  "delete"
                ]
              }
            }
          }
        ]
      },
      "person_event": {
        "x-scalar-ignore": true,
        "description": "A custom event attributed to a person. You can use events to trigger campaigns, or reference event information using liquid in your messages.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action",
              "name"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "A custom event attributed to the specified person.",
                "enum": [
                  "event"
                ]
              },
              "id": {
                "type": "string",
                "format": "ULID",
                "description": "A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id."
              },
              "name": {
                "type": "string",
                "description": "The name of the event. This is how you'll find your event in Customer.io or select it when using events as campaign triggers."
              },
              "timestamp": {
                "type": "integer",
                "description": "The Unix timestamp when the event happened."
              },
              "attributes": {
                "type": "object",
                "description": "Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.\n",
                "additionalProperties": {
                  "x-additionalPropertiesName": "liquid merge data",
                  "description": "Insert key-values that you want to reference in your message here."
                },
                "properties": {
                  "recipient": {
                    "type": "string",
                    "format": "email",
                    "description": "The email address of the person associated with the event, overriding the `to` field in emails triggered by the event."
                  },
                  "from_address": {
                    "type": "string",
                    "format": "email",
                    "description": "The address you want to trigger messages from, overriding the `from` field in emails triggered by the event."
                  },
                  "reply_to": {
                    "type": "string",
                    "format": "email",
                    "description": "The address you want to receive replies to, overriding the `reply to` field for emails triggered by the event."
                  }
                }
              }
            }
          }
        ]
      },
      "person_screen": {
        "x-tags": [
          "Person Schemas"
        ],
        "description": "A mobile \"screenview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action",
              "name"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "A mobile \"screenview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.",
                "enum": [
                  "screen"
                ]
              },
              "id": {
                "type": "string",
                "format": "ULID",
                "description": "A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id."
              },
              "name": {
                "type": "string",
                "description": "The name of the screen a person visited. This is how you'll find and select screen view events in Customer.io."
              },
              "timestamp": {
                "type": "integer",
                "description": "The Unix timestamp when the event happened."
              },
              "attributes": {
                "type": "object",
                "description": "Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.",
                "additionalProperties": {
                  "x-additionalPropertiesName": "liquid merge data",
                  "description": "Insert key-values that you want to reference in your message here."
                }
              }
            }
          }
        ]
      },
      "person_page": {
        "x-tags": [
          "Person Schemas"
        ],
        "description": "A web \"pageview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action",
              "name"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "A web \"pageview\" event attributed to a person. Our `screen` and `page` event types are more specific than our standard `event`, and help you track and target people based on the pages people visit in your mobile app or website.",
                "enum": [
                  "screen"
                ]
              },
              "id": {
                "type": "string",
                "format": "ULID",
                "description": "A valid ULID used to deduplicate events. Note - our Python and Ruby libraries do not pass this id."
              },
              "name": {
                "type": "string",
                "description": "The name of the page or page path that a person visited. This is how you'll find and select page view events in Customer.io."
              },
              "timestamp": {
                "type": "integer",
                "description": "The Unix timestamp when the event happened."
              },
              "attributes": {
                "type": "object",
                "description": "Additional information that you might want to reference in a message using liquid or use to set attributes on the identified person.",
                "properties": {
                  "path": {
                    "type": "string",
                    "description": "The path portion of the page's URL. Equivalent to the canonical `path` which defaults to `location.pathname` from the DOM API."
                  },
                  "referrer": {
                    "type": "string",
                    "description": "The previous page's full URL. Equivalent to `document.referrer` from the DOM API."
                  },
                  "search": {
                    "type": "string",
                    "description": "The query string portion of the page's URL. Equivalent to `location.search` from the DOM API."
                  },
                  "title": {
                    "type": "string",
                    "description": "The page's title. Equivalent to `document.title` from the DOM API."
                  },
                  "url": {
                    "type": "string",
                    "description": "A page's full URL. We first look for the canonical URL. If the canonical URL is not provided, we'll use `location.href` from the DOM API."
                  },
                  "keywords": {
                    "type": "array",
                    "description": "A list/array of keywords describing the page's content. The keywords are likely the same as, or similar to, the keywords you would find in an HTML `meta` tag for SEO purposes. This property is mainly used by content publishers that rely heavily on pageview tracking. This isn't automatically collected.",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": {
                  "x-additionalPropertiesName": "liquid merge data",
                  "description": "Insert key-values that you want to reference in your message here."
                }
              }
            }
          }
        ]
      },
      "person_add_relationships": {
        "x-tags": [
          "Person Schemas"
        ],
        "title": "add_relationships",
        "description": "Associate multiple objects with a person.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action",
              "cio_relationships"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "This operation associates a person with one or more objects.",
                "enum": [
                  "add_relationships"
                ]
              },
              "cio_relationships": {
                "x-scalar-ignore": true,
                "type": "array",
                "description": "Each object in the array represents a relationship you want to add to, or remove from, a person.",
                "items": {
                  "allOf": [
                    {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "identifiers": {
                          "description": "The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.",
                          "oneOf": [
                            {
                              "title": "Object ID",
                              "type": "object",
                              "required": [
                                "object_type_id",
                                "object_id"
                              ],
                              "properties": {
                                "object_type_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                                  "nullable": false,
                                  "example": "1"
                                },
                                "object_id": {
                                  "type": "string",
                                  "description": "The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.",
                                  "nullable": false,
                                  "example": "acme"
                                }
                              }
                            },
                            {
                              "title": "CIO Object ID",
                              "type": "object",
                              "required": [
                                "cio_object_id"
                              ],
                              "properties": {
                                "cio_object_id": {
                                  "type": "string",
                                  "description": "A unique value that Customer.io sets for an object when you create it. This ID is immutable.",
                                  "example": "obb7fd050101"
                                }
                              }
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "relationship_attributes": {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "description": "The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n",
                          "additionalProperties": {
                            "x-additionalPropertiesName": "Relationship Attributes"
                          },
                          "example": {
                            "role": "admin"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "person_delete_relationships": {
        "x-tags": [
          "Person Schemas"
        ],
        "title": "delete_relationships",
        "description": "Remove multiple object relationships from a person.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action",
              "cio_relationships"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "This operation deletes an object relationship from one or more people.",
                "enum": [
                  "delete_relationships"
                ]
              },
              "cio_relationships": {
                "x-scalar-ignore": true,
                "type": "array",
                "description": "Each object in the array represents a relationship you want to add to, or remove from, a person.",
                "items": {
                  "allOf": [
                    {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "identifiers": {
                          "description": "The identifiers for a particular object. You can use either the `object_type_id` and `object_id` (where `object_type_id` represents the type of object and the `object_id` is the individual identifier for the object) or the `cio_object_id`.",
                          "oneOf": [
                            {
                              "title": "Object ID",
                              "type": "object",
                              "required": [
                                "object_type_id",
                                "object_id"
                              ],
                              "properties": {
                                "object_type_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                                  "nullable": false,
                                  "example": "1"
                                },
                                "object_id": {
                                  "type": "string",
                                  "description": "The unique identifier for an object. If you use an `object_id` that already exists, we'll update the object accordingly.",
                                  "nullable": false,
                                  "example": "acme"
                                }
                              }
                            },
                            {
                              "title": "CIO Object ID",
                              "type": "object",
                              "required": [
                                "cio_object_id"
                              ],
                              "properties": {
                                "cio_object_id": {
                                  "type": "string",
                                  "description": "A unique value that Customer.io sets for an object when you create it. This ID is immutable.",
                                  "example": "obb7fd050101"
                                }
                              }
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "relationship_attributes": {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "description": "The attributes associated with a relationship. Passing null or an empty string removes the attribute from the relationship.\n",
                          "additionalProperties": {
                            "x-additionalPropertiesName": "Relationship Attributes"
                          },
                          "example": {
                            "role": "admin"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "person_add_device": {
        "x-tags": [
          "Person Schemas"
        ],
        "title": "add_device",
        "description": "Assign devices to a person.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action",
              "device"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "Add a mobile device to a person's profile.",
                "enum": [
                  "add_device"
                ]
              },
              "device": {
                "description": "The properties representing an individual device. [Our SDK's](/integrations/sdk/) gather all the properties defined below automatically, unless you disable the `autoTrackDeviceAttributes` setting. You can reference the properties outside the `attributes` object in segments.",
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "token"
                    ],
                    "properties": {
                      "token": {
                        "description": "The device token.",
                        "type": "string"
                      }
                    }
                  },
                  {
                    "x-scalar-ignore": true,
                    "type": "object",
                    "description": "Device information common to the v1 and v2 APIs.",
                    "required": [
                      "platform"
                    ],
                    "properties": {
                      "last_used": {
                        "type": "integer",
                        "format": "unix timestamp",
                        "description": "The `timestamp` when you last identified this device. If you don't pass a timestamp when you add or update a device, we use the time of the request itself. Our SDKs identify a device when a person launches their app."
                      },
                      "platform": {
                        "type": "string",
                        "enum": [
                          "ios",
                          "android"
                        ],
                        "description": "The device/messaging platform."
                      },
                      "attributes": {
                        "type": "object",
                        "description": "Attributes that you can reference to segment your audience—like a person's attributes, but specific to a device. These can be either the attributes defined below or custom key-value attributes.",
                        "properties": {
                          "device_os": {
                            "type": "string",
                            "description": "The operating system, including the version, on the device."
                          },
                          "device_model": {
                            "type": "string",
                            "description": "The model of the device a person uses."
                          },
                          "app_version": {
                            "type": "string",
                            "description": "The version of your app that a customer uses. You might target app versions to let people know when they need to update, or expose them to new features when they do."
                          },
                          "cio_sdk_version": {
                            "type": "string",
                            "description": "The version of the Customer.io SDK in the app."
                          },
                          "_last_status": {
                            "type": "string",
                            "readOnly": true,
                            "description": "The delivery status of the last message sent to the device—sent, bounced, or suppressed. An empty string indicates that that the device hasn't received a push yet.",
                            "enum": [
                              "",
                              "bounced",
                              "sent",
                              "suppressed"
                            ]
                          },
                          "device_locale": {
                            "type": "string",
                            "description": "The four-letter [IETF language code](/localization/#supported-languages) for the device. For example, `en-MX` (indicating an app in Spanish formatted for a user in Mexico) or `es-ES` (indicating an app in Spanish formatted for a user in Spain)."
                          },
                          "push_enabled": {
                            "type": "string",
                            "description": "If `\"true\"`, the device is opted-in and can receive push notifications.",
                            "enum": [
                              "true",
                              "false"
                            ]
                          }
                        },
                        "additionalProperties": {
                          "x-additionalPropertiesName": "Custom Device Attributes",
                          "description": "Custom properties that you want to associate with the device.",
                          "type": "string"
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "person_delete_device": {
        "x-tags": [
          "Person Schemas"
        ],
        "title": "delete_device",
        "description": "Delete devices that belong to a person.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action",
              "device"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "Delete a device from a person's profile.",
                "enum": [
                  "delete_device"
                ]
              },
              "device": {
                "description": "The device you want to remove.",
                "type": "object",
                "required": [
                  "token"
                ],
                "properties": {
                  "token": {
                    "description": "The token of the device you want to remove.",
                    "type": "string"
                  }
                }
              }
            }
          }
        ]
      },
      "person_merge": {
        "x-tags": [
          "Person Schemas"
        ],
        "type": "object",
        "description": "Merge two people. You'll merge the `secondary` person into the `primary`. The primary profile remains after the merge and the secondary is deleted. This operation is _not_ reversible. \n\n**Important:** The primary profile must already exist in Customer.io for the merge operation to work. If the primary profile doesn't exist, the merge request will not perform any action. This can lead to race conditions if you have concurrent requests that create a profile and merge profiles with the same primary ID.\n\nSee our page on [merging duplicate people](/merge-people/) for more information.\n",
        "required": [
          "type",
          "primary",
          "secondary",
          "action"
        ],
        "properties": {
          "type": {
            "description": "The operation modifies a person in Customer.io",
            "type": "string",
            "enum": [
              "person"
            ]
          },
          "action": {
            "type": "string",
            "description": "Merge two people. You'll merge the `secondary` person into the `primary`. The primary profile remains after the merge and the secondary is deleted. This operation is _not_ reversible. See our page on [merging duplicate people](/merge-people/) for more information.\n",
            "enum": [
              "merge"
            ]
          },
          "primary": {
            "description": "The person that you want to remain after the merge, identified by one of `id`, `email`, or `cio_id`. This person receives information from the secondary person in the merge. \n        \nIf email is disabled as an identifier in your [workspace settings](https://fly.customer.io/workspaces/last/settings/edit), then you must reference people by `id` or `cio_id`. Under How to Modify, `id` must be set to \"Reference people by cio_id\" for a successful merge. \n",
            "oneOf": [
              {
                "title": "id",
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "x-scalar-ignore": true,
                    "type": "string",
                    "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                    "example": "42"
                  }
                }
              },
              {
                "title": "email",
                "type": "object",
                "required": [
                  "email"
                ],
                "properties": {
                  "email": {
                    "x-scalar-ignore": true,
                    "type": "string",
                    "description": "The email address of the customer.",
                    "example": "test@example.com"
                  }
                }
              },
              {
                "title": "cio_id",
                "type": "object",
                "required": [
                  "cio_id"
                ],
                "properties": {
                  "cio_id": {
                    "x-scalar-ignore": true,
                    "type": "string",
                    "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                    "example": "a3000001"
                  }
                }
              }
            ]
          },
          "secondary": {
            "description": "The person that you want to delete after the merge, identified by one of `id`, `email`, or `cio_id`. This person's information is merged into the primary person's profile and then it is deleted.\n      \nIf email is disabled as an identifier in your [workspace settings](https://fly.customer.io/workspaces/last/settings/edit), then you must reference people by `id` or `cio_id`. Under How to Modify, `id` must be set to \"Reference people by cio_id\" for a successful merge.\n",
            "oneOf": [
              {
                "title": "id",
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "x-scalar-ignore": true,
                    "type": "string",
                    "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                    "example": "42"
                  }
                }
              },
              {
                "title": "email",
                "type": "object",
                "required": [
                  "email"
                ],
                "properties": {
                  "email": {
                    "x-scalar-ignore": true,
                    "type": "string",
                    "description": "The email address of the customer.",
                    "example": "test@example.com"
                  }
                }
              },
              {
                "title": "cio_id",
                "type": "object",
                "required": [
                  "cio_id"
                ],
                "properties": {
                  "cio_id": {
                    "x-scalar-ignore": true,
                    "type": "string",
                    "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                    "example": "a3000001"
                  }
                }
              }
            ]
          }
        }
      },
      "person_suppress": {
        "x-tags": [
          "Person Schemas"
        ],
        "title": "suppress",
        "description": "Suppress a person's identifier(s) in Customer.io, so that you can't message a person or add their identifiers back to your workspace. This is separate from suppressions performed by your email provider.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "Suppress a person's identifier(s) in Customer.io, so that you can't message a person or add their identifiers back to your workspace. This is separate from suppressions performed by your email provider.",
                "enum": [
                  "suppress"
                ]
              }
            }
          }
        ]
      },
      "person_unsuppress": {
        "x-tags": [
          "Person Schemas"
        ],
        "title": "unsuppress",
        "description": "Unsuppress a person's identifier(s) in Customer.io, so that you can message a person or add their identifiers back to your workspace. This does not unsuppress addresses that were previously suppressed by your email provider.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "type",
              "identifiers"
            ],
            "properties": {
              "type": {
                "description": "The operation modifies a person in Customer.io",
                "type": "string",
                "enum": [
                  "person"
                ]
              },
              "identifiers": {
                "description": "The person you want to perform an action for—one of either `id`, `email`, or `cio_id`. You cannot pass multiple identifiers.",
                "oneOf": [
                  {
                    "title": "id",
                    "type": "object",
                    "required": [
                      "id"
                    ],
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID of a customer profile, analogous to a \"person\" in the UI.",
                        "example": "42"
                      }
                    }
                  },
                  {
                    "title": "email",
                    "type": "object",
                    "required": [
                      "email"
                    ],
                    "properties": {
                      "email": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "example": "test@example.com"
                      }
                    }
                  },
                  {
                    "title": "cio_id",
                    "type": "object",
                    "required": [
                      "cio_id"
                    ],
                    "properties": {
                      "cio_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                        "example": "a3000001"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "action"
            ],
            "properties": {
              "action": {
                "type": "string",
                "description": "Unsuppress a person's identifier(s) in Customer.io, so that you can message a person or add their identifiers back to your workspace. This does not unsuppress addresses that were previously suppressed by your email provider.",
                "enum": [
                  "unsuppress"
                ]
              }
            }
          }
        ]
      },
      "customer_event": {
        "x-scalar-ignore": true,
        "title": "Customer",
        "description": "Events that occur when a customer subscribes or unsubscribes from your messages.",
        "oneOf": [
          {
            "title": "Customer subscribed",
            "description": "A person subscribed to messages from you—their `unsubscribed` attribute was set to `false`.",
            "allOf": [
              {
                "type": "object",
                "required": [
                  "metric"
                ],
                "properties": {
                  "metric": {
                    "type": "string",
                    "enum": [
                      "subscribed"
                    ],
                    "description": "The metric recorded by the event. For `customer` events, this is whether the customer explicitly subscribed or unsubscribed."
                  }
                }
              },
              {
                "x-scalar-ignore": true,
                "type": "object",
                "required": [
                  "event_id",
                  "object_type",
                  "timestamp",
                  "data"
                ],
                "properties": {
                  "event_id": {
                    "x-scalar-ignore": true,
                    "type": "string",
                    "description": "The unique ID of the reporting webhook event being sent.",
                    "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
                  },
                  "object_type": {
                    "type": "string",
                    "enum": [
                      "customer",
                      "email",
                      "sms",
                      "push",
                      "in_app",
                      "slack",
                      "webhook"
                    ],
                    "description": "The channel that triggered the subscription change. If the subscription change wasn't triggered from a message, or we can't determine which message triggered the change, the `object_type` is `customer`.",
                    "example": "customer"
                  },
                  "timestamp": {
                    "x-scalar-ignore": true,
                    "type": "integer",
                    "format": "unix timestamp",
                    "description": "The unix timestamp when the event occurred.",
                    "example": 1613063089
                  },
                  "data": {
                    "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                    "type": "object",
                    "required": [
                      "identifiers",
                      "customer_id",
                      "email_address"
                    ],
                    "properties": {
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "email_address": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "nullable": true,
                        "example": "test@example.com"
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "title": "Customer unsubscribed",
            "description": "A person unsubscribed to messages from you—their `unsubscribed` attribute was set to `true`.",
            "allOf": [
              {
                "type": "object",
                "required": [
                  "metric"
                ],
                "properties": {
                  "metric": {
                    "type": "string",
                    "enum": [
                      "unsubscribed"
                    ],
                    "description": "The metric recorded by the event. For `customer` events, this is whether the customer explicitly subscribed or unsubscribed."
                  }
                }
              },
              {
                "x-scalar-ignore": true,
                "type": "object",
                "required": [
                  "event_id",
                  "object_type",
                  "timestamp",
                  "data"
                ],
                "properties": {
                  "event_id": {
                    "x-scalar-ignore": true,
                    "type": "string",
                    "description": "The unique ID of the reporting webhook event being sent.",
                    "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
                  },
                  "object_type": {
                    "type": "string",
                    "enum": [
                      "customer",
                      "email",
                      "sms",
                      "push",
                      "in_app",
                      "slack",
                      "webhook"
                    ],
                    "description": "The channel that triggered the subscription change. If the subscription change wasn't triggered from a message, or we can't determine which message triggered the change, the `object_type` is `customer`.",
                    "example": "customer"
                  },
                  "timestamp": {
                    "x-scalar-ignore": true,
                    "type": "integer",
                    "format": "unix timestamp",
                    "description": "The unix timestamp when the event occurred.",
                    "example": 1613063089
                  },
                  "data": {
                    "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                    "type": "object",
                    "required": [
                      "identifiers",
                      "customer_id",
                      "email_address"
                    ],
                    "properties": {
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "email_address": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "nullable": true,
                        "example": "test@example.com"
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "title": "Customer changed subscription 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",
            "type": "object",
            "required": [
              "metric",
              "event_id",
              "data",
              "timestamp"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "cio_subscription_preferences_changed"
                ],
                "description": "The event we're reporting to your webhook endpoint. In this case, a person changed their subscription preferences."
              },
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type_type": {
                "type": "string",
                "enum": [
                  "customer",
                  "email",
                  "sms",
                  "push",
                  "in_app",
                  "slack",
                  "webhook"
                ],
                "description": "The channel that triggered the change to the person's subscription preferences. If the subscription change wasn't triggered from a message, or we can't determine which message triggered the change, the `object_type` is `customer`. Most subscription changes are triggered by `email` or are `customer` initiated.",
                "example": "email"
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              },
              "data": {
                "allOf": [
                  {
                    "type": "object",
                    "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                    "required": [
                      "identifiers",
                      "customer_id",
                      "email_address"
                    ],
                    "properties": {
                      "content": {
                        "type": "string",
                        "description": "If you enable the *Include body content and headers in all Sent events* when you set up your reporting webhook, you'll see this field. It 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](/api/app/#operation/getTopics).",
                        "example": "{\"topics\":{\"topic_1\":true}}"
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "email_address": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The email address of the customer.",
                        "nullable": true,
                        "example": "test@example.com"
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  },
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        ]
      },
      "email_event": {
        "x-scalar-ignore": true,
        "title": "Email",
        "description": "Events representing an email.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/email_drafted"
          },
          {
            "$ref": "#/components/schemas/email_attempted"
          },
          {
            "$ref": "#/components/schemas/email_sent"
          },
          {
            "$ref": "#/components/schemas/email_delivered"
          },
          {
            "$ref": "#/components/schemas/email_opened"
          },
          {
            "$ref": "#/components/schemas/email_clicked"
          },
          {
            "$ref": "#/components/schemas/email_converted"
          },
          {
            "$ref": "#/components/schemas/email_unsubscribed"
          },
          {
            "$ref": "#/components/schemas/email_bounced"
          },
          {
            "$ref": "#/components/schemas/email_dropped"
          },
          {
            "$ref": "#/components/schemas/email_spammed"
          },
          {
            "$ref": "#/components/schemas/email_failed"
          },
          {
            "$ref": "#/components/schemas/email_undeliverable"
          }
        ],
        "discriminator": {
          "propertyName": "metric",
          "mapping": {
            "drafted": "#/components/schemas/email_drafted",
            "attempted": "#/components/schemas/email_attempted",
            "sent": "#/components/schemas/email_sent",
            "delivered": "#/components/schemas/email_delivered",
            "opened": "#/components/schemas/email_opened",
            "clicked": "#/components/schemas/email_clicked",
            "converted": "#/components/schemas/email_converted",
            "unsubscribed": "#/components/schemas/email_unsubscribed",
            "bounced": "#/components/schemas/email_bounced",
            "dropped": "#/components/schemas/email_dropped",
            "spammed": "#/components/schemas/email_spammed",
            "failed": "#/components/schemas/email_failed",
            "undeliverable": "#/components/schemas/email_undeliverable"
          }
        }
      },
      "push_event": {
        "title": "Push",
        "x-scalar-ignore": true,
        "description": "Events representing a push notification.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/push_drafted"
          },
          {
            "$ref": "#/components/schemas/push_attempted"
          },
          {
            "$ref": "#/components/schemas/push_delivered"
          },
          {
            "$ref": "#/components/schemas/push_sent"
          },
          {
            "$ref": "#/components/schemas/push_opened"
          },
          {
            "$ref": "#/components/schemas/push_clicked"
          },
          {
            "$ref": "#/components/schemas/push_converted"
          },
          {
            "$ref": "#/components/schemas/push_bounced"
          },
          {
            "$ref": "#/components/schemas/push_dropped"
          },
          {
            "$ref": "#/components/schemas/push_failed"
          },
          {
            "$ref": "#/components/schemas/push_undeliverable"
          }
        ],
        "discriminator": {
          "propertyName": "metric",
          "mapping": {
            "drafted": "#/components/schemas/push_drafted",
            "attempted": "#/components/schemas/push_attempted",
            "delivered": "#/components/schemas/push_delivered",
            "sent": "#/components/schemas/push_sent",
            "opened": "#/components/schemas/push_opened",
            "clicked": "#/components/schemas/push_clicked",
            "converted": "#/components/schemas/push_converted",
            "bounced": "#/components/schemas/push_bounced",
            "dropped": "#/components/schemas/push_dropped",
            "failed": "#/components/schemas/push_failed",
            "undeliverable": "#/components/schemas/push_undeliverable"
          }
        }
      },
      "in_app_event": {
        "x-scalar-ignore": true,
        "title": "In-App Messages",
        "description": "Events pertaining to in-app messages.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/in_app_drafted"
          },
          {
            "$ref": "#/components/schemas/in_app_attempted"
          },
          {
            "$ref": "#/components/schemas/in_app_sent"
          },
          {
            "$ref": "#/components/schemas/in_app_opened"
          },
          {
            "$ref": "#/components/schemas/in_app_clicked"
          },
          {
            "$ref": "#/components/schemas/in_app_converted"
          },
          {
            "$ref": "#/components/schemas/in_app_failed"
          },
          {
            "$ref": "#/components/schemas/in_app_undeliverable"
          }
        ],
        "discriminator": {
          "propertyName": "metric",
          "mapping": {
            "drafted": "#/components/schemas/in_app_drafted",
            "attempted": "#/components/schemas/in_app_attempted",
            "sent": "#/components/schemas/in_app_sent",
            "opened": "#/components/schemas/in_app_opened",
            "clicked": "#/components/schemas/in_app_clicked",
            "converted": "#/components/schemas/in_app_converted",
            "failed": "#/components/schemas/in_app_failed",
            "undeliverable": "#/components/schemas/in_app_undeliverable"
          }
        }
      },
      "sms_event": {
        "x-scalar-ignore": true,
        "title": "SMS",
        "description": "Events pertaining to SMS notifications.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/sms_drafted"
          },
          {
            "$ref": "#/components/schemas/sms_attempted"
          },
          {
            "$ref": "#/components/schemas/sms_sent"
          },
          {
            "$ref": "#/components/schemas/sms_delivered"
          },
          {
            "$ref": "#/components/schemas/sms_clicked"
          },
          {
            "$ref": "#/components/schemas/sms_converted"
          },
          {
            "$ref": "#/components/schemas/sms_bounced"
          },
          {
            "$ref": "#/components/schemas/sms_failed"
          },
          {
            "$ref": "#/components/schemas/sms_undeliverable"
          },
          {
            "$ref": "#/components/schemas/sms_replied"
          }
        ],
        "discriminator": {
          "propertyName": "metric",
          "mapping": {
            "drafted": "#/components/schemas/sms_drafted",
            "attempted": "#/components/schemas/sms_attempted",
            "sent": "#/components/schemas/sms_sent",
            "delivered": "#/components/schemas/sms_delivered",
            "clicked": "#/components/schemas/sms_clicked",
            "converted": "#/components/schemas/sms_converted",
            "bounced": "#/components/schemas/sms_bounced",
            "failed": "#/components/schemas/sms_failed",
            "undeliverable": "#/components/schemas/sms_undeliverable",
            "replied": "#/components/schemas/sms_replied"
          }
        }
      },
      "slack_event": {
        "x-scalar-ignore": true,
        "title": "Slack",
        "description": "Events pertaining to Slack messages.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/slack_drafted"
          },
          {
            "$ref": "#/components/schemas/slack_attempted"
          },
          {
            "$ref": "#/components/schemas/slack_sent"
          },
          {
            "$ref": "#/components/schemas/slack_clicked"
          },
          {
            "$ref": "#/components/schemas/slack_failed"
          },
          {
            "$ref": "#/components/schemas/slack_undeliverable"
          }
        ],
        "discriminator": {
          "propertyName": "metric",
          "mapping": {
            "drafted": "#/components/schemas/slack_drafted",
            "attempted": "#/components/schemas/slack_attempted",
            "sent": "#/components/schemas/slack_sent",
            "clicked": "#/components/schemas/slack_clicked",
            "failed": "#/components/schemas/slack_failed",
            "undeliverable": "#/components/schemas/slack_undeliverable"
          }
        }
      },
      "webhook_event": {
        "x-scalar-ignore": true,
        "title": "Webhook",
        "description": "Events pertaining to webhooks.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/webhook_drafted"
          },
          {
            "$ref": "#/components/schemas/webhook_attempted"
          },
          {
            "$ref": "#/components/schemas/webhook_sent"
          },
          {
            "$ref": "#/components/schemas/webhook_clicked"
          },
          {
            "$ref": "#/components/schemas/webhook_failed"
          },
          {
            "$ref": "#/components/schemas/webhook_undeliverable"
          }
        ],
        "discriminator": {
          "propertyName": "metric",
          "mapping": {
            "drafted": "#/components/schemas/webhook_drafted",
            "attempted": "#/components/schemas/webhook_attempted",
            "sent": "#/components/schemas/webhook_sent",
            "clicked": "#/components/schemas/webhook_clicked",
            "failed": "#/components/schemas/webhook_failed",
            "undeliverable": "#/components/schemas/webhook_undeliverable"
          }
        }
      },
      "email_drafted": {
        "title": "Email drafted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "drafted"
                ],
                "description": "The metric recorded by the event. For `customer` events, this is whether the customer explicitly subscribed or unsubscribed."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_attempted": {
        "title": "Email attempted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "attempted"
                ],
                "description": "An email could not be sent to the delivery provider and will be retried. The `failure_message` provides the reason for the failure."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_sent": {
        "title": "Email sent",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "sent"
                ],
                "description": "A message was successfully sent. If you enabled the *Body Content* option with your webhook, the payload includes the `content` of your message."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject"
                    ],
                    "properties": {
                      "content": {
                        "type": "string",
                        "description": "The body content of your email. This key only appears if you enabled the *Body Content* option when setting up your webhook."
                      },
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_delivered": {
        "title": "Email delivered",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "delivered"
                ],
                "description": "A message was successfully delivered to a recipient."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_opened": {
        "title": "Email opened",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "opened"
                ],
                "description": "An email was opened."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      },
                      "proxied": {
                        "type": "boolean",
                        "description": "If true, the email was fetched by a proxy to hide the user identity, IP address, etc."
                      },
                      "prefetched": {
                        "type": "boolean",
                        "description": "If true, the email was opened by Gmail, Apple Privacy Protection, or a user agent identified as a machine."
                      },
                      "synthetic": {
                        "type": "boolean",
                        "description": "If true, Customer.io inferred the open event because we tracked a click event before we registered an open event (and a link in an email can't be clicked without the email being opened). This does not necessarily mean that the open was machine-oriented. The click—and therefore, the open—could have originated from either a machine or a person."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_clicked": {
        "title": "Email clicked",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "clicked"
                ],
                "description": "A tracked link in an email was clicked."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject",
                      "href",
                      "link_id"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      },
                      "href": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The URL of the link that a person clicked.",
                        "example": "https://docs.customer.io"
                      },
                      "link_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the tracked link that a person clicked or tapped.",
                        "example": 1
                      },
                      "machine": {
                        "type": "boolean",
                        "description": "If true, the click was generated by a machine."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_converted": {
        "title": "Email converted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "converted"
                ],
                "description": "A person matched conversion criteria attributed to an email."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_unsubscribed": {
        "title": "Email unsubscribed",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "unsubscribed"
                ],
                "description": "The recipient unsubscribed based on a particular message."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_bounced": {
        "title": "Email bounced",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "bounced"
                ],
                "description": "The delivery provider could not deliver an email."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject",
                      "failure_message"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      },
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_dropped": {
        "title": "Email dropped",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "dropped"
                ],
                "description": "Customer.io did not send an email because it was addressed to a person who was suppressed."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject",
                      "failure_message"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      },
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_spammed": {
        "title": "Email spammed",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "spammed"
                ],
                "description": "A recipient marked an email as spam."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_failed": {
        "title": "Email failed",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "failed"
                ],
                "description": "An email couldn't be sent to the delivery provider."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject",
                      "failure_message"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "email_undeliverable": {
        "title": "Email undeliverable",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "email"
                ],
                "description": "The event relates to an email action."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "undeliverable"
                ],
                "description": "A message was undeliverable. Undeliverable messages are messages that have either hit a message limit, come from a newsletter that was cancelled or deleted, or an environment that has delivery disabled (which is something you might do if you’re testing an integration). If you’re not using message limits, you probably won’t see this event."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "subject",
                      "failure_message"
                    ],
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "The subject of the email."
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "test@example.com"
                      },
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_drafted": {
        "title": "Push drafted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "attempted"
                ],
                "description": "A push notification was drafted."
              },
              "data": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "title": "API triggered broadcast",
                    "required": [
                      "trigger_id",
                      "broadcast_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "type": "object",
                    "properties": {
                      "trigger_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                        "example": 1
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "broadcast_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for a broadcast.",
                        "example": 2
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  },
                  {
                    "title": "Campaign",
                    "type": "object",
                    "required": [
                      "campaign_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "properties": {
                      "campaign_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a campaign.",
                        "type": "integer",
                        "example": 5
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "trigger_event_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                        "nullable": true,
                        "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                      }
                    }
                  },
                  {
                    "title": "Newsletter",
                    "type": "object",
                    "required": [
                      "newsletter_id",
                      "delivery_id",
                      "identifiers"
                    ],
                    "properties": {
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "newsletter_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter.",
                        "type": "integer",
                        "example": 10
                      },
                      "content_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter variant.",
                        "type": "integer",
                        "example": 3
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  },
                  {
                    "title": "Transactional message",
                    "type": "object",
                    "required": [
                      "transactional_message_id",
                      "delivery_id",
                      "identifiers"
                    ],
                    "properties": {
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      },
                      "transactional_message_id": {
                        "description": "The transactional message template you used for your message."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_attempted": {
        "title": "Push attempted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "attempted"
                ],
                "description": "A push notification was attempted but unsuccessful. This generally means that we'll try again."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_delivered": {
        "title": "Push delivered",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "delivered"
                ],
                "description": "A push notification was delivered to a recipient device."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipients"
                    ],
                    "properties": {
                      "recipients": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "device_id"
                          ],
                          "description": "Describes the device the push was sent to.",
                          "properties": {
                            "device_id": {
                              "type": "string",
                              "description": "The device identifier/token."
                            },
                            "device_platform": {
                              "type": "string",
                              "description": "The device platform—ios or android.",
                              "enum": [
                                "ios",
                                "android"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_sent": {
        "title": "Push sent",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "sent"
                ],
                "description": "A push notification was sent to a recipient. If you enabled the *Body Content* option with your webhook, the payload includes the `content` of your message."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipients"
                    ],
                    "properties": {
                      "content": {
                        "type": "string",
                        "description": "The stringified payload for your push notification. This key only appears if you enabled the *Body Content* option when setting up your webhook."
                      },
                      "recipients": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "device_id"
                          ],
                          "description": "The person's devices that the push was sent to. Each object in the array represents a device.",
                          "properties": {
                            "device_id": {
                              "type": "string",
                              "description": "The device identifier/token."
                            },
                            "device_platform": {
                              "type": "string",
                              "description": "The device platform—ios or android.",
                              "enum": [
                                "ios",
                                "android"
                              ]
                            },
                            "failure_message": {
                              "type": "string",
                              "description": "If push failed for the device, we'll the list reason it failed."
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_opened": {
        "title": "Push opened",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "opened"
                ],
                "description": "A device opened a push notification."
              },
              "data": {
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipients"
                    ],
                    "properties": {
                      "recipients": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "device_id"
                          ],
                          "description": "Describes the device of the recipient who clicked/tapped the link.",
                          "properties": {
                            "device_id": {
                              "type": "string",
                              "description": "The device identifier/token."
                            },
                            "device_platform": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "enum": [
                                "android",
                                "ios"
                              ],
                              "description": "The device's operating system.",
                              "example": "ios"
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_clicked": {
        "title": "Push clicked",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "clicked"
                ],
                "description": "A recipient tapped a link in a push notification."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipients",
                      "href",
                      "link_id"
                    ],
                    "properties": {
                      "href": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The URL of the link that a person clicked.",
                        "example": "https://docs.customer.io"
                      },
                      "link_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the tracked link that a person clicked or tapped.",
                        "example": 1
                      },
                      "recipients": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "device_id"
                          ],
                          "description": "Describes the device of the recipient who tapped the link.",
                          "properties": {
                            "device_id": {
                              "type": "string",
                              "description": "The device identifier/token."
                            },
                            "device_platform": {
                              "type": "string",
                              "description": "The device platform—ios or android.",
                              "enum": [
                                "ios",
                                "android"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_converted": {
        "title": "Push converted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "converted"
                ],
                "description": "A person matched conversion criteria attributed to a push notification."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipients"
                    ],
                    "properties": {
                      "recipients": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "device_id"
                          ],
                          "description": "Describes the device of the recipient who tapped the link.",
                          "properties": {
                            "device_id": {
                              "type": "string",
                              "description": "The device identifier/token."
                            },
                            "device_platform": {
                              "type": "string",
                              "description": "The device platform—ios or android.",
                              "enum": [
                                "ios",
                                "android"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_bounced": {
        "title": "Push bounced",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "bounced"
                ],
                "description": "The delivery provider reported at least one invalid device token."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipients"
                    ],
                    "properties": {
                      "recipients": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "device_id",
                            "device_platform",
                            "failure_message"
                          ],
                          "description": "Describes the device of the recipient who tapped the link.",
                          "properties": {
                            "device_id": {
                              "type": "string",
                              "description": "The device identifier/token."
                            },
                            "device_platform": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "enum": [
                                "android",
                                "ios"
                              ],
                              "description": "The device's operating system.",
                              "example": "ios"
                            },
                            "failure_message": {
                              "type": "string",
                              "description": "The reason the push failed for this particular recipient."
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_dropped": {
        "title": "Push dropped",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "dropped"
                ],
                "description": "A push notification wasn't sent because at least one device token previously bounced."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipients"
                    ],
                    "properties": {
                      "recipients": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "device_id",
                            "device_platform",
                            "failure_message"
                          ],
                          "description": "Describes the device of the recipient who tapped the link.",
                          "properties": {
                            "device_id": {
                              "type": "string",
                              "description": "The device identifier/token."
                            },
                            "device_platform": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "enum": [
                                "android",
                                "ios"
                              ],
                              "description": "The device's operating system.",
                              "example": "ios"
                            },
                            "failure_message": {
                              "type": "string",
                              "description": "The reason the push failed for this particular recipient."
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_failed": {
        "title": "Push failed",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "failed"
                ],
                "description": "A push notification couldn't be sent to the delivery provider."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "push_undeliverable": {
        "title": "Push undeliverable",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "push"
                ],
                "description": "The event relates to an push notification."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "undeliverable"
                ],
                "description": "A message was undeliverable. Undeliverable messages are messages that have either hit a message limit, come from a newsletter that was cancelled or deleted, or an environment that has delivery disabled (which is something you might do if you’re testing an integration). If you’re not using message limits, you probably won’t see this event."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Transactional message",
                        "type": "object",
                        "required": [
                          "transactional_message_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "transactional_message_id": {
                            "description": "The transactional message template you used for your message."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "sms_drafted": {
        "title": "SMS drafted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "sms"
                ],
                "description": "The event relates to an SMS message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "drafted"
                ],
                "description": "An SMS notification was drafted."
              },
              "data": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "title": "API triggered broadcast",
                    "required": [
                      "trigger_id",
                      "broadcast_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "type": "object",
                    "properties": {
                      "trigger_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                        "example": 1
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "broadcast_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for a broadcast.",
                        "example": 2
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  },
                  {
                    "title": "Campaign",
                    "type": "object",
                    "required": [
                      "campaign_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "properties": {
                      "campaign_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a campaign.",
                        "type": "integer",
                        "example": 5
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "trigger_event_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                        "nullable": true,
                        "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                      }
                    }
                  },
                  {
                    "title": "Newsletter",
                    "type": "object",
                    "required": [
                      "newsletter_id",
                      "delivery_id",
                      "identifiers"
                    ],
                    "properties": {
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "newsletter_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter.",
                        "type": "integer",
                        "example": 10
                      },
                      "content_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter variant.",
                        "type": "integer",
                        "example": 3
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "sms_attempted": {
        "title": "SMS attempted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "sms"
                ],
                "description": "The event relates to an SMS message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "attempted"
                ],
                "description": "An SMS could not be sent to the delivery provider, but will retry."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "sms_sent": {
        "title": "SMS sent",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "sms"
                ],
                "description": "The event relates to an SMS message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "sent"
                ],
                "description": "An SMS notification was sent. If you enabled the *Body Content* option with your webhook, the payload includes the `content` of your message."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient"
                    ],
                    "properties": {
                      "content": {
                        "type": "string",
                        "description": "The body of your message. This key only appears if you enabled the *Body Content* option when setting up your webhook."
                      },
                      "recipient": {
                        "type": "string",
                        "description": "The MSISDN (phone number) of the SMS recipient."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "sms_delivered": {
        "title": "SMS delivered",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "sms"
                ],
                "description": "The event relates to an SMS message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "delivered"
                ],
                "description": "An SMS notification was delivered to a recipient."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient"
                    ],
                    "properties": {
                      "recipient": {
                        "type": "string",
                        "description": "The MSISDN (phone number) of the SMS recipient."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "sms_clicked": {
        "title": "SMS clicked",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "sms"
                ],
                "description": "The event relates to an SMS message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "clicked"
                ],
                "description": "A recipient tapped a link in an SMS message they received."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "link_id",
                      "href"
                    ],
                    "properties": {
                      "recipient": {
                        "type": "string",
                        "description": "The MSISDN (phone number) of the SMS recipient."
                      },
                      "link_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the tracked link that a person clicked or tapped.",
                        "example": 1
                      },
                      "href": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The URL of the link that a person clicked.",
                        "example": "https://docs.customer.io"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "sms_converted": {
        "title": "SMS converted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "sms"
                ],
                "description": "The event relates to an SMS message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "converted"
                ],
                "description": "A person matched conversion criteria attributed to an SMS."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient"
                    ],
                    "properties": {
                      "recipient": {
                        "type": "string",
                        "description": "The MSISDN (phone number) of the SMS recipient."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "sms_bounced": {
        "title": "SMS bounced",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "sms"
                ],
                "description": "The event relates to an SMS message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "bounced"
                ],
                "description": "The delivery provider was unable to deliver an SMS message."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      },
                      "recipient": {
                        "type": "string",
                        "description": "The MSISDN (phone number) of the SMS recipient."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "sms_failed": {
        "title": "SMS failed",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "sms"
                ],
                "description": "The event relates to an SMS message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "failed"
                ],
                "description": "An SMS couldn't be sent to the delivery provider."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "sms_undeliverable": {
        "title": "SMS undeliverable",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "sms"
                ],
                "description": "The event relates to an SMS message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "undeliverable"
                ],
                "description": "A message was undeliverable. Undeliverable messages are messages that have either hit a message limit, come from a newsletter that was cancelled or deleted, or an environment that has delivery disabled (which is something you might do if you’re testing an integration). If you’re not using message limits, you probably won’t see this event."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "sms_replied": {
        "title": "replied",
        "description": "A person replied to a message you sent them. Customer.io attributes replies to the original delivery if the reply occurs within 72 hours of the original delivery. If the reply occurs outside the 72 hour window, or we can't attribute the reply to a delivery, the `delivery_id` and associated data (`campaign_id`, `action_id`, `trigger_event_id`, etc) we won't send this event.",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "sms"
                ],
                "description": "The event relates to an SMS message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "replied"
                ],
                "description": "A person replied to a message you sent them. Customer.io attributes replies to the original delivery if the reply occurs within 72 hours of the original delivery. If the reply occurs outside the 72 hour window, or we can't attribute the reply to a delivery, the `delivery_id` and associated data (`campaign_id`, `action_id`, `trigger_event_id`, etc) we won't send this event."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "inbound_event_id",
                      "to",
                      "recipient"
                    ],
                    "properties": {
                      "inbound_event_id": {
                        "type": "string",
                        "description": "The unique identifier for the inbound event."
                      },
                      "to": {
                        "type": "string",
                        "description": "The phone number the person replied to. (The `sender` of the original message.)"
                      },
                      "recipient": {
                        "type": "string",
                        "description": "The phone number the person who sent the inbound message."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "slack_drafted": {
        "title": "Slack drafted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "slack"
                ],
                "description": "The event relates to a Slack message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "drafted"
                ],
                "description": "A slack message was drafted."
              },
              "data": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "title": "API triggered broadcast",
                    "required": [
                      "trigger_id",
                      "broadcast_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "type": "object",
                    "properties": {
                      "trigger_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                        "example": 1
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "broadcast_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for a broadcast.",
                        "example": 2
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  },
                  {
                    "title": "Campaign",
                    "type": "object",
                    "required": [
                      "campaign_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "properties": {
                      "campaign_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a campaign.",
                        "type": "integer",
                        "example": 5
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "trigger_event_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                        "nullable": true,
                        "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                      }
                    }
                  },
                  {
                    "title": "Newsletter",
                    "type": "object",
                    "required": [
                      "newsletter_id",
                      "delivery_id",
                      "identifiers"
                    ],
                    "properties": {
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "newsletter_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter.",
                        "type": "integer",
                        "example": 10
                      },
                      "content_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter variant.",
                        "type": "integer",
                        "example": 3
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "slack_attempted": {
        "title": "Slack attempted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "slack"
                ],
                "description": "The event relates to a Slack message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "attempted"
                ],
                "description": "A slack message failed and will be retried."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "slack_sent": {
        "title": "Slack sent",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "slack"
                ],
                "description": "The event relates to a Slack message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "sent"
                ],
                "description": "A slack message was sent. If you enabled the *Body Content* option with your webhook, the payload includes the `content` of your message."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient"
                    ],
                    "properties": {
                      "content": {
                        "type": "string",
                        "description": "The of your slack message. This key only appears if you enabled the *Body Content* option when setting up your webhook."
                      },
                      "recipient": {
                        "type": "string",
                        "description": "The channel or person that received the message, i.e. `#general`."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "slack_clicked": {
        "title": "Slack clicked",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "slack"
                ],
                "description": "The event relates to a Slack message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "clicked"
                ],
                "description": "A person clicked a tracked link in a Slack message."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "href",
                      "link_id"
                    ],
                    "properties": {
                      "recipient": {
                        "type": "string",
                        "description": "The channel or person that received the message, i.e. `#general`."
                      },
                      "href": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The URL of the link that a person clicked.",
                        "example": "https://docs.customer.io"
                      },
                      "link_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the tracked link that a person clicked or tapped.",
                        "example": 1
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "slack_failed": {
        "title": "Slack failed",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "slack"
                ],
                "description": "The event relates to a Slack message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "failed"
                ],
                "description": "A slack message failed."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "slack_undeliverable": {
        "title": "Slack undeliverable",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "slack"
                ],
                "description": "The event relates to a Slack message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "undeliverable"
                ],
                "description": "A message was undeliverable. Undeliverable messages are messages that have either hit a message limit, come from a newsletter that was cancelled or deleted, or an environment that has delivery disabled (which is something you might do if you’re testing an integration). If you’re not using message limits, you probably won’t see this event."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "webhook_drafted": {
        "title": "Webhook drafted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "webhook"
                ],
                "description": "The event relates to a webhook."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "drafted"
                ],
                "description": "A webhook draft was created."
              },
              "data": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "title": "API triggered broadcast",
                    "required": [
                      "trigger_id",
                      "broadcast_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "type": "object",
                    "properties": {
                      "trigger_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                        "example": 1
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "broadcast_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for a broadcast.",
                        "example": 2
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  },
                  {
                    "title": "Campaign",
                    "type": "object",
                    "required": [
                      "campaign_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "properties": {
                      "campaign_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a campaign.",
                        "type": "integer",
                        "example": 5
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "trigger_event_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                        "nullable": true,
                        "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                      }
                    }
                  },
                  {
                    "title": "Newsletter",
                    "type": "object",
                    "required": [
                      "newsletter_id",
                      "delivery_id",
                      "identifiers"
                    ],
                    "properties": {
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "newsletter_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter.",
                        "type": "integer",
                        "example": 10
                      },
                      "content_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter variant.",
                        "type": "integer",
                        "example": 3
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "webhook_attempted": {
        "title": "Webhook attempted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "webhook"
                ],
                "description": "The event relates to a webhook."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "attempted"
                ],
                "description": "A webhook failed to send, but will be retried."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "webhook_sent": {
        "title": "Webhook sent",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "webhook"
                ],
                "description": "The event relates to a webhook."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "sent"
                ],
                "description": "A webhook was sent from Customer.io. If you enabled the *Body Content* option with your webhook, the payload includes the `content` of your webhook."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient"
                    ],
                    "properties": {
                      "content": {
                        "type": "string",
                        "description": "The stringified payload sent to your webhook address. This key only appears if you enabled the *Body Content* option when setting up your webhook."
                      },
                      "recipient": {
                        "type": "string",
                        "description": "The URL the webhook was sent to."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "webhook_clicked": {
        "title": "Webhook clicked",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "webhook"
                ],
                "description": "The event relates to a webhook."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "clicked"
                ],
                "description": "The webhook recipient opened a tracked link in the webhook payload."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "link_id",
                      "href"
                    ],
                    "properties": {
                      "recipient": {
                        "type": "string",
                        "description": "The URL the webhook was sent to."
                      },
                      "href": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The URL of the link that a person clicked.",
                        "example": "https://docs.customer.io"
                      },
                      "link_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the tracked link that a person clicked or tapped.",
                        "example": 1
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "webhook_failed": {
        "title": "Webhook failed",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "webhook"
                ],
                "description": "The event relates to a webhook."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "failed"
                ],
                "description": "A webhook failed to send."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "webhook_undeliverable": {
        "title": "Webhook undeliverable",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "webhook"
                ],
                "description": "The event relates to a webhook."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "undeliverable"
                ],
                "description": "A webhook/message was undeliverable. Undeliverable messages are messages that have either hit a message limit, come from a newsletter that was cancelled or deleted, or an environment that has delivery disabled (which is something you might do if you’re testing an integration). If you’re not using message limits, you probably won’t see this event."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "in_app_drafted": {
        "title": "In-app drafted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "in_app"
                ],
                "description": "The event relates to an in-app message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "drafted"
                ],
                "description": "An in-app message draft was created."
              },
              "data": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "title": "API triggered broadcast",
                    "required": [
                      "trigger_id",
                      "broadcast_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "type": "object",
                    "properties": {
                      "trigger_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                        "example": 1
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "broadcast_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for a broadcast.",
                        "example": 2
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  },
                  {
                    "title": "Campaign",
                    "type": "object",
                    "required": [
                      "campaign_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "properties": {
                      "campaign_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a campaign.",
                        "type": "integer",
                        "example": 5
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "trigger_event_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                        "nullable": true,
                        "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                      }
                    }
                  },
                  {
                    "title": "Newsletter",
                    "type": "object",
                    "required": [
                      "newsletter_id",
                      "delivery_id",
                      "identifiers"
                    ],
                    "properties": {
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "newsletter_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter.",
                        "type": "integer",
                        "example": 10
                      },
                      "content_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter variant.",
                        "type": "integer",
                        "example": 3
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "in_app_attempted": {
        "title": "In-app attempted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "in_app"
                ],
                "description": "The event relates to an in-app message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "attempted"
                ],
                "description": "An in-app message failed to send, but will be retried."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "in_app_sent": {
        "title": "In-app sent",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "in_app"
                ],
                "description": "The event relates to an in-app message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "sent"
                ],
                "description": "An in-app message was sent from Customer.io. Because in-app messages are only delivered when a person's app is open, there may be a significant delay between when a message is sent and when it's \"opened\". If you enabled the *Body Content* option with your webhook, the payload includes the `content` of your message."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient"
                    ],
                    "properties": {
                      "content": {
                        "type": "string",
                        "description": "The body of your message. This key only appears if you enabled the *Body Content* option when setting up your webhook."
                      },
                      "recipient": {
                        "type": "string",
                        "description": "The ID or email address of the person the message was sent to. This identifier is determined by the settings in your message and the value you use to identify your app's users."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "in_app_opened": {
        "title": "In-app opened",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "in_app"
                ],
                "description": "The event relates to an in-app message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "opened"
                ],
                "description": "A device opened an in-app message. Because messages appear automatically when a person opens your app (to the right page if using page rules), \"opened\" is essentially an \"impression\"—a person saw your message."
              },
              "data": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "title": "API triggered broadcast",
                    "required": [
                      "trigger_id",
                      "broadcast_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "type": "object",
                    "properties": {
                      "trigger_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                        "example": 1
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "broadcast_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for a broadcast.",
                        "example": 2
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  },
                  {
                    "title": "Campaign",
                    "type": "object",
                    "required": [
                      "campaign_id",
                      "delivery_id",
                      "action_id",
                      "identifiers"
                    ],
                    "properties": {
                      "campaign_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a campaign.",
                        "type": "integer",
                        "example": 5
                      },
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "action_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "journey_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                        "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      },
                      "parent_action_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                        "example": 1,
                        "readOnly": true
                      },
                      "trigger_event_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                        "nullable": true,
                        "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                      }
                    }
                  },
                  {
                    "title": "Newsletter",
                    "type": "object",
                    "required": [
                      "newsletter_id",
                      "delivery_id",
                      "identifiers"
                    ],
                    "properties": {
                      "customer_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "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",
                        "example": "42"
                      },
                      "delivery_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The instance of a message sent to a person.",
                        "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                      },
                      "newsletter_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter.",
                        "type": "integer",
                        "example": 10
                      },
                      "content_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter variant.",
                        "type": "integer",
                        "example": 3
                      },
                      "identifiers": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "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",
                        "required": [
                          "id"
                        ],
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "email": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The email address of the customer.",
                            "nullable": true,
                            "example": "test@example.com"
                          },
                          "cio_id": {
                            "type": "string",
                            "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.",
                            "example": "d9c106000001"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "in_app_clicked": {
        "title": "In-app clicked",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "in_app"
                ],
                "description": "The event relates to an in-app message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "clicked"
                ],
                "description": "The in-app message recipient clicked/tapped a component in a message with **Track Clicks** enabled. The *Track Clicks* setting is enabled by default for in-app messages. The payload includes a `tracked_response` key containing the *Action Name* of the component the person clicked/tapped. [Learn more about tracked responses and action names](/journeys/tracked-responses)."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient",
                      "link_id",
                      "href"
                    ],
                    "properties": {
                      "tracked_response": {
                        "type": "string",
                        "description": "The *Action Name* of the action a person clicked/tapped in the message. [Learn more about tracked responses and action names](/journeys/tracked-responses)."
                      },
                      "recipient": {
                        "type": "string",
                        "description": "The ID or email address of the person the message was sent to. This identifier is determined by the settings in your message and the value you use to identify your app's users."
                      },
                      "href": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The URL of the link that a person clicked.",
                        "example": "https://docs.customer.io"
                      },
                      "link_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the tracked link that a person clicked or tapped.",
                        "example": 1
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "in_app_converted": {
        "title": "In-app converted",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "in_app"
                ],
                "description": "The event relates to an in-app message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "converted"
                ],
                "description": "A person matched conversion criteria attributed to an in-app notification."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "recipient"
                    ],
                    "properties": {
                      "recipient": {
                        "type": "string",
                        "description": "The ID or email address of the person the message was sent to. This identifier is determined by the settings in your message and the value you use to identify your app's users."
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "in_app_failed": {
        "title": "In-app failed",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "in_app"
                ],
                "description": "The event relates to an in-app message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "failed"
                ],
                "description": "An in-app message failed to send."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "in_app_undeliverable": {
        "title": "In-app undeliverable",
        "allOf": [
          {
            "x-scalar-ignore": true,
            "type": "object",
            "required": [
              "event_id",
              "object_type",
              "timestamp"
            ],
            "properties": {
              "event_id": {
                "x-scalar-ignore": true,
                "type": "string",
                "description": "The unique ID of the reporting webhook event being sent.",
                "example": "01E4C4CT6YDC7Y5M7FE1GWWPQJ"
              },
              "object_type": {
                "type": "string",
                "enum": [
                  "in_app"
                ],
                "description": "The event relates to an in-app message."
              },
              "timestamp": {
                "x-scalar-ignore": true,
                "type": "integer",
                "format": "unix timestamp",
                "description": "The unix timestamp when the event occurred.",
                "example": 1613063089
              }
            }
          },
          {
            "type": "object",
            "required": [
              "metric",
              "data"
            ],
            "properties": {
              "metric": {
                "type": "string",
                "enum": [
                  "undeliverable"
                ],
                "description": "A message was undeliverable. Undeliverable messages are messages that have either hit a message limit, come from a newsletter that was cancelled or deleted, or an environment that has delivery disabled (which is something you might do if you’re testing an integration). If you’re not using message limits, you probably won’t see this event."
              },
              "data": {
                "description": "Contains information about the event, specific to the `object_type` and `metric`.",
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "API triggered broadcast",
                        "required": [
                          "trigger_id",
                          "broadcast_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "type": "object",
                        "properties": {
                          "trigger_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The trigger ID returned by the [Trigger Broadcast API](/api/#operation/triggerBroadcast).",
                            "example": 1
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "Campaign",
                        "type": "object",
                        "required": [
                          "campaign_id",
                          "delivery_id",
                          "action_id",
                          "identifiers"
                        ],
                        "properties": {
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "journey_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID for the path a person went through in a Campaign or API Triggered Broadcast workflow.",
                            "example": "01GW20GXAAXBKZD8J96M8FNV3R"
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          }
                        }
                      },
                      {
                        "title": "Newsletter",
                        "type": "object",
                        "required": [
                          "newsletter_id",
                          "delivery_id",
                          "identifiers"
                        ],
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "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",
                            "example": "42"
                          },
                          "delivery_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The instance of a message sent to a person.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter variant.",
                            "type": "integer",
                            "example": 3
                          },
                          "identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "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",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                "nullable": true,
                                "example": "42"
                              },
                              "email": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The email address of the customer.",
                                "nullable": true,
                                "example": "test@example.com"
                              },
                              "cio_id": {
                                "type": "string",
                                "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.",
                                "example": "d9c106000001"
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "failure_message"
                    ],
                    "properties": {
                      "failure_message": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "Indicates the reason that an attempted message failed.",
                        "example": "Something went wrong!"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      }
    }
  },
  "paths": {
    "/v1/campaigns/{broadcast_id}/triggers": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The ID of the broadcast that you want to trigger.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "post": {
        "operationId": "triggerBroadcast",
        "tags": [
          "Send Messages"
        ],
        "summary": "Trigger a broadcast",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Manually trigger a broadcast, and provide data to populate messages in your trigger. The shape of the request changes based on the type of audience you broadcast to: a segment, a list of emails, a list of customer IDs, a map of users, or a data file. You can reference properties in the `data` object from this request using liquid—`{{trigger.<property_in_data_obj>}}`.\n\n**Important**: API-triggered broadcasts can only send messages to people you've already added to your workspace. A broadcast cannot add or identify new people. If you reference people who don't exist in your broadcast audience, the broadcast will fail by default. You can override this behavior by setting the `email_ignore_missing` and/or `id_ignore_missing` flags to `true`. This will cause the broadcast to skip over any people who don't exist, and send to whoever does.\n\nIf your broadcast produces a `422` error, you can [get more information about the errors](#operation/broadcastErrors) to see what went wrong.\n\n**This endpoint is rate-limited to one request every 10 seconds.** After exceeding this, you'll receive a status of 429. Broadcasts are optimized to send messages to a large audience and not for one-to-one interactions. Use our [transactional API](#send-email) or event-triggered campaigns to respond to your audience on an individual, one-to-one basis.\n",
        "requestBody": {
          "content": {
            "application/json": {
              "x-rate-limit": 10,
              "schema": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "x-scalar-ignore": true,
                    "type": "object",
                    "properties": {
                      "data": {
                        "type": "object",
                        "description": "Contains information you want to use to populate your broadcast.",
                        "additionalProperties": {
                          "x-additionalPropertiesName": "Broadcast liquid data",
                          "description": "Insert key-values that you want to reference in your message here."
                        },
                        "example": {
                          "headline": "Roadrunner spotted in Albuquerque!",
                          "date": 1511315635,
                          "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"
                        }
                      },
                      "email_add_duplicates": {
                        "type": "boolean",
                        "default": false,
                        "description": "an email address associated with more than one profile id is an error."
                      },
                      "email_ignore_missing": {
                        "type": "boolean",
                        "default": false,
                        "description": "If false, a missing email causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have emails, and continue sending to the rest of your audience."
                      },
                      "id_ignore_missing": {
                        "type": "boolean",
                        "default": false,
                        "description": "If false, a missing customer ID causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have IDs, and continue sending to the rest of your audience."
                      }
                    }
                  },
                  {
                    "title": "Custom recipients",
                    "description": "Send your broadcast to a group of people defined by a set of filters.",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "recipients"
                        ],
                        "properties": {
                          "recipients": {
                            "x-scalar-ignore": true,
                            "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",
                            "oneOf": [
                              {
                                "x-scalar-ignore": true,
                                "title": "and",
                                "type": "object",
                                "properties": {
                                  "and": {
                                    "type": "array",
                                    "description": "Match *all* conditions to return results.",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "or": {
                                          "type": "array",
                                          "description": "Returns results matching *any* conditions.",
                                          "items": {
                                            "x-scalar-ignore": true,
                                            "anyOf": [
                                              {
                                                "title": "segment",
                                                "description": "Filter for people who belong to a segment.",
                                                "type": "object",
                                                "properties": {
                                                  "segment": {
                                                    "x-scalar-ignore": true,
                                                    "title": "segment",
                                                    "type": "object",
                                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                                    "properties": {
                                                      "id": {
                                                        "type": "integer",
                                                        "description": "The ID of the segment you want to return people from.",
                                                        "example": 4
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              {
                                                "title": "audience",
                                                "type": "object",
                                                "description": "filter for people who have an attribute or an attribute value.",
                                                "properties": {
                                                  "attribute": {
                                                    "x-scalar-ignore": true,
                                                    "title": "attribute",
                                                    "description": "Filter your audience by attribute.",
                                                    "type": "object",
                                                    "required": [
                                                      "field",
                                                      "operator"
                                                    ],
                                                    "properties": {
                                                      "field": {
                                                        "type": "string",
                                                        "description": "The name of the attribute you want to filter against.",
                                                        "example": "first_name"
                                                      },
                                                      "operator": {
                                                        "type": "string",
                                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                        "enum": [
                                                          "eq",
                                                          "exists"
                                                        ]
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                      }
                                                    },
                                                    "example": {
                                                      "field": "unsubscribed",
                                                      "operator": "eq",
                                                      "value": true
                                                    }
                                                  }
                                                }
                                              }
                                            ]
                                          }
                                        },
                                        "not": {
                                          "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                          "oneOf": [
                                            {
                                              "title": "and",
                                              "type": "object",
                                              "properties": {
                                                "and": {
                                                  "type": "array",
                                                  "description": "Match *all* conditions to return results.",
                                                  "items": {
                                                    "x-scalar-ignore": true,
                                                    "anyOf": [
                                                      {
                                                        "title": "segment",
                                                        "description": "Filter for people who belong to a segment.",
                                                        "type": "object",
                                                        "properties": {
                                                          "segment": {
                                                            "x-scalar-ignore": true,
                                                            "title": "segment",
                                                            "type": "object",
                                                            "description": "Provide the `id` of a segment containing people you want to search for.",
                                                            "properties": {
                                                              "id": {
                                                                "type": "integer",
                                                                "description": "The ID of the segment you want to return people from.",
                                                                "example": 4
                                                              }
                                                            }
                                                          }
                                                        }
                                                      },
                                                      {
                                                        "title": "audience",
                                                        "type": "object",
                                                        "description": "filter for people who have an attribute or an attribute value.",
                                                        "properties": {
                                                          "attribute": {
                                                            "x-scalar-ignore": true,
                                                            "title": "attribute",
                                                            "description": "Filter your audience by attribute.",
                                                            "type": "object",
                                                            "required": [
                                                              "field",
                                                              "operator"
                                                            ],
                                                            "properties": {
                                                              "field": {
                                                                "type": "string",
                                                                "description": "The name of the attribute you want to filter against.",
                                                                "example": "first_name"
                                                              },
                                                              "operator": {
                                                                "type": "string",
                                                                "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                                "enum": [
                                                                  "eq",
                                                                  "exists"
                                                                ]
                                                              },
                                                              "value": {
                                                                "type": "string",
                                                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                              }
                                                            },
                                                            "example": {
                                                              "field": "unsubscribed",
                                                              "operator": "eq",
                                                              "value": true
                                                            }
                                                          }
                                                        }
                                                      }
                                                    ]
                                                  }
                                                }
                                              }
                                            },
                                            {
                                              "title": "or",
                                              "type": "object",
                                              "properties": {
                                                "or": {
                                                  "type": "array",
                                                  "description": "Match *any* condition to return results.",
                                                  "items": {
                                                    "x-scalar-ignore": true,
                                                    "anyOf": [
                                                      {
                                                        "title": "segment",
                                                        "description": "Filter for people who belong to a segment.",
                                                        "type": "object",
                                                        "properties": {
                                                          "segment": {
                                                            "x-scalar-ignore": true,
                                                            "title": "segment",
                                                            "type": "object",
                                                            "description": "Provide the `id` of a segment containing people you want to search for.",
                                                            "properties": {
                                                              "id": {
                                                                "type": "integer",
                                                                "description": "The ID of the segment you want to return people from.",
                                                                "example": 4
                                                              }
                                                            }
                                                          }
                                                        }
                                                      },
                                                      {
                                                        "title": "audience",
                                                        "type": "object",
                                                        "description": "filter for people who have an attribute or an attribute value.",
                                                        "properties": {
                                                          "attribute": {
                                                            "x-scalar-ignore": true,
                                                            "title": "attribute",
                                                            "description": "Filter your audience by attribute.",
                                                            "type": "object",
                                                            "required": [
                                                              "field",
                                                              "operator"
                                                            ],
                                                            "properties": {
                                                              "field": {
                                                                "type": "string",
                                                                "description": "The name of the attribute you want to filter against.",
                                                                "example": "first_name"
                                                              },
                                                              "operator": {
                                                                "type": "string",
                                                                "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                                "enum": [
                                                                  "eq",
                                                                  "exists"
                                                                ]
                                                              },
                                                              "value": {
                                                                "type": "string",
                                                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                              }
                                                            },
                                                            "example": {
                                                              "field": "unsubscribed",
                                                              "operator": "eq",
                                                              "value": true
                                                            }
                                                          }
                                                        }
                                                      }
                                                    ]
                                                  }
                                                }
                                              }
                                            },
                                            {
                                              "title": "segment",
                                              "type": "object",
                                              "properties": {
                                                "segment": {
                                                  "x-scalar-ignore": true,
                                                  "title": "segment",
                                                  "type": "object",
                                                  "description": "Provide the `id` of a segment containing people you want to search for.",
                                                  "properties": {
                                                    "id": {
                                                      "type": "integer",
                                                      "description": "The ID of the segment you want to return people from.",
                                                      "example": 4
                                                    }
                                                  }
                                                }
                                              }
                                            },
                                            {
                                              "title": "attribute",
                                              "type": "object",
                                              "properties": {
                                                "attribute": {
                                                  "x-scalar-ignore": true,
                                                  "title": "attribute",
                                                  "description": "Filter your audience by attribute.",
                                                  "type": "object",
                                                  "required": [
                                                    "field",
                                                    "operator"
                                                  ],
                                                  "properties": {
                                                    "field": {
                                                      "type": "string",
                                                      "description": "The name of the attribute you want to filter against.",
                                                      "example": "first_name"
                                                    },
                                                    "operator": {
                                                      "type": "string",
                                                      "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                      "enum": [
                                                        "eq",
                                                        "exists"
                                                      ]
                                                    },
                                                    "value": {
                                                      "type": "string",
                                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                    }
                                                  },
                                                  "example": {
                                                    "field": "unsubscribed",
                                                    "operator": "eq",
                                                    "value": true
                                                  }
                                                }
                                              }
                                            }
                                          ]
                                        },
                                        "segment": {
                                          "x-scalar-ignore": true,
                                          "title": "segment",
                                          "type": "object",
                                          "description": "Provide the `id` of a segment containing people you want to search for.",
                                          "properties": {
                                            "id": {
                                              "type": "integer",
                                              "description": "The ID of the segment you want to return people from.",
                                              "example": 4
                                            }
                                          }
                                        },
                                        "attribute": {
                                          "x-scalar-ignore": true,
                                          "title": "attribute",
                                          "description": "Filter your audience by attribute.",
                                          "type": "object",
                                          "required": [
                                            "field",
                                            "operator"
                                          ],
                                          "properties": {
                                            "field": {
                                              "type": "string",
                                              "description": "The name of the attribute you want to filter against.",
                                              "example": "first_name"
                                            },
                                            "operator": {
                                              "type": "string",
                                              "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                              "enum": [
                                                "eq",
                                                "exists"
                                              ]
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                            }
                                          },
                                          "example": {
                                            "field": "unsubscribed",
                                            "operator": "eq",
                                            "value": true
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              {
                                "x-scalar-ignore": true,
                                "title": "or",
                                "type": "object",
                                "properties": {
                                  "or": {
                                    "type": "array",
                                    "description": "Match *any* condition to return results.",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "and": {
                                          "type": "array",
                                          "description": "Returns results matching *all* conditions.",
                                          "items": {
                                            "x-scalar-ignore": true,
                                            "anyOf": [
                                              {
                                                "title": "segment",
                                                "description": "Filter for people who belong to a segment.",
                                                "type": "object",
                                                "properties": {
                                                  "segment": {
                                                    "x-scalar-ignore": true,
                                                    "title": "segment",
                                                    "type": "object",
                                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                                    "properties": {
                                                      "id": {
                                                        "type": "integer",
                                                        "description": "The ID of the segment you want to return people from.",
                                                        "example": 4
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              {
                                                "title": "audience",
                                                "type": "object",
                                                "description": "filter for people who have an attribute or an attribute value.",
                                                "properties": {
                                                  "attribute": {
                                                    "x-scalar-ignore": true,
                                                    "title": "attribute",
                                                    "description": "Filter your audience by attribute.",
                                                    "type": "object",
                                                    "required": [
                                                      "field",
                                                      "operator"
                                                    ],
                                                    "properties": {
                                                      "field": {
                                                        "type": "string",
                                                        "description": "The name of the attribute you want to filter against.",
                                                        "example": "first_name"
                                                      },
                                                      "operator": {
                                                        "type": "string",
                                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                        "enum": [
                                                          "eq",
                                                          "exists"
                                                        ]
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                      }
                                                    },
                                                    "example": {
                                                      "field": "unsubscribed",
                                                      "operator": "eq",
                                                      "value": true
                                                    }
                                                  }
                                                }
                                              }
                                            ]
                                          }
                                        },
                                        "not": {
                                          "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                          "oneOf": [
                                            {
                                              "title": "and",
                                              "type": "object",
                                              "properties": {
                                                "and": {
                                                  "type": "array",
                                                  "description": "Match *all* conditions to return results.",
                                                  "items": {
                                                    "x-scalar-ignore": true,
                                                    "anyOf": [
                                                      {
                                                        "title": "segment",
                                                        "description": "Filter for people who belong to a segment.",
                                                        "type": "object",
                                                        "properties": {
                                                          "segment": {
                                                            "x-scalar-ignore": true,
                                                            "title": "segment",
                                                            "type": "object",
                                                            "description": "Provide the `id` of a segment containing people you want to search for.",
                                                            "properties": {
                                                              "id": {
                                                                "type": "integer",
                                                                "description": "The ID of the segment you want to return people from.",
                                                                "example": 4
                                                              }
                                                            }
                                                          }
                                                        }
                                                      },
                                                      {
                                                        "title": "audience",
                                                        "type": "object",
                                                        "description": "filter for people who have an attribute or an attribute value.",
                                                        "properties": {
                                                          "attribute": {
                                                            "x-scalar-ignore": true,
                                                            "title": "attribute",
                                                            "description": "Filter your audience by attribute.",
                                                            "type": "object",
                                                            "required": [
                                                              "field",
                                                              "operator"
                                                            ],
                                                            "properties": {
                                                              "field": {
                                                                "type": "string",
                                                                "description": "The name of the attribute you want to filter against.",
                                                                "example": "first_name"
                                                              },
                                                              "operator": {
                                                                "type": "string",
                                                                "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                                "enum": [
                                                                  "eq",
                                                                  "exists"
                                                                ]
                                                              },
                                                              "value": {
                                                                "type": "string",
                                                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                              }
                                                            },
                                                            "example": {
                                                              "field": "unsubscribed",
                                                              "operator": "eq",
                                                              "value": true
                                                            }
                                                          }
                                                        }
                                                      }
                                                    ]
                                                  }
                                                }
                                              }
                                            },
                                            {
                                              "title": "or",
                                              "type": "object",
                                              "properties": {
                                                "or": {
                                                  "type": "array",
                                                  "description": "Match *any* condition to return results.",
                                                  "items": {
                                                    "x-scalar-ignore": true,
                                                    "anyOf": [
                                                      {
                                                        "title": "segment",
                                                        "description": "Filter for people who belong to a segment.",
                                                        "type": "object",
                                                        "properties": {
                                                          "segment": {
                                                            "x-scalar-ignore": true,
                                                            "title": "segment",
                                                            "type": "object",
                                                            "description": "Provide the `id` of a segment containing people you want to search for.",
                                                            "properties": {
                                                              "id": {
                                                                "type": "integer",
                                                                "description": "The ID of the segment you want to return people from.",
                                                                "example": 4
                                                              }
                                                            }
                                                          }
                                                        }
                                                      },
                                                      {
                                                        "title": "audience",
                                                        "type": "object",
                                                        "description": "filter for people who have an attribute or an attribute value.",
                                                        "properties": {
                                                          "attribute": {
                                                            "x-scalar-ignore": true,
                                                            "title": "attribute",
                                                            "description": "Filter your audience by attribute.",
                                                            "type": "object",
                                                            "required": [
                                                              "field",
                                                              "operator"
                                                            ],
                                                            "properties": {
                                                              "field": {
                                                                "type": "string",
                                                                "description": "The name of the attribute you want to filter against.",
                                                                "example": "first_name"
                                                              },
                                                              "operator": {
                                                                "type": "string",
                                                                "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                                "enum": [
                                                                  "eq",
                                                                  "exists"
                                                                ]
                                                              },
                                                              "value": {
                                                                "type": "string",
                                                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                              }
                                                            },
                                                            "example": {
                                                              "field": "unsubscribed",
                                                              "operator": "eq",
                                                              "value": true
                                                            }
                                                          }
                                                        }
                                                      }
                                                    ]
                                                  }
                                                }
                                              }
                                            },
                                            {
                                              "title": "segment",
                                              "type": "object",
                                              "properties": {
                                                "segment": {
                                                  "x-scalar-ignore": true,
                                                  "title": "segment",
                                                  "type": "object",
                                                  "description": "Provide the `id` of a segment containing people you want to search for.",
                                                  "properties": {
                                                    "id": {
                                                      "type": "integer",
                                                      "description": "The ID of the segment you want to return people from.",
                                                      "example": 4
                                                    }
                                                  }
                                                }
                                              }
                                            },
                                            {
                                              "title": "attribute",
                                              "type": "object",
                                              "properties": {
                                                "attribute": {
                                                  "x-scalar-ignore": true,
                                                  "title": "attribute",
                                                  "description": "Filter your audience by attribute.",
                                                  "type": "object",
                                                  "required": [
                                                    "field",
                                                    "operator"
                                                  ],
                                                  "properties": {
                                                    "field": {
                                                      "type": "string",
                                                      "description": "The name of the attribute you want to filter against.",
                                                      "example": "first_name"
                                                    },
                                                    "operator": {
                                                      "type": "string",
                                                      "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                      "enum": [
                                                        "eq",
                                                        "exists"
                                                      ]
                                                    },
                                                    "value": {
                                                      "type": "string",
                                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                    }
                                                  },
                                                  "example": {
                                                    "field": "unsubscribed",
                                                    "operator": "eq",
                                                    "value": true
                                                  }
                                                }
                                              }
                                            }
                                          ]
                                        },
                                        "segment": {
                                          "x-scalar-ignore": true,
                                          "title": "segment",
                                          "type": "object",
                                          "description": "Provide the `id` of a segment containing people you want to search for.",
                                          "properties": {
                                            "id": {
                                              "type": "integer",
                                              "description": "The ID of the segment you want to return people from.",
                                              "example": 4
                                            }
                                          }
                                        },
                                        "attribute": {
                                          "x-scalar-ignore": true,
                                          "title": "attribute",
                                          "description": "Filter your audience by attribute.",
                                          "type": "object",
                                          "required": [
                                            "field",
                                            "operator"
                                          ],
                                          "properties": {
                                            "field": {
                                              "type": "string",
                                              "description": "The name of the attribute you want to filter against.",
                                              "example": "first_name"
                                            },
                                            "operator": {
                                              "type": "string",
                                              "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                              "enum": [
                                                "eq",
                                                "exists"
                                              ]
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                            }
                                          },
                                          "example": {
                                            "field": "unsubscribed",
                                            "operator": "eq",
                                            "value": true
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              {
                                "x-scalar-ignore": true,
                                "title": "not",
                                "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                "oneOf": [
                                  {
                                    "title": "and",
                                    "type": "object",
                                    "properties": {
                                      "and": {
                                        "type": "array",
                                        "description": "Match *all* conditions to return results.",
                                        "items": {
                                          "x-scalar-ignore": true,
                                          "title": "People Filter",
                                          "type": "object",
                                          "description": "When filtering for people, you can use `and` and `or` arrays to determine the logic for a group of filter conditions. `not` reverses the filter condition and matches when the condition is false. `segment` and `attribute` represent the individual conditions you can filter a group of people for.",
                                          "properties": {
                                            "and": {
                                              "type": "array",
                                              "description": "Returns results matching *all* conditions.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            },
                                            "or": {
                                              "type": "array",
                                              "description": "Returns results matching *any* conditions.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            },
                                            "not": {
                                              "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                              "oneOf": [
                                                {
                                                  "title": "and",
                                                  "type": "object",
                                                  "properties": {
                                                    "and": {
                                                      "type": "array",
                                                      "description": "Match *all* conditions to return results.",
                                                      "items": {
                                                        "x-scalar-ignore": true,
                                                        "anyOf": [
                                                          {
                                                            "title": "segment",
                                                            "description": "Filter for people who belong to a segment.",
                                                            "type": "object",
                                                            "properties": {
                                                              "segment": {
                                                                "x-scalar-ignore": true,
                                                                "title": "segment",
                                                                "type": "object",
                                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                                "properties": {
                                                                  "id": {
                                                                    "type": "integer",
                                                                    "description": "The ID of the segment you want to return people from.",
                                                                    "example": 4
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          },
                                                          {
                                                            "title": "audience",
                                                            "type": "object",
                                                            "description": "filter for people who have an attribute or an attribute value.",
                                                            "properties": {
                                                              "attribute": {
                                                                "x-scalar-ignore": true,
                                                                "title": "attribute",
                                                                "description": "Filter your audience by attribute.",
                                                                "type": "object",
                                                                "required": [
                                                                  "field",
                                                                  "operator"
                                                                ],
                                                                "properties": {
                                                                  "field": {
                                                                    "type": "string",
                                                                    "description": "The name of the attribute you want to filter against.",
                                                                    "example": "first_name"
                                                                  },
                                                                  "operator": {
                                                                    "type": "string",
                                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                                    "enum": [
                                                                      "eq",
                                                                      "exists"
                                                                    ]
                                                                  },
                                                                  "value": {
                                                                    "type": "string",
                                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                                  }
                                                                },
                                                                "example": {
                                                                  "field": "unsubscribed",
                                                                  "operator": "eq",
                                                                  "value": true
                                                                }
                                                              }
                                                            }
                                                          }
                                                        ]
                                                      }
                                                    }
                                                  }
                                                },
                                                {
                                                  "title": "or",
                                                  "type": "object",
                                                  "properties": {
                                                    "or": {
                                                      "type": "array",
                                                      "description": "Match *any* condition to return results.",
                                                      "items": {
                                                        "x-scalar-ignore": true,
                                                        "anyOf": [
                                                          {
                                                            "title": "segment",
                                                            "description": "Filter for people who belong to a segment.",
                                                            "type": "object",
                                                            "properties": {
                                                              "segment": {
                                                                "x-scalar-ignore": true,
                                                                "title": "segment",
                                                                "type": "object",
                                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                                "properties": {
                                                                  "id": {
                                                                    "type": "integer",
                                                                    "description": "The ID of the segment you want to return people from.",
                                                                    "example": 4
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          },
                                                          {
                                                            "title": "audience",
                                                            "type": "object",
                                                            "description": "filter for people who have an attribute or an attribute value.",
                                                            "properties": {
                                                              "attribute": {
                                                                "x-scalar-ignore": true,
                                                                "title": "attribute",
                                                                "description": "Filter your audience by attribute.",
                                                                "type": "object",
                                                                "required": [
                                                                  "field",
                                                                  "operator"
                                                                ],
                                                                "properties": {
                                                                  "field": {
                                                                    "type": "string",
                                                                    "description": "The name of the attribute you want to filter against.",
                                                                    "example": "first_name"
                                                                  },
                                                                  "operator": {
                                                                    "type": "string",
                                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                                    "enum": [
                                                                      "eq",
                                                                      "exists"
                                                                    ]
                                                                  },
                                                                  "value": {
                                                                    "type": "string",
                                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                                  }
                                                                },
                                                                "example": {
                                                                  "field": "unsubscribed",
                                                                  "operator": "eq",
                                                                  "value": true
                                                                }
                                                              }
                                                            }
                                                          }
                                                        ]
                                                      }
                                                    }
                                                  }
                                                },
                                                {
                                                  "title": "segment",
                                                  "type": "object",
                                                  "properties": {
                                                    "segment": {
                                                      "x-scalar-ignore": true,
                                                      "title": "segment",
                                                      "type": "object",
                                                      "description": "Provide the `id` of a segment containing people you want to search for.",
                                                      "properties": {
                                                        "id": {
                                                          "type": "integer",
                                                          "description": "The ID of the segment you want to return people from.",
                                                          "example": 4
                                                        }
                                                      }
                                                    }
                                                  }
                                                },
                                                {
                                                  "title": "attribute",
                                                  "type": "object",
                                                  "properties": {
                                                    "attribute": {
                                                      "x-scalar-ignore": true,
                                                      "title": "attribute",
                                                      "description": "Filter your audience by attribute.",
                                                      "type": "object",
                                                      "required": [
                                                        "field",
                                                        "operator"
                                                      ],
                                                      "properties": {
                                                        "field": {
                                                          "type": "string",
                                                          "description": "The name of the attribute you want to filter against.",
                                                          "example": "first_name"
                                                        },
                                                        "operator": {
                                                          "type": "string",
                                                          "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                          "enum": [
                                                            "eq",
                                                            "exists"
                                                          ]
                                                        },
                                                        "value": {
                                                          "type": "string",
                                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                        }
                                                      },
                                                      "example": {
                                                        "field": "unsubscribed",
                                                        "operator": "eq",
                                                        "value": true
                                                      }
                                                    }
                                                  }
                                                }
                                              ]
                                            },
                                            "segment": {
                                              "x-scalar-ignore": true,
                                              "title": "segment",
                                              "type": "object",
                                              "description": "Provide the `id` of a segment containing people you want to search for.",
                                              "properties": {
                                                "id": {
                                                  "type": "integer",
                                                  "description": "The ID of the segment you want to return people from.",
                                                  "example": 4
                                                }
                                              }
                                            },
                                            "attribute": {
                                              "x-scalar-ignore": true,
                                              "title": "attribute",
                                              "description": "Filter your audience by attribute.",
                                              "type": "object",
                                              "required": [
                                                "field",
                                                "operator"
                                              ],
                                              "properties": {
                                                "field": {
                                                  "type": "string",
                                                  "description": "The name of the attribute you want to filter against.",
                                                  "example": "first_name"
                                                },
                                                "operator": {
                                                  "type": "string",
                                                  "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                  "enum": [
                                                    "eq",
                                                    "exists"
                                                  ]
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                }
                                              },
                                              "example": {
                                                "field": "unsubscribed",
                                                "operator": "eq",
                                                "value": true
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "title": "or",
                                    "type": "object",
                                    "properties": {
                                      "or": {
                                        "type": "array",
                                        "description": "Match *any* condition to return results.",
                                        "items": {
                                          "x-scalar-ignore": true,
                                          "title": "People Filter",
                                          "type": "object",
                                          "description": "When filtering for people, you can use `and` and `or` arrays to determine the logic for a group of filter conditions. `not` reverses the filter condition and matches when the condition is false. `segment` and `attribute` represent the individual conditions you can filter a group of people for.",
                                          "properties": {
                                            "and": {
                                              "type": "array",
                                              "description": "Returns results matching *all* conditions.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            },
                                            "or": {
                                              "type": "array",
                                              "description": "Returns results matching *any* conditions.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            },
                                            "not": {
                                              "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                              "oneOf": [
                                                {
                                                  "title": "and",
                                                  "type": "object",
                                                  "properties": {
                                                    "and": {
                                                      "type": "array",
                                                      "description": "Match *all* conditions to return results.",
                                                      "items": {
                                                        "x-scalar-ignore": true,
                                                        "anyOf": [
                                                          {
                                                            "title": "segment",
                                                            "description": "Filter for people who belong to a segment.",
                                                            "type": "object",
                                                            "properties": {
                                                              "segment": {
                                                                "x-scalar-ignore": true,
                                                                "title": "segment",
                                                                "type": "object",
                                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                                "properties": {
                                                                  "id": {
                                                                    "type": "integer",
                                                                    "description": "The ID of the segment you want to return people from.",
                                                                    "example": 4
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          },
                                                          {
                                                            "title": "audience",
                                                            "type": "object",
                                                            "description": "filter for people who have an attribute or an attribute value.",
                                                            "properties": {
                                                              "attribute": {
                                                                "x-scalar-ignore": true,
                                                                "title": "attribute",
                                                                "description": "Filter your audience by attribute.",
                                                                "type": "object",
                                                                "required": [
                                                                  "field",
                                                                  "operator"
                                                                ],
                                                                "properties": {
                                                                  "field": {
                                                                    "type": "string",
                                                                    "description": "The name of the attribute you want to filter against.",
                                                                    "example": "first_name"
                                                                  },
                                                                  "operator": {
                                                                    "type": "string",
                                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                                    "enum": [
                                                                      "eq",
                                                                      "exists"
                                                                    ]
                                                                  },
                                                                  "value": {
                                                                    "type": "string",
                                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                                  }
                                                                },
                                                                "example": {
                                                                  "field": "unsubscribed",
                                                                  "operator": "eq",
                                                                  "value": true
                                                                }
                                                              }
                                                            }
                                                          }
                                                        ]
                                                      }
                                                    }
                                                  }
                                                },
                                                {
                                                  "title": "or",
                                                  "type": "object",
                                                  "properties": {
                                                    "or": {
                                                      "type": "array",
                                                      "description": "Match *any* condition to return results.",
                                                      "items": {
                                                        "x-scalar-ignore": true,
                                                        "anyOf": [
                                                          {
                                                            "title": "segment",
                                                            "description": "Filter for people who belong to a segment.",
                                                            "type": "object",
                                                            "properties": {
                                                              "segment": {
                                                                "x-scalar-ignore": true,
                                                                "title": "segment",
                                                                "type": "object",
                                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                                "properties": {
                                                                  "id": {
                                                                    "type": "integer",
                                                                    "description": "The ID of the segment you want to return people from.",
                                                                    "example": 4
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          },
                                                          {
                                                            "title": "audience",
                                                            "type": "object",
                                                            "description": "filter for people who have an attribute or an attribute value.",
                                                            "properties": {
                                                              "attribute": {
                                                                "x-scalar-ignore": true,
                                                                "title": "attribute",
                                                                "description": "Filter your audience by attribute.",
                                                                "type": "object",
                                                                "required": [
                                                                  "field",
                                                                  "operator"
                                                                ],
                                                                "properties": {
                                                                  "field": {
                                                                    "type": "string",
                                                                    "description": "The name of the attribute you want to filter against.",
                                                                    "example": "first_name"
                                                                  },
                                                                  "operator": {
                                                                    "type": "string",
                                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                                    "enum": [
                                                                      "eq",
                                                                      "exists"
                                                                    ]
                                                                  },
                                                                  "value": {
                                                                    "type": "string",
                                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                                  }
                                                                },
                                                                "example": {
                                                                  "field": "unsubscribed",
                                                                  "operator": "eq",
                                                                  "value": true
                                                                }
                                                              }
                                                            }
                                                          }
                                                        ]
                                                      }
                                                    }
                                                  }
                                                },
                                                {
                                                  "title": "segment",
                                                  "type": "object",
                                                  "properties": {
                                                    "segment": {
                                                      "x-scalar-ignore": true,
                                                      "title": "segment",
                                                      "type": "object",
                                                      "description": "Provide the `id` of a segment containing people you want to search for.",
                                                      "properties": {
                                                        "id": {
                                                          "type": "integer",
                                                          "description": "The ID of the segment you want to return people from.",
                                                          "example": 4
                                                        }
                                                      }
                                                    }
                                                  }
                                                },
                                                {
                                                  "title": "attribute",
                                                  "type": "object",
                                                  "properties": {
                                                    "attribute": {
                                                      "x-scalar-ignore": true,
                                                      "title": "attribute",
                                                      "description": "Filter your audience by attribute.",
                                                      "type": "object",
                                                      "required": [
                                                        "field",
                                                        "operator"
                                                      ],
                                                      "properties": {
                                                        "field": {
                                                          "type": "string",
                                                          "description": "The name of the attribute you want to filter against.",
                                                          "example": "first_name"
                                                        },
                                                        "operator": {
                                                          "type": "string",
                                                          "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                          "enum": [
                                                            "eq",
                                                            "exists"
                                                          ]
                                                        },
                                                        "value": {
                                                          "type": "string",
                                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                        }
                                                      },
                                                      "example": {
                                                        "field": "unsubscribed",
                                                        "operator": "eq",
                                                        "value": true
                                                      }
                                                    }
                                                  }
                                                }
                                              ]
                                            },
                                            "segment": {
                                              "x-scalar-ignore": true,
                                              "title": "segment",
                                              "type": "object",
                                              "description": "Provide the `id` of a segment containing people you want to search for.",
                                              "properties": {
                                                "id": {
                                                  "type": "integer",
                                                  "description": "The ID of the segment you want to return people from.",
                                                  "example": 4
                                                }
                                              }
                                            },
                                            "attribute": {
                                              "x-scalar-ignore": true,
                                              "title": "attribute",
                                              "description": "Filter your audience by attribute.",
                                              "type": "object",
                                              "required": [
                                                "field",
                                                "operator"
                                              ],
                                              "properties": {
                                                "field": {
                                                  "type": "string",
                                                  "description": "The name of the attribute you want to filter against.",
                                                  "example": "first_name"
                                                },
                                                "operator": {
                                                  "type": "string",
                                                  "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                  "enum": [
                                                    "eq",
                                                    "exists"
                                                  ]
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                }
                                              },
                                              "example": {
                                                "field": "unsubscribed",
                                                "operator": "eq",
                                                "value": true
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "title": "segment",
                                    "type": "object",
                                    "properties": {
                                      "segment": {
                                        "x-scalar-ignore": true,
                                        "title": "segment",
                                        "type": "object",
                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                        "properties": {
                                          "id": {
                                            "type": "integer",
                                            "description": "The ID of the segment you want to return people from.",
                                            "example": 4
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "title": "attribute",
                                    "type": "object",
                                    "properties": {
                                      "attribute": {
                                        "x-scalar-ignore": true,
                                        "title": "attribute",
                                        "description": "Filter your audience by attribute.",
                                        "type": "object",
                                        "required": [
                                          "field",
                                          "operator"
                                        ],
                                        "properties": {
                                          "field": {
                                            "type": "string",
                                            "description": "The name of the attribute you want to filter against.",
                                            "example": "first_name"
                                          },
                                          "operator": {
                                            "type": "string",
                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                            "enum": [
                                              "eq",
                                              "exists"
                                            ]
                                          },
                                          "value": {
                                            "type": "string",
                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                          }
                                        },
                                        "example": {
                                          "field": "unsubscribed",
                                          "operator": "eq",
                                          "value": true
                                        }
                                      }
                                    }
                                  }
                                ]
                              },
                              {
                                "title": "segment",
                                "description": "Filter for people who belong to a segment.",
                                "type": "object",
                                "properties": {
                                  "segment": {
                                    "x-scalar-ignore": true,
                                    "title": "segment",
                                    "type": "object",
                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                    "properties": {
                                      "id": {
                                        "type": "integer",
                                        "description": "The ID of the segment you want to return people from.",
                                        "example": 4
                                      }
                                    }
                                  }
                                }
                              },
                              {
                                "title": "audience",
                                "type": "object",
                                "description": "filter for people who have an attribute or an attribute value.",
                                "properties": {
                                  "attribute": {
                                    "x-scalar-ignore": true,
                                    "title": "attribute",
                                    "description": "Filter your audience by attribute.",
                                    "type": "object",
                                    "required": [
                                      "field",
                                      "operator"
                                    ],
                                    "properties": {
                                      "field": {
                                        "type": "string",
                                        "description": "The name of the attribute you want to filter against.",
                                        "example": "first_name"
                                      },
                                      "operator": {
                                        "type": "string",
                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                        "enum": [
                                          "eq",
                                          "exists"
                                        ]
                                      },
                                      "value": {
                                        "type": "string",
                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                      }
                                    },
                                    "example": {
                                      "field": "unsubscribed",
                                      "operator": "eq",
                                      "value": true
                                    }
                                  }
                                }
                              }
                            ]
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "data": {
                            "type": "object",
                            "description": "Contains information you want to use to populate your broadcast.",
                            "additionalProperties": {
                              "x-additionalPropertiesName": "Broadcast liquid data",
                              "description": "Insert key-values that you want to reference in your message here."
                            },
                            "example": {
                              "headline": "Roadrunner spotted in Albuquerque!",
                              "date": 1511315635,
                              "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"
                            }
                          },
                          "email_add_duplicates": {
                            "type": "boolean",
                            "default": false,
                            "description": "an email address associated with more than one profile id is an error."
                          },
                          "email_ignore_missing": {
                            "type": "boolean",
                            "default": false,
                            "description": "If false, a missing email causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have emails, and continue sending to the rest of your audience."
                          },
                          "id_ignore_missing": {
                            "type": "boolean",
                            "default": false,
                            "description": "If false, a missing customer ID causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have IDs, and continue sending to the rest of your audience."
                          }
                        }
                      }
                    ],
                    "example": {
                      "recipients": {
                        "and": [
                          {
                            "segment": {
                              "id": 3
                            }
                          },
                          {
                            "or": [
                              {
                                "attribute": {
                                  "field": "interest",
                                  "operator": "eq",
                                  "value": "roadrunners"
                                }
                              },
                              {
                                "attribute": {
                                  "field": "state",
                                  "operator": "eq",
                                  "value": "NM"
                                }
                              },
                              {
                                "not": {
                                  "attribute": {
                                    "field": "species",
                                    "operator": "eq",
                                    "value": "roadrunners"
                                  }
                                }
                              }
                            ]
                          }
                        ]
                      },
                      "data": {
                        "headline": "Roadrunner spotted in Albuquerque!",
                        "date": 1511315635,
                        "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"
                      }
                    }
                  },
                  {
                    "title": "Emails",
                    "description": "An array of emails you want to send the broadcast to. These addresses must already exist; your request cannot create a new person.",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "emails"
                        ],
                        "properties": {
                          "emails": {
                            "description": "An array of email addresses you want to send the broadcast to. These addresses must already exist; your request cannot create a new person.",
                            "type": "array",
                            "items": {
                              "type": "string",
                              "format": "email"
                            },
                            "example": [
                              "recipient1@example.com",
                              "anotherRecipient@example.com"
                            ]
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "data": {
                            "type": "object",
                            "description": "Contains information you want to use to populate your broadcast.",
                            "additionalProperties": {
                              "x-additionalPropertiesName": "Broadcast liquid data",
                              "description": "Insert key-values that you want to reference in your message here."
                            },
                            "example": {
                              "headline": "Roadrunner spotted in Albuquerque!",
                              "date": 1511315635,
                              "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"
                            }
                          },
                          "email_add_duplicates": {
                            "type": "boolean",
                            "default": false,
                            "description": "an email address associated with more than one profile id is an error."
                          },
                          "email_ignore_missing": {
                            "type": "boolean",
                            "default": false,
                            "description": "If false, a missing email causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have emails, and continue sending to the rest of your audience."
                          },
                          "id_ignore_missing": {
                            "type": "boolean",
                            "default": false,
                            "description": "If false, a missing customer ID causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have IDs, and continue sending to the rest of your audience."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "IDs",
                    "description": "An array of customer ids that you want to send the broadcast to. These IDs must already exist; your request cannot create a new person.",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "ids"
                        ],
                        "properties": {
                          "ids": {
                            "description": "An array of IDs you want to send a broadcast to. **NOTE**: If your workspace identifies people by `email`, don't use this option. Identify your audience by `emails` instead.\n",
                            "type": "array",
                            "maxItems": 10000,
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "id1",
                              "id4"
                            ]
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "data": {
                            "type": "object",
                            "description": "Contains information you want to use to populate your broadcast.",
                            "additionalProperties": {
                              "x-additionalPropertiesName": "Broadcast liquid data",
                              "description": "Insert key-values that you want to reference in your message here."
                            },
                            "example": {
                              "headline": "Roadrunner spotted in Albuquerque!",
                              "date": 1511315635,
                              "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"
                            }
                          },
                          "email_add_duplicates": {
                            "type": "boolean",
                            "default": false,
                            "description": "an email address associated with more than one profile id is an error."
                          },
                          "email_ignore_missing": {
                            "type": "boolean",
                            "default": false,
                            "description": "If false, a missing email causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have emails, and continue sending to the rest of your audience."
                          },
                          "id_ignore_missing": {
                            "type": "boolean",
                            "default": false,
                            "description": "If false, a missing customer ID causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have IDs, and continue sending to the rest of your audience."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "User Maps",
                    "description": "An array of JSON objects containing `id` or `email` keys and a `data` key. Each object represents a person you want to send the broadcast to and data you want to personalize their message with using liquid.",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "per_user_data"
                        ],
                        "properties": {
                          "per_user_data": {
                            "description": "An array of people you want to send a broadcast to and custom data for each person. Each object in the array represents a person, with additional data you want to use to personalize their message. **When you trigger a broadcast, the people in your request must already exist in your workspace.** Requests to trigger a broadcast cannot create new people.\n",
                            "type": "array",
                            "maxItems": 10000,
                            "items": {
                              "oneOf": [
                                {
                                  "title": "ids",
                                  "type": "object",
                                  "required": [
                                    "id"
                                  ],
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "description": "The ID of the recipient.",
                                      "example": 1
                                    },
                                    "data": {
                                      "type": "object",
                                      "description": "Merge data associated with the recipient.",
                                      "additionalProperties": {
                                        "x-additionalPropertiesName": "Liquid merge data",
                                        "description": "Insert key-values that you want to reference in your message here."
                                      },
                                      "example": {
                                        "firstName": "Hugh",
                                        "lastName": "Mann",
                                        "purchase": "shoes"
                                      }
                                    }
                                  }
                                },
                                {
                                  "title": "emails",
                                  "type": "object",
                                  "required": [
                                    "email"
                                  ],
                                  "properties": {
                                    "email": {
                                      "type": "string",
                                      "description": "The email address of the recipient. This address must be unique in your workspace. If more than one person has the same `email` attribute, your request will produce an error.",
                                      "example": "recipient1@example.com"
                                    },
                                    "data": {
                                      "description": "Merge data associated with the recipient.",
                                      "type": "object",
                                      "additionalProperties": {
                                        "x-additionalPropertiesName": "Liquid merge data",
                                        "description": "Insert key-values that you want to reference in your message here."
                                      },
                                      "example": {
                                        "firstName": "Hugh",
                                        "lastName": "Mann",
                                        "purchase": "shoes"
                                      }
                                    }
                                  }
                                }
                              ]
                            },
                            "example": [
                              {
                                "id": "wiley_coyote",
                                "data": {
                                  "voucher_code": "FESwYm"
                                }
                              },
                              {
                                "email": "road@runner.net",
                                "data": {
                                  "voucher_code": "cYm6XJ"
                                }
                              }
                            ]
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "data": {
                            "type": "object",
                            "description": "Contains information you want to use to populate your broadcast.",
                            "additionalProperties": {
                              "x-additionalPropertiesName": "Broadcast liquid data",
                              "description": "Insert key-values that you want to reference in your message here."
                            },
                            "example": {
                              "headline": "Roadrunner spotted in Albuquerque!",
                              "date": 1511315635,
                              "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"
                            }
                          },
                          "email_add_duplicates": {
                            "type": "boolean",
                            "default": false,
                            "description": "an email address associated with more than one profile id is an error."
                          },
                          "email_ignore_missing": {
                            "type": "boolean",
                            "default": false,
                            "description": "If false, a missing email causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have emails, and continue sending to the rest of your audience."
                          },
                          "id_ignore_missing": {
                            "type": "boolean",
                            "default": false,
                            "description": "If false, a missing customer ID causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have IDs, and continue sending to the rest of your audience."
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "Data file URL",
                    "description": "The URL of a data file containing per-user data, each line containing a json map with either `id` and `data` or `email` and `data` keys. **When you trigger a broadcast, the people represented by `id` and `email` must already exist in your workspace.** Requests to trigger a broadcast cannot create new people.\n",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "data_file_url"
                        ],
                        "properties": {
                          "data_file_url": {
                            "description": "The URL of a JSON Line (newline-delimited JSON) data file containing per-user data. Each line is a single object representing a person: either a json map of `id` and `data` or `email` and `data` keys. For example, `{\"email\":\"road@runner.net\",\"data\":{\"voucher_code\": \"coyote\"}}`.\n\nThe IDs or emails in your data file must already exist in your workspace. Your broadcast cannot add new people to your workspace and won't send messages for IDs or email addresses that don't match a person in your workspace.\n",
                            "type": "string",
                            "format": "url",
                            "example": "https://myFile.example.com"
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "data": {
                            "type": "object",
                            "description": "Contains information you want to use to populate your broadcast.",
                            "additionalProperties": {
                              "x-additionalPropertiesName": "Broadcast liquid data",
                              "description": "Insert key-values that you want to reference in your message here."
                            },
                            "example": {
                              "headline": "Roadrunner spotted in Albuquerque!",
                              "date": 1511315635,
                              "text": "We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!"
                            }
                          },
                          "email_add_duplicates": {
                            "type": "boolean",
                            "default": false,
                            "description": "an email address associated with more than one profile id is an error."
                          },
                          "email_ignore_missing": {
                            "type": "boolean",
                            "default": false,
                            "description": "If false, a missing email causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have emails, and continue sending to the rest of your audience."
                          },
                          "id_ignore_missing": {
                            "type": "boolean",
                            "default": false,
                            "description": "If false, a missing customer ID causes the broadcast to error and fail. If true, the broadcast will skip over any people in your audience who don't have IDs, and continue sending to the rest of your audience."
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A successful request returns the trigger ID.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "description": "The `trigger_id` for this operation. You can use this ID to get the status of your broadcast or [check for errors](#operation/broadcastErrors).",
                      "example": 3
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request. Make sure that you provided the right credentials."
          },
          "404": {
            "description": "The `broadcast_id` does not exist."
          },
          "422": {
            "description": "The broadcast has one or more validation errors. You can learn more by [checking your broadcast for errors](#operation/broadcastErrors) using the `trigger_id` found in the error `detail`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "description": "Contains one or more validation errors found in your request payload.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Describes the error and provides the trigger ID you can use to look up more information.",
                            "example": "Errors were found while processing per user data (ids, emails or json data). More detail available from the errors endpoint for trigger 12\""
                          },
                          "source": {
                            "type": "object",
                            "properties": {
                              "pointer": {
                                "type": "string",
                                "description": "Points to the key in your payload that contained validation errors.",
                                "example": "/data/attributes/per_user_data"
                              }
                            }
                          },
                          "status": {
                            "type": "string",
                            "description": "The error code.",
                            "enum": [
                              "422"
                            ],
                            "example": "422"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "label": "Node.js (SDK)",
            "lang": "javascript",
            "source": "const { APIClient, RegionUS } = require('customerio-node');\nconst api = new APIClient('bearer-app-key', { region: RegionUS });\n\nconst data = {\n  headline: 'Roadrunner spotted in Albuquerque!',\n  date: 1511315635,\n  text:\n    \"We've received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!\",\n};\n\napi.triggerBroadcast(campaignId, data, { segment: { id: 7 } });\n"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{broadcast_id}/triggers \\\n  --header 'content-type: application/json' \\\n  --data '{\"data\":{\"headline\":\"Roadrunner spotted in Albuquerque!\",\"date\":1511315635,\"text\":\"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!\"},\"email_add_duplicates\":false,\"email_ignore_missing\":false,\"id_ignore_missing\":false}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bbroadcast_id%7D/triggers\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  data: {\n    headline: 'Roadrunner spotted in Albuquerque!',\n    date: 1511315635,\n    text: 'We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!'\n  },\n  email_add_duplicates: false,\n  email_ignore_missing: false,\n  id_ignore_missing: false\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bbroadcast_id%7D/triggers\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"data\\\":{\\\"headline\\\":\\\"Roadrunner spotted in Albuquerque!\\\",\\\"date\\\":1511315635,\\\"text\\\":\\\"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!\\\"},\\\"email_add_duplicates\\\":false,\\\"email_ignore_missing\\\":false,\\\"id_ignore_missing\\\":false}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"data\\\":{\\\"headline\\\":\\\"Roadrunner spotted in Albuquerque!\\\",\\\"date\\\":1511315635,\\\"text\\\":\\\"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!\\\"},\\\"email_add_duplicates\\\":false,\\\"email_ignore_missing\\\":false,\\\"id_ignore_missing\\\":false}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/campaigns/%7Bbroadcast_id%7D/triggers\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bbroadcast_id%7D/triggers\"\n\n\tpayload := strings.NewReader(\"{\\\"data\\\":{\\\"headline\\\":\\\"Roadrunner spotted in Albuquerque!\\\",\\\"date\\\":1511315635,\\\"text\\\":\\\"We received reports of a roadrunner in your immediate area! Head to your dashboard to view more information!\\\"},\\\"email_add_duplicates\\\":false,\\\"email_ignore_missing\\\":false,\\\"id_ignore_missing\\\":false}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{broadcast_id}/triggers/{trigger_id}/errors": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The ID of the broadcast that you want to return information about.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "trigger_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign trigger that you want to return information for.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "operationId": "broadcastErrors",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "tags": [
          "Broadcasts"
        ],
        "summary": "Get broadcast error descriptions",
        "description": "If your broadcast produced validation errors, this endpoint can help you better understand what went wrong. Broadcast errors are generally issues in your broadcast audience and associated.\n",
        "responses": {
          "200": {
            "description": "Returns an array of errors.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "description": "A list of errors in the format `line <x>: <error text>` to help you troubleshoot errors associated with your audience or data file.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "next": {
                      "x-scalar-ignore": true,
                      "type": "string",
                      "description": "Indicates the next page of results. Add `?start=<next_value>` to the request to get the next page of results."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid."
          },
          "401": {
            "description": "Unauthorized request. Make sure that you provided the right credentials."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{broadcast_id}/triggers/{trigger_id}/errors"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bbroadcast_id%7D/triggers/%7Btrigger_id%7D/errors\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bbroadcast_id%7D/triggers/%7Btrigger_id%7D/errors\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bbroadcast_id%7D/triggers/%7Btrigger_id%7D/errors\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bbroadcast_id%7D/triggers/%7Btrigger_id%7D/errors\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/send/email": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "summary": "Send a transactional email",
        "operationId": "sendEmail",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Send a transactional email. You can send a message using a `transactional_message_id` or send your own `body`, `subject`, and `from` values at send time. The `transactional_message_id` can be either the numerical ID for the template or the *Trigger Name* that you assigned the template.\n\nIf you want to send your own `body`, `subject`, and `from` values to populate your message at send time, we recommend that you pass a `transactional_message_id` anyway; the values you pass in the request will override the template. \n\nYou can find your `transactional_message_id` from the code sample in the **Overview** tab for your transactional message in the user interface, or you can look up a list of your transactional messages through the [App API](#tag/Transactional).\n\nCustomer.io attributes metrics to a `transactional_message_id`; if you don't provide a `transactional_message_id`, we attribute metrics to `\"transactional_message_id\": 1`. You can create empty transactional messages in the UI and override the `body`, `subject`, and `from` values at send time. This provides flexibility in your integration and lets you organize metrics (rather than gathering metrics for all of your transactional messages against a single ID).\n",
        "tags": [
          "Send Messages"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "description": "The payload of a transactional message.",
                "oneOf": [
                  {
                    "title": "With template",
                    "description": "Send a transactional message using a template that you set up in Customer.io.",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "transactional_message_id"
                        ],
                        "properties": {
                          "transactional_message_id": {
                            "description": "The transactional message template that you want to use for your message. You can call the template by its numerical ID or by the *Trigger Name* that you assigned the template (case insensitive).",
                            "oneOf": [
                              {
                                "title": "ID (integer)",
                                "type": "integer",
                                "description": "The ID of the transactional message you want to send.",
                                "example": 44
                              },
                              {
                                "title": "Trigger Name (string)",
                                "type": "string",
                                "description": "The name of trigger for the transactional message you want to send; you set the trigger name in the *Configure Settings* step when setting up your message. This is case insensitive.",
                                "example": "pwdreset"
                              }
                            ]
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "body": {
                            "type": "string",
                            "description": "The HTML body of your message. This overrides the body of the transactional template (referenced by `transactional_message_id`). If you send an AMP-enabled email (with `body_amp`), and the recipient's email client doesn't support AMP, this is the fallback email."
                          },
                          "body_amp": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                          },
                          "body_plain": {
                            "type": "string",
                            "description": "The plaintext body of your message. This overrides the body of your transactional template (referenced by `transactional_message_id`)."
                          },
                          "subject": {
                            "type": "string",
                            "description": "The subject line for your message. This overrides the subject of the transactional template (referenced by `transactional_message_id`)."
                          },
                          "from": {
                            "type": "string",
                            "description": "The address that your email is from. This address must be verified by Customer.io. This overrides the from address set within the transactional template (referenced by `transactional_message_id`). You can include a display/friendly name in your from address, but we recommend that you use quotation marks around the friendly name to avoid potential issues with special characters, e.g. `\\\"Person\\\" <person@example.com>`.",
                            "example": "support@example.com"
                          },
                          "language": {
                            "type": "string",
                            "description": "Overrides language preferences for the person you want to send your transactional message to. Use one of our [supported two- or four-letter language codes](/localization-getting-started/#supported-languages)."
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "required": [
                          "to",
                          "identifiers"
                        ],
                        "properties": {
                          "identifiers": {
                            "description": "Identifies the person represented by your transactional message by one of, and only one of, `id`, `email`, or `cio_id`.",
                            "oneOf": [
                              {
                                "title": "id",
                                "type": "object",
                                "required": [
                                  "id"
                                ],
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "The identifier for the person represented by the transactional message. **NOTE**: If your workspace identifies people by email, use the `email` identifier instead.\n",
                                    "example": 12345
                                  }
                                }
                              },
                              {
                                "title": "email",
                                "type": "object",
                                "required": [
                                  "email"
                                ],
                                "properties": {
                                  "email": {
                                    "type": "string",
                                    "description": "The identifier for the person represented by the transactional message. Use this option if your workspace identifies people by email rather than by `id`.",
                                    "example": "cool.person@example.com"
                                  }
                                }
                              },
                              {
                                "title": "cio_id",
                                "type": "object",
                                "required": [
                                  "cio_id"
                                ],
                                "properties": {
                                  "cio_id": {
                                    "type": "string",
                                    "description": "A unique, immutable identifier for a person, set by Customer.io when you add a person.",
                                    "example": 3000001
                                  }
                                }
                              }
                            ]
                          },
                          "message_data": {
                            "type": "object",
                            "description": "An object containing the key-value pairs referenced using liquid in your message.",
                            "additionalProperties": {
                              "x-additionalPropertiesName": "Liquid Data",
                              "description": "Insert key-values that you want to reference in your message here."
                            },
                            "example": {
                              "password_reset_token": "abcde-12345-fghij-d888",
                              "account_id": "123dj"
                            }
                          },
                          "send_at": {
                            "type": "integer",
                            "description": "A unix timestamp (seconds since epoch) determining when the message will be sent. The timestamp can be up to 90 days in the future. If this value is in the past, your message is sent immediately."
                          },
                          "disable_message_retention": {
                            "x-scalar-ignore": true,
                            "type": "boolean",
                            "default": false,
                            "description": "If true, the message body is not retained in delivery history. Setting this value overrides the value set in the settings of your `transactional_message_id`."
                          },
                          "send_to_unsubscribed": {
                            "x-scalar-ignore": true,
                            "type": "boolean",
                            "default": true,
                            "description": "If false, your message is not sent to unsubscribed recipients. Setting this value overrides the value set in the settings of your `transactional_message_id`."
                          },
                          "queue_draft": {
                            "x-scalar-ignore": true,
                            "type": "boolean",
                            "description": "If true, your transactional message is held as a draft in Customer.io and not sent directly to your audience. You must go to the Deliveries and Drafts page to send your message.",
                            "default": false
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "to": {
                            "type": "string",
                            "description": "The message recipient(s). Supports multiple addresses separated by commas. Your request can contain up to 15 total recipients between the `to` and `bcc` keys.\n\nYou can include a display or \"friendly\" name in \"to\" address, but we recommend that you use quotation marks around the friendly name to avoid potential issues with special characters, e.g. `\\\"Person\\\" <person@example.com>`.            \n",
                            "example": "cool.person@example.com"
                          },
                          "bcc": {
                            "type": "string",
                            "description": "Blind copy message recipients. Supports multiple addresses separated by commas. Your request can contain up to 15 total recipients between the `to` and `bcc` keys.",
                            "example": "bcc@example.com"
                          },
                          "fake_bcc": {
                            "type": "boolean",
                            "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                          },
                          "reply_to": {
                            "type": "string",
                            "description": "The address that recipients can reply to, if different from the `from` address.",
                            "example": "replyto@example.com"
                          },
                          "preheader": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "Also known as \"preview text\", this is the block block of text that users see next to, or underneath, the subject line in their inbox."
                          },
                          "body_plain": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "By default, we generate a plaintext version of your message body for each delivery. Use this key to override the default plain text body."
                          },
                          "attachments": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "A dictionary of attachments where the filename is the key and the value is the base64-encoded contents. The filename must include the extension (i.e. `name.csv`). The total size of all attachments must be less than 2 MB.",
                            "properties": {
                              "<file-name>": {
                                "type": "string",
                                "format": "base64"
                              }
                            }
                          },
                          "headers": {
                            "x-scalar-ignore": true,
                            "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                            "type": "string",
                            "format": "json",
                            "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                          },
                          "disable_css_preprocessing": {
                            "type": "boolean",
                            "description": "Set to `true` to disable CSS preprocessing. This setting overrides the CSS preprocessing setting on the `transactional_message_id` as set in the user interface. Transactional emails have CSS preprocessing enabled by default.",
                            "example": false,
                            "default": false
                          },
                          "tracked": {
                            "x-scalar-ignore": true,
                            "type": "boolean",
                            "description": "If true, Customer.io tracks opens and link clicks in your message.",
                            "default": true
                          }
                        }
                      }
                    ],
                    "example": {
                      "transactional_message_id": 44,
                      "to": "cool.person@example.com",
                      "from": "override-templated-address@example.com",
                      "subject": "Order receipt",
                      "identifiers": {
                        "email": "cool.person@example.com"
                      },
                      "message_data": {
                        "password_reset_token": "abcde-12345-fghij-d888",
                        "account_id": "123dj"
                      },
                      "attachments": {
                        "file1.csv": "base64encodedcontent",
                        "file2.pdf": "base64encodedcontent"
                      },
                      "headers": {
                        "X-Mailgun-Tag": "my-cool-tag"
                      },
                      "bcc": "bcc@example.com",
                      "disable_message_retention": false,
                      "send_to_unsubscribed": true,
                      "tracked": true,
                      "queue_draft": false,
                      "disable_css_preprocessing": true
                    }
                  },
                  {
                    "title": "Without template",
                    "description": "Create your own message from scratch.",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "body",
                          "subject",
                          "from"
                        ],
                        "properties": {
                          "body": {
                            "type": "string",
                            "description": "The body of your message.",
                            "example": "Your temporary password is {{message_data.password_reset_token}}"
                          },
                          "subject": {
                            "type": "string",
                            "description": "The subject line for your message.",
                            "example": "Reset your password!"
                          },
                          "from": {
                            "type": "string",
                            "description": "The address that your email is from. This address must be verified by Customer.io. You can include a display/friendly name in your from address in the format `Person <person@example.com>`.",
                            "example": "support@example.com"
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "required": [
                          "to",
                          "identifiers"
                        ],
                        "properties": {
                          "identifiers": {
                            "description": "Identifies the person represented by your transactional message by one of, and only one of, `id`, `email`, or `cio_id`.",
                            "oneOf": [
                              {
                                "title": "id",
                                "type": "object",
                                "required": [
                                  "id"
                                ],
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "The identifier for the person represented by the transactional message. **NOTE**: If your workspace identifies people by email, use the `email` identifier instead.\n",
                                    "example": 12345
                                  }
                                }
                              },
                              {
                                "title": "email",
                                "type": "object",
                                "required": [
                                  "email"
                                ],
                                "properties": {
                                  "email": {
                                    "type": "string",
                                    "description": "The identifier for the person represented by the transactional message. Use this option if your workspace identifies people by email rather than by `id`.",
                                    "example": "cool.person@example.com"
                                  }
                                }
                              },
                              {
                                "title": "cio_id",
                                "type": "object",
                                "required": [
                                  "cio_id"
                                ],
                                "properties": {
                                  "cio_id": {
                                    "type": "string",
                                    "description": "A unique, immutable identifier for a person, set by Customer.io when you add a person.",
                                    "example": 3000001
                                  }
                                }
                              }
                            ]
                          },
                          "message_data": {
                            "type": "object",
                            "description": "An object containing the key-value pairs referenced using liquid in your message.",
                            "additionalProperties": {
                              "x-additionalPropertiesName": "Liquid Data",
                              "description": "Insert key-values that you want to reference in your message here."
                            },
                            "example": {
                              "password_reset_token": "abcde-12345-fghij-d888",
                              "account_id": "123dj"
                            }
                          },
                          "send_at": {
                            "type": "integer",
                            "description": "A unix timestamp (seconds since epoch) determining when the message will be sent. The timestamp can be up to 90 days in the future. If this value is in the past, your message is sent immediately."
                          },
                          "disable_message_retention": {
                            "x-scalar-ignore": true,
                            "type": "boolean",
                            "default": false,
                            "description": "If true, the message body is not retained in delivery history. Setting this value overrides the value set in the settings of your `transactional_message_id`."
                          },
                          "send_to_unsubscribed": {
                            "x-scalar-ignore": true,
                            "type": "boolean",
                            "default": true,
                            "description": "If false, your message is not sent to unsubscribed recipients. Setting this value overrides the value set in the settings of your `transactional_message_id`."
                          },
                          "queue_draft": {
                            "x-scalar-ignore": true,
                            "type": "boolean",
                            "description": "If true, your transactional message is held as a draft in Customer.io and not sent directly to your audience. You must go to the Deliveries and Drafts page to send your message.",
                            "default": false
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "to": {
                            "type": "string",
                            "description": "The message recipient(s). Supports multiple addresses separated by commas. Your request can contain up to 15 total recipients between the `to` and `bcc` keys.\n\nYou can include a display or \"friendly\" name in \"to\" address, but we recommend that you use quotation marks around the friendly name to avoid potential issues with special characters, e.g. `\\\"Person\\\" <person@example.com>`.            \n",
                            "example": "cool.person@example.com"
                          },
                          "bcc": {
                            "type": "string",
                            "description": "Blind copy message recipients. Supports multiple addresses separated by commas. Your request can contain up to 15 total recipients between the `to` and `bcc` keys.",
                            "example": "bcc@example.com"
                          },
                          "fake_bcc": {
                            "type": "boolean",
                            "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                          },
                          "reply_to": {
                            "type": "string",
                            "description": "The address that recipients can reply to, if different from the `from` address.",
                            "example": "replyto@example.com"
                          },
                          "preheader": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "Also known as \"preview text\", this is the block block of text that users see next to, or underneath, the subject line in their inbox."
                          },
                          "body_plain": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "By default, we generate a plaintext version of your message body for each delivery. Use this key to override the default plain text body."
                          },
                          "attachments": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "A dictionary of attachments where the filename is the key and the value is the base64-encoded contents. The filename must include the extension (i.e. `name.csv`). The total size of all attachments must be less than 2 MB.",
                            "properties": {
                              "<file-name>": {
                                "type": "string",
                                "format": "base64"
                              }
                            }
                          },
                          "headers": {
                            "x-scalar-ignore": true,
                            "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                            "type": "string",
                            "format": "json",
                            "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                          },
                          "disable_css_preprocessing": {
                            "type": "boolean",
                            "description": "Set to `true` to disable CSS preprocessing. This setting overrides the CSS preprocessing setting on the `transactional_message_id` as set in the user interface. Transactional emails have CSS preprocessing enabled by default.",
                            "example": false,
                            "default": false
                          },
                          "tracked": {
                            "x-scalar-ignore": true,
                            "type": "boolean",
                            "description": "If true, Customer.io tracks opens and link clicks in your message.",
                            "default": true
                          }
                        }
                      }
                    ],
                    "example": {
                      "from": "Support <support@example.com>",
                      "subject": "Your password reset request!",
                      "body": "Your temporary password is {{message_data.password_reset_token}}",
                      "to": "cool.person@example.com",
                      "identifiers": {
                        "id": 12345
                      },
                      "message_data": {
                        "password_reset_token": "abcde-12345-fghij-d888",
                        "account_id": "123dj"
                      },
                      "headers": {
                        "X-Mailgun-Tag": "my-cool-tag"
                      },
                      "bcc": "bcc@example.com",
                      "disable_message_retention": false,
                      "send_to_unsubscribed": true,
                      "tracked": true,
                      "queue_draft": false,
                      "disable_css_preprocessing": true
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a unique ID for the delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "delivery_id": {
                      "type": "string",
                      "description": "A unique identifier for the message."
                    },
                    "queued_at": {
                      "type": "integer",
                      "format": "unix timestamp",
                      "description": "The date-time when the message is sent."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed or the attachment is not base64-encoded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "description": "Contains errors.",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail.",
                          "example": "`Attachment must be base64 encoded: \"filename.xyz\"\n"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Your attachment is not in a recognized format.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail.",
                          "example": "Forbidden file type xyz for attachment filename.xyz."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "413": {
            "description": "This typically means your attachment exceeds the size limit.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail.",
                          "example": "Total attachment size exceeds the limit"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"transactional_message_id\": 44,\n  \"to\": \"cool.person@example.com\",\n  \"from\": \"override-templated-address@example.com\",\n  \"subject\": \"Order receipt\",\n  \"identifiers\": {\n    \"email\": \"cool.person@example.com\"\n  },\n  \"message_data\": {\n    \"password_reset_token\": \"abcde-12345-fghij-d888\",\n    \"account_id\": \"123dj\"\n  },\n  \"attachments\": {\n    \"file1.csv\": \"base64encodedcontent\",\n    \"file2.pdf\": \"base64encodedcontent\"\n  },\n  \"headers\": {\n    \"X-Mailgun-Tag\": \"my-cool-tag\"\n  },\n  \"bcc\": \"bcc@example.com\",\n  \"disable_message_retention\": false,\n  \"send_to_unsubscribed\": true,\n  \"tracked\": true,\n  \"queue_draft\": false,\n  \"disable_css_preprocessing\": true\n}"
          },
          {
            "label": "Node.js (SDK)",
            "lang": "javascript + Node.js",
            "source": "const { APIClient, SendEmailRequest, RegionUS } = require(\"customerio-node\");\nconst api = new APIClient('app-key', { region: RegionUS });\n\nconst request = new SendEmailRequest({\n  transactional_message_id: \"3\",\n  from: \"override-templated-address@example.com\",\n  message_data: {\n    name: \"Person\",\n    items: {\n      name: \"shoes\",\n      price: \"59.99\",\n    },\n    products: [],\n  },\n  identifiers: {\n    email: \"person@example.com\",\n  },\n});\n\n// (optional) attach a file to your message.\nrequest.attach(\"receipt.pdf\", fs.readFileSync(\"receipt.pdf\"));\n\napi.sendEmail(request)\n  .then(res => console.log(res))\n  .catch(err => console.log(err.statusCode, err.message))\n"
          },
          {
            "label": "Ruby (SDK)",
            "lang": "ruby",
            "source": "require \"customerio\"\n\nclient = Customerio::APIClient.new(\"your API key\", region: Customerio::Regions::US)\n\nrequest = Customerio::SendEmailRequest.new(\n  transactional_message_id: \"3\",\n  from: \"override-templated-address@example.com\",\n  message_data: {\n    name: \"Person\",\n    items: {\n      name: \"shoes\",\n      price: \"59.99\",\n    },\n    products: [],\n  },\n  identifiers: {\n    email: \"person@example.com\",\n  },\n)\n\nfile = File.open('<file-path>', 'r')\nrequest.attach(\"filename\", file.read)\n\nbegin\n  response = client.send_email(request)\n  puts response\nrescue Customerio::InvalidResponse => e\n  puts e.code, e.message\nend\n"
          },
          {
            "label": "Python (SDK)",
            "lang": "python",
            "source": "from customerio import APIClient, Regions, SendEmailRequest\nclient = APIClient(\"your API key\", region=Regions.US)\n\nrequest = SendEmailRequest(\n  transactional_message_id=\"3\",\n  _from=\"override-templated-address@example.com\",\n  message_data={\n    \"name\": \"person\",\n    \"items\": [\n      {\n        \"name\": \"shoes\",\n        \"price\": \"59.99\",\n      },\n    ]\n  },\n  identifiers={\n    \"email\": \"person@example.com\",\n  }\n)\n\nwith open(\"path to file\", \"rb\") as f:\n  request.attach('receipt.pdf', f.read())\n\nresponse = client.send_email(request)\nprint(response)\n"
          },
          {
            "label": "Go (SDK)",
            "lang": "go",
            "source": "import \"github.com/customerio/go-customerio/v2\"\n\nclient := customerio.NewAPIClient(\"your API key\", customerio.WithRegion(customerio.RegionUS));\n\nrequest := customerio.SendEmailRequest{\n  TransactionalMessageID: \"3\",\n  MessageData: map[string]interface{}{\n    \"name\": \"Person\",\n    \"items\": map[string]interface{}{\n      \"name\": \"shoes\",\n      \"price\": \"59.99\",\n    },\n    \"products\": []interface{}{},\n  },\n  Identifiers: map[string]string{\n    \"email\": \"person@example.com\",\n  },\n}\n\n// (optional) attach a file to your message.\nf, err := os.Open(\"receipt.pdf\")\nif err != nil {\n  fmt.Println(err)\n}\nrequest.Attach(\"receipt.pdf\", f)\n\nbody, err := client.SendEmail(context.Background(), &request)\nif err != nil {\n  fmt.Println(err)\n}\n\nfmt.Println(body)\n"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/send/email \\\n  --header 'content-type: application/json' \\\n  --data '{\"transactional_message_id\":44,\"to\":\"cool.person@example.com\",\"from\":\"override-templated-address@example.com\",\"subject\":\"Order receipt\",\"identifiers\":{\"email\":\"cool.person@example.com\"},\"message_data\":{\"password_reset_token\":\"abcde-12345-fghij-d888\",\"account_id\":\"123dj\"},\"attachments\":{\"file1.csv\":\"base64encodedcontent\",\"file2.pdf\":\"base64encodedcontent\"},\"headers\":{\"X-Mailgun-Tag\":\"my-cool-tag\"},\"bcc\":\"bcc@example.com\",\"disable_message_retention\":false,\"send_to_unsubscribed\":true,\"tracked\":true,\"queue_draft\":false,\"disable_css_preprocessing\":true}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/send/email\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  transactional_message_id: 44,\n  to: 'cool.person@example.com',\n  from: 'override-templated-address@example.com',\n  subject: 'Order receipt',\n  identifiers: {email: 'cool.person@example.com'},\n  message_data: {password_reset_token: 'abcde-12345-fghij-d888', account_id: '123dj'},\n  attachments: {'file1.csv': 'base64encodedcontent', 'file2.pdf': 'base64encodedcontent'},\n  headers: {'X-Mailgun-Tag': 'my-cool-tag'},\n  bcc: 'bcc@example.com',\n  disable_message_retention: false,\n  send_to_unsubscribed: true,\n  tracked: true,\n  queue_draft: false,\n  disable_css_preprocessing: true\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/send/email\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"transactional_message_id\\\":44,\\\"to\\\":\\\"cool.person@example.com\\\",\\\"from\\\":\\\"override-templated-address@example.com\\\",\\\"subject\\\":\\\"Order receipt\\\",\\\"identifiers\\\":{\\\"email\\\":\\\"cool.person@example.com\\\"},\\\"message_data\\\":{\\\"password_reset_token\\\":\\\"abcde-12345-fghij-d888\\\",\\\"account_id\\\":\\\"123dj\\\"},\\\"attachments\\\":{\\\"file1.csv\\\":\\\"base64encodedcontent\\\",\\\"file2.pdf\\\":\\\"base64encodedcontent\\\"},\\\"headers\\\":{\\\"X-Mailgun-Tag\\\":\\\"my-cool-tag\\\"},\\\"bcc\\\":\\\"bcc@example.com\\\",\\\"disable_message_retention\\\":false,\\\"send_to_unsubscribed\\\":true,\\\"tracked\\\":true,\\\"queue_draft\\\":false,\\\"disable_css_preprocessing\\\":true}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"transactional_message_id\\\":44,\\\"to\\\":\\\"cool.person@example.com\\\",\\\"from\\\":\\\"override-templated-address@example.com\\\",\\\"subject\\\":\\\"Order receipt\\\",\\\"identifiers\\\":{\\\"email\\\":\\\"cool.person@example.com\\\"},\\\"message_data\\\":{\\\"password_reset_token\\\":\\\"abcde-12345-fghij-d888\\\",\\\"account_id\\\":\\\"123dj\\\"},\\\"attachments\\\":{\\\"file1.csv\\\":\\\"base64encodedcontent\\\",\\\"file2.pdf\\\":\\\"base64encodedcontent\\\"},\\\"headers\\\":{\\\"X-Mailgun-Tag\\\":\\\"my-cool-tag\\\"},\\\"bcc\\\":\\\"bcc@example.com\\\",\\\"disable_message_retention\\\":false,\\\"send_to_unsubscribed\\\":true,\\\"tracked\\\":true,\\\"queue_draft\\\":false,\\\"disable_css_preprocessing\\\":true}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/send/email\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/send/email\"\n\n\tpayload := strings.NewReader(\"{\\\"transactional_message_id\\\":44,\\\"to\\\":\\\"cool.person@example.com\\\",\\\"from\\\":\\\"override-templated-address@example.com\\\",\\\"subject\\\":\\\"Order receipt\\\",\\\"identifiers\\\":{\\\"email\\\":\\\"cool.person@example.com\\\"},\\\"message_data\\\":{\\\"password_reset_token\\\":\\\"abcde-12345-fghij-d888\\\",\\\"account_id\\\":\\\"123dj\\\"},\\\"attachments\\\":{\\\"file1.csv\\\":\\\"base64encodedcontent\\\",\\\"file2.pdf\\\":\\\"base64encodedcontent\\\"},\\\"headers\\\":{\\\"X-Mailgun-Tag\\\":\\\"my-cool-tag\\\"},\\\"bcc\\\":\\\"bcc@example.com\\\",\\\"disable_message_retention\\\":false,\\\"send_to_unsubscribed\\\":true,\\\"tracked\\\":true,\\\"queue_draft\\\":false,\\\"disable_css_preprocessing\\\":true}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/send/inbox_message": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "summary": "Send a transactional inbox message",
        "operationId": "sendInboxMessage",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Send a transactional inbox message. Inbox messages deliver raw JSON payloads to your application through our JavaScript SDK, allowing you to build custom notification centers, message feeds, and other UI components.\n\nYou send a message using a `transactional_message_id` for an inbox message template created in the user interface. The `transactional_message_id` can be either the numerical ID for the template or the *Trigger Name* that you assigned the template.\n\nYou can find your `transactional_message_id` from the code sample in the **Overview** tab for your transactional message in the user interface, or you can look up a list of your transactional messages through the [App API](#tag/Transactional).\n\n**Note**: Inbox messages are currently available for web platforms only and require the Customer.io In-App Plugin to be installed.\n",
        "tags": [
          "Send Messages"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "The payload of a transactional inbox message.",
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "transactional_message_id",
                      "identifiers"
                    ],
                    "properties": {
                      "transactional_message_id": {
                        "description": "The transactional message template that you want to use for your message. You can call the template by its numerical ID or by the *Trigger Name* that you assigned the template (case insensitive).",
                        "oneOf": [
                          {
                            "title": "ID (integer)",
                            "type": "integer",
                            "description": "The ID of the transactional message you want to send.",
                            "example": 44
                          },
                          {
                            "title": "Trigger Name (string)",
                            "type": "string",
                            "description": "The name of trigger for the transactional message you want to send; you set the trigger name in the *Configure Settings* step when setting up your message. This is case insensitive.",
                            "example": "order_shipped"
                          }
                        ]
                      },
                      "identifiers": {
                        "description": "Identifies the person represented by your transactional message by one of, and only one of, `id`, `email`, or `cio_id`.",
                        "oneOf": [
                          {
                            "title": "id",
                            "type": "object",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The identifier for the person represented by the transactional message. **NOTE**: If your workspace identifies people by email, use the `email` identifier instead.\n",
                                "example": "user_123"
                              }
                            }
                          },
                          {
                            "title": "email",
                            "type": "object",
                            "required": [
                              "email"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "description": "The identifier for the person represented by the transactional message. Use this option if your workspace identifies people by email rather than by `id`.",
                                "example": "user@example.com"
                              }
                            }
                          },
                          {
                            "title": "cio_id",
                            "type": "object",
                            "required": [
                              "cio_id"
                            ],
                            "properties": {
                              "cio_id": {
                                "type": "string",
                                "description": "A unique, immutable identifier for a person, set by Customer.io when you add a person.",
                                "example": 3000001
                              }
                            }
                          }
                        ]
                      },
                      "message_data": {
                        "type": "object",
                        "description": "An object containing the key-value pairs referenced using liquid in the format `{{trigger.<property_name>}}` in your inbox message. These values will populate the `properties` field in the message received by your application.",
                        "additionalProperties": {
                          "x-additionalPropertiesName": "Liquid Data",
                          "description": "Insert key-values that you want to reference in your message here."
                        },
                        "example": {
                          "order_id": "ORD-5678",
                          "tracking_url": "https://track.example.com/5678"
                        }
                      },
                      "to": {
                        "type": "string",
                        "description": "Optional override for the recipient. This is typically not needed as the message is sent to the person identified by `identifiers`."
                      },
                      "send_at": {
                        "type": "integer",
                        "description": "A unix timestamp (seconds since epoch) determining when the message will be sent. The timestamp can be up to 90 days in the future. If this value is in the past, your message is sent immediately."
                      },
                      "disable_message_retention": {
                        "x-scalar-ignore": true,
                        "type": "boolean",
                        "default": false,
                        "description": "If true, the message body is not retained in delivery history. Setting this value overrides the value set in the settings of your `transactional_message_id`."
                      },
                      "send_to_unsubscribed": {
                        "x-scalar-ignore": true,
                        "type": "boolean",
                        "default": true,
                        "description": "If false, your message is not sent to unsubscribed recipients. Setting this value overrides the value set in the settings of your `transactional_message_id`."
                      },
                      "queue_draft": {
                        "x-scalar-ignore": true,
                        "type": "boolean",
                        "description": "If true, your transactional message is held as a draft in Customer.io and not sent directly to your audience. You must go to the Deliveries and Drafts page to send your message.",
                        "default": false
                      },
                      "language": {
                        "type": "string",
                        "description": "Overrides language preferences for the person you want to send your transactional message to. Use one of our [supported two- or four-letter language codes](/localization-getting-started/#supported-languages)."
                      }
                    }
                  }
                ],
                "example": {
                  "transactional_message_id": "order_shipped",
                  "identifiers": {
                    "id": "user_123"
                  },
                  "message_data": {
                    "order_id": "ORD-5678",
                    "tracking_url": "https://track.example.com/5678",
                    "product_name": "Blue Widget",
                    "product_image": "https://cdn.example.com/widget.jpg"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a unique ID for the delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "delivery_id": {
                      "type": "string",
                      "description": "A unique identifier for the message."
                    },
                    "queued_at": {
                      "type": "integer",
                      "format": "unix timestamp",
                      "description": "The date-time when the message is sent."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "description": "Contains errors.",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Your workspace is not authorized for transactional messaging or inbox messages.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail.",
                          "example": "Account is not authorized for transactional messaging. Contact win@customer.io for support."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"transactional_message_id\": \"order_shipped\",\n  \"identifiers\": {\n    \"id\": \"user_123\"\n  },\n  \"message_data\": {\n    \"order_id\": \"ORD-5678\",\n    \"tracking_url\": \"https://track.example.com/5678\",\n    \"product_name\": \"Blue Widget\",\n    \"product_image\": \"https://cdn.example.com/widget.jpg\"\n  }\n}"
          },
          {
            "lang": "Node + Native",
            "source": "const { APIClient } = require(\"customerio-node\");\nconst api = new APIClient('app-key');\n\nconst request = {\n  transactional_message_id: \"order_shipped\",\n  identifiers: {\n    id: \"user_123\"\n  },\n  message_data: {\n    order_id: \"ORD-5678\",\n    tracking_url: \"https://track.example.com/5678\",\n    product_name: \"Blue Widget\"\n  }\n};\n\napi.sendInboxMessage(request)\n  .then(res => console.log(res))\n  .catch(err => console.log(err.statusCode, err.message))\n"
          },
          {
            "lang": "Ruby + Native",
            "source": "require \"customerio\"\n\nclient = Customerio::APIClient.new(\"your API key\")\n\nrequest = {\n  transactional_message_id: \"order_shipped\",\n  identifiers: {\n    id: \"user_123\"\n  },\n  message_data: {\n    order_id: \"ORD-5678\",\n    tracking_url: \"https://track.example.com/5678\",\n    product_name: \"Blue Widget\"\n  }\n}\n\nbegin\n  response = client.send_inbox_message(request)\n  puts response\nrescue Customerio::InvalidResponse => e\n  puts e.code, e.message\nend\n"
          },
          {
            "lang": "Python + Python3",
            "source": "from customerio import APIClient\nclient = APIClient(\"your API key\")\n\nrequest = {\n  \"transactional_message_id\": \"order_shipped\",\n  \"identifiers\": {\n    \"id\": \"user_123\"\n  },\n  \"message_data\": {\n    \"order_id\": \"ORD-5678\",\n    \"tracking_url\": \"https://track.example.com/5678\",\n    \"product_name\": \"Blue Widget\"\n  }\n}\n\nresponse = client.send_inbox_message(request)\nprint(response)\n"
          },
          {
            "lang": "Go + Native",
            "source": "import \"github.com/customerio/go-customerio/v3\"\n\nclient := customerio.NewAPIClient(\"your API key\")\n\nrequest := customerio.SendInboxMessageRequest{\n  TransactionalMessageID: \"order_shipped\",\n  Identifiers: map[string]string{\n    \"id\": \"user_123\",\n  },\n  MessageData: map[string]interface{}{\n    \"order_id\": \"ORD-5678\",\n    \"tracking_url\": \"https://track.example.com/5678\",\n    \"product_name\": \"Blue Widget\",\n  },\n}\n\nbody, err := client.SendInboxMessage(context.Background(), &request)\nif err != nil {\n  fmt.Println(err)\n}\n\nfmt.Println(body)\n"
          },
          {
            "lang": "curl",
            "source": "curl --request POST \\\n  --url https://api.customer.io/v1/send/inbox_message \\\n  --header 'Authorization: Bearer <YOUR-APP-API-KEY>' \\\n  --header 'content-type: application/json' \\\n  --data '{\n    \"transactional_message_id\": \"order_shipped\",\n    \"identifiers\": {\n      \"id\": \"user_123\"\n    },\n    \"message_data\": {\n      \"order_id\": \"ORD-5678\",\n      \"tracking_url\": \"https://track.example.com/5678\",\n      \"product_name\": \"Blue Widget\"\n    }\n  }'\n"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/send/inbox_message \\\n  --header 'content-type: application/json' \\\n  --data '{\"transactional_message_id\":\"order_shipped\",\"identifiers\":{\"id\":\"user_123\"},\"message_data\":{\"order_id\":\"ORD-5678\",\"tracking_url\":\"https://track.example.com/5678\",\"product_name\":\"Blue Widget\",\"product_image\":\"https://cdn.example.com/widget.jpg\"}}'"
          }
        ]
      }
    },
    "/v1/send/push": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "summary": "Send a transactional push",
        "operationId": "sendPush",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Send a transactional push. You send a message using a `transactional_message_id` for a transactional push message template composed in the user interface. You can optionally override any of the template values at send time. The `transactional_message_id` can be either the numerical ID for the template or the *Trigger Name* that you assigned the template.\n\nYou can find your `transactional_message_id` from the code sample in the **Overview** tab for your transactional message in the user interface, or you can look up a list of your transactional messages through the [App API](#tag/Transactional).\n",
        "tags": [
          "Send Messages"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "description": "The payload of a transactional push message.",
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "transactional_message_id"
                    ],
                    "properties": {
                      "transactional_message_id": {
                        "description": "The transactional message template that you want to use for your message. You can call the template by its numerical ID or by the *Trigger Name* that you assigned the template (case insensitive).",
                        "oneOf": [
                          {
                            "title": "ID (integer)",
                            "type": "integer",
                            "description": "The ID of the transactional message you want to send.",
                            "example": 44
                          },
                          {
                            "title": "Trigger Name (string)",
                            "type": "string",
                            "description": "The name of trigger for the transactional message you want to send; you set the trigger name in the *Configure Settings* step when setting up your message. This is case insensitive.",
                            "example": "pwdreset"
                          }
                        ]
                      }
                    }
                  },
                  {
                    "x-scalar-ignore": true,
                    "type": "object",
                    "properties": {
                      "to": {
                        "type": "string",
                        "description": "The person's device(s) you want to send this push to. One of `all`, `last_used`, or a custom device token which belongs to the profile from the Identifiers block. Defaults to 'all'. This overrides To from the transactional template (referenced by `transactional_message_id`).",
                        "enum": [
                          "all",
                          "last_used",
                          "$device_token"
                        ],
                        "default": "all"
                      },
                      "title": {
                        "type": "string",
                        "description": "The title for your notification. This overrides the title of the transactional template (referenced by `transactional_message_id`)."
                      },
                      "message": {
                        "type": "string",
                        "description": "The message body for your notification. This overrides the notification body of the transactional template (referenced by `transactional_message_id`)."
                      },
                      "image_url": {
                        "type": "string",
                        "description": "An image URL to show in the push. This overrides Image from the transactional template (referenced by `transactional_message_id`)."
                      },
                      "link": {
                        "type": "string",
                        "description": "A deep link to open when the push is tapped. This overrides Link from the transactional template (referenced by `transactional_message_id`)."
                      },
                      "sound": {
                        "type": "string",
                        "description": "**For iOS Only**: your notification can alert users with the device's default notification sound or play no sound at all. \n",
                        "enum": [
                          "default",
                          "none"
                        ],
                        "default": "default"
                      },
                      "custom_data": {
                        "type": "object",
                        "description": "An optional list of key/value pairs to attach to the push payload. Due to a Firebase limitation we only support sending string key value pairs. This overrides Custom Data from the transactional template (referenced by `transactional_message_id`)."
                      },
                      "custom_device": {
                        "description": "A device to perform an upsert operation at the time of send. The device will be added/updated on the profile from the Identifiers block.",
                        "allOf": [
                          {
                            "type": "object",
                            "required": [
                              "token"
                            ],
                            "properties": {
                              "token": {
                                "description": "The device token.",
                                "type": "string"
                              }
                            }
                          },
                          {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Device information common to the v1 and v2 APIs.",
                            "required": [
                              "platform"
                            ],
                            "properties": {
                              "last_used": {
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The `timestamp` when you last identified this device. If you don't pass a timestamp when you add or update a device, we use the time of the request itself. Our SDKs identify a device when a person launches their app."
                              },
                              "platform": {
                                "type": "string",
                                "enum": [
                                  "ios",
                                  "android"
                                ],
                                "description": "The device/messaging platform."
                              },
                              "attributes": {
                                "type": "object",
                                "description": "Attributes that you can reference to segment your audience—like a person's attributes, but specific to a device. These can be either the attributes defined below or custom key-value attributes.",
                                "properties": {
                                  "device_os": {
                                    "type": "string",
                                    "description": "The operating system, including the version, on the device."
                                  },
                                  "device_model": {
                                    "type": "string",
                                    "description": "The model of the device a person uses."
                                  },
                                  "app_version": {
                                    "type": "string",
                                    "description": "The version of your app that a customer uses. You might target app versions to let people know when they need to update, or expose them to new features when they do."
                                  },
                                  "cio_sdk_version": {
                                    "type": "string",
                                    "description": "The version of the Customer.io SDK in the app."
                                  },
                                  "_last_status": {
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "The delivery status of the last message sent to the device—sent, bounced, or suppressed. An empty string indicates that that the device hasn't received a push yet.",
                                    "enum": [
                                      "",
                                      "bounced",
                                      "sent",
                                      "suppressed"
                                    ]
                                  },
                                  "device_locale": {
                                    "type": "string",
                                    "description": "The four-letter [IETF language code](/localization/#supported-languages) for the device. For example, `en-MX` (indicating an app in Spanish formatted for a user in Mexico) or `es-ES` (indicating an app in Spanish formatted for a user in Spain)."
                                  },
                                  "push_enabled": {
                                    "type": "string",
                                    "description": "If `\"true\"`, the device is opted-in and can receive push notifications.",
                                    "enum": [
                                      "true",
                                      "false"
                                    ]
                                  }
                                },
                                "additionalProperties": {
                                  "x-additionalPropertiesName": "Custom Device Attributes",
                                  "description": "Custom properties that you want to associate with the device.",
                                  "type": "string"
                                }
                              }
                            }
                          }
                        ]
                      },
                      "custom_payload": {
                        "type": "object",
                        "description": "An optional list of key/value pairs to attach to the push payload. Due to a Firebase limitation we only support sending string key value pairs. This overrides every other parameter, including any Custom Payload from the transactional template (referenced by `transactional_message_id`).",
                        "properties": {
                          "ios": {
                            "x-scalar-ignore": true,
                            "description": "Your payload changes depending on whether you send to iOS devices through Google's Firebase Cloud Messaging (FCM) or Apple's Push Notification service (APNs).",
                            "oneOf": [
                              {
                                "x-scalar-ignore": true,
                                "type": "object",
                                "required": [
                                  "message"
                                ],
                                "properties": {
                                  "message": {
                                    "type": "object",
                                    "description": "The base object for all FCM payloads.",
                                    "required": [
                                      "apns"
                                    ],
                                    "properties": {
                                      "apns": {
                                        "type": "object",
                                        "required": [
                                          "payload"
                                        ],
                                        "description": "Defines a payload for iOS devices sent through Firebase Cloud Messaging (FCM).",
                                        "properties": {
                                          "headers": {
                                            "description": "Headers defined by [Apple's payload reference](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns) that you want to pass through FCM.",
                                            "type": "object"
                                          },
                                          "payload": {
                                            "type": "object",
                                            "description": "Contains a push payload.",
                                            "properties": {
                                              "CIO": {
                                                "type": "object",
                                                "description": "Contains properties interpreted by the Customer.io iOS SDK.",
                                                "required": [
                                                  "push"
                                                ],
                                                "properties": {
                                                  "push": {
                                                    "type": "object",
                                                    "description": "A push payload for the iOS SDK.",
                                                    "properties": {
                                                      "title": {
                                                        "x-scalar-ignore": true,
                                                        "type": "string",
                                                        "description": "The title of your push notification."
                                                      },
                                                      "body": {
                                                        "x-scalar-ignore": true,
                                                        "type": "string",
                                                        "description": "The body of your push notification."
                                                      },
                                                      "link": {
                                                        "x-scalar-ignore": true,
                                                        "type": "string",
                                                        "description": "A deep link (to a page in your app), or a link to a web page."
                                                      },
                                                      "image": {
                                                        "x-scalar-ignore": true,
                                                        "type": "string",
                                                        "description": "The URL of an HTTPS image that you want to use for your message."
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "aps": {
                                                "x-scalar-ignore": true,
                                                "type": "object",
                                                "description": "A push payload intended for an iOS device.",
                                                "properties": {
                                                  "alert": {
                                                    "oneOf": [
                                                      {
                                                        "title": "Simple alert",
                                                        "type": "string",
                                                        "description": "A simple alert message."
                                                      },
                                                      {
                                                        "title": "Complex alert",
                                                        "type": "object",
                                                        "properties": {
                                                          "body": {
                                                            "x-scalar-ignore": true,
                                                            "type": "string",
                                                            "description": "The body of your push notification."
                                                          },
                                                          "title": {
                                                            "x-scalar-ignore": true,
                                                            "type": "string",
                                                            "description": "The title of your push notification."
                                                          },
                                                          "subtitle": {
                                                            "description": "Additional information that explains the purpose of the notification.",
                                                            "type": "string"
                                                          },
                                                          "launch-image": {
                                                            "description": "The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.",
                                                            "type": "string"
                                                          },
                                                          "title-loc-key": {
                                                            "description": "The key for a localized title string in your app’s Localizable.strings files.",
                                                            "type": "string"
                                                          },
                                                          "title-loc-args": {
                                                            "type": "array",
                                                            "description": "An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.",
                                                            "items": {
                                                              "type": "string"
                                                            }
                                                          },
                                                          "subtitle-loc-key": {
                                                            "description": "The key for a localized subtitle string in your app’s Localizable.strings file.",
                                                            "type": "string"
                                                          },
                                                          "subtitle-loc-args": {
                                                            "type": "array",
                                                            "description": "An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.",
                                                            "items": {
                                                              "type": "string"
                                                            }
                                                          },
                                                          "loc-key": {
                                                            "description": "The key for a localized message string in your app’s Localizable.strings file.",
                                                            "type": "string"
                                                          },
                                                          "loc-args": {
                                                            "type": "array",
                                                            "description": "An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.",
                                                            "items": {
                                                              "type": "string"
                                                            }
                                                          }
                                                        }
                                                      }
                                                    ]
                                                  },
                                                  "badge": {
                                                    "type": "integer",
                                                    "description": "The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."
                                                  },
                                                  "sound": {
                                                    "oneOf": [
                                                      {
                                                        "title": "Regular alert",
                                                        "type": "string",
                                                        "description": "The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."
                                                      },
                                                      {
                                                        "title": "Critical alert",
                                                        "type": "object",
                                                        "properties": {
                                                          "critical": {
                                                            "type": "integer",
                                                            "description": "1 indicates critical. 0 is not critical."
                                                          },
                                                          "name": {
                                                            "type": "string",
                                                            "description": "The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."
                                                          },
                                                          "volume": {
                                                            "type": "number",
                                                            "description": "The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."
                                                          }
                                                        }
                                                      }
                                                    ]
                                                  },
                                                  "thread-id": {
                                                    "type": "string",
                                                    "description": "An identifier to group related notifications."
                                                  },
                                                  "category": {
                                                    "type": "string",
                                                    "description": "The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."
                                                  },
                                                  "content-available": {
                                                    "type": "integer",
                                                    "description": "The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."
                                                  },
                                                  "mutable-content": {
                                                    "type": "integer",
                                                    "description": "If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"
                                                  },
                                                  "target-content-id": {
                                                    "type": "string",
                                                    "description": "The identifier of the window brought forward."
                                                  },
                                                  "interruption-level": {
                                                    "type": "string",
                                                    "description": "Indicates the importance and delivery timing of a notification.",
                                                    "enum": [
                                                      "passive",
                                                      "active",
                                                      "time-sensitive",
                                                      "critical"
                                                    ]
                                                  },
                                                  "relevance-score": {
                                                    "type": "number",
                                                    "description": "A number between 0 and 1. The highest score is considered the \"most relevant\"  and is featured in the notification summary."
                                                  }
                                                }
                                              }
                                            },
                                            "additionalProperties": {
                                              "description": "Additional properties that you've set up your app to interpret outside of the Customer.io SDK.",
                                              "x-additionalPropertiesName": "Custom key-value pairs"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              {
                                "x-scalar-ignore": true,
                                "type": "object",
                                "properties": {
                                  "CIO": {
                                    "type": "object",
                                    "required": [
                                      "push"
                                    ],
                                    "description": "Contains options supported by the Customer.io SDK.",
                                    "properties": {
                                      "push": {
                                        "type": "object",
                                        "description": "Describes push notification options supported by the CIO SDK.",
                                        "properties": {
                                          "link": {
                                            "x-scalar-ignore": true,
                                            "type": "string",
                                            "description": "A deep link (to a page in your app), or a link to a web page."
                                          },
                                          "image": {
                                            "x-scalar-ignore": true,
                                            "type": "string",
                                            "description": "The URL of an HTTPS image that you want to use for your message."
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "aps": {
                                    "x-scalar-ignore": true,
                                    "type": "object",
                                    "description": "A push payload intended for an iOS device.",
                                    "properties": {
                                      "alert": {
                                        "oneOf": [
                                          {
                                            "title": "Simple alert",
                                            "type": "string",
                                            "description": "A simple alert message."
                                          },
                                          {
                                            "title": "Complex alert",
                                            "type": "object",
                                            "properties": {
                                              "body": {
                                                "x-scalar-ignore": true,
                                                "type": "string",
                                                "description": "The body of your push notification."
                                              },
                                              "title": {
                                                "x-scalar-ignore": true,
                                                "type": "string",
                                                "description": "The title of your push notification."
                                              },
                                              "subtitle": {
                                                "description": "Additional information that explains the purpose of the notification.",
                                                "type": "string"
                                              },
                                              "launch-image": {
                                                "description": "The name of the launch image file you want to display. When a user launches your app, they'll see this image or storyboard file rather than your app’s normal launch image.",
                                                "type": "string"
                                              },
                                              "title-loc-key": {
                                                "description": "The key for a localized title string in your app’s Localizable.strings files.",
                                                "type": "string"
                                              },
                                              "title-loc-args": {
                                                "type": "array",
                                                "description": "An array of replacement value strings for variables in your title string. Each %@ character in the title-loc-key is replaced by a value from this array, in the order they appear in the title string.",
                                                "items": {
                                                  "type": "string"
                                                }
                                              },
                                              "subtitle-loc-key": {
                                                "description": "The key for a localized subtitle string in your app’s Localizable.strings file.",
                                                "type": "string"
                                              },
                                              "subtitle-loc-args": {
                                                "type": "array",
                                                "description": "An array of replacement value strings for variables in your subtitle string. Each %@ character in the subtitle-loc-key is replaced by a value from this array, in the order they appear in the subtitle string.",
                                                "items": {
                                                  "type": "string"
                                                }
                                              },
                                              "loc-key": {
                                                "description": "The key for a localized message string in your app’s Localizable.strings file.",
                                                "type": "string"
                                              },
                                              "loc-args": {
                                                "type": "array",
                                                "description": "An array of replacement value strings for variables in your message text. Each %@ character in the loc-key is replaced by a value from this array, in the order they appear in the message body.",
                                                "items": {
                                                  "type": "string"
                                                }
                                              }
                                            }
                                          }
                                        ]
                                      },
                                      "badge": {
                                        "type": "integer",
                                        "description": "The number you want to display on your app's icon. Set to 0 to remove the current badge, if any."
                                      },
                                      "sound": {
                                        "oneOf": [
                                          {
                                            "title": "Regular alert",
                                            "type": "string",
                                            "description": "The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound. For critical alerts, you'll pass an object instead."
                                          },
                                          {
                                            "title": "Critical alert",
                                            "type": "object",
                                            "properties": {
                                              "critical": {
                                                "type": "integer",
                                                "description": "1 indicates critical. 0 is not critical."
                                              },
                                              "name": {
                                                "type": "string",
                                                "description": "The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s container directory. Use “default” to play the system sound."
                                              },
                                              "volume": {
                                                "type": "number",
                                                "description": "The volume for a critical alert between 0 and 1, where 0 is silent and 1 is full volume."
                                              }
                                            }
                                          }
                                        ]
                                      },
                                      "thread-id": {
                                        "type": "string",
                                        "description": "An identifier to group related notifications."
                                      },
                                      "category": {
                                        "type": "string",
                                        "description": "The notification’s type. This string must correspond to the identifier of one of the `UNNotificationCategory` objects you register at launch time."
                                      },
                                      "content-available": {
                                        "type": "integer",
                                        "description": "The background notification flag. Use `1` without an `alert` to perform a silent update. `0` indicates a normal push notification."
                                      },
                                      "mutable-content": {
                                        "type": "integer",
                                        "description": "If you use the Customer.io SDK, you *must* set this value to `1` to support images and \"delivered\" metrics from your push notifications.\nWhen the value is 1, your notification is passed to your notification service app extension before delivery. Use your extension to modify the notification’s content.\n"
                                      },
                                      "target-content-id": {
                                        "type": "string",
                                        "description": "The identifier of the window brought forward."
                                      },
                                      "interruption-level": {
                                        "type": "string",
                                        "description": "Indicates the importance and delivery timing of a notification.",
                                        "enum": [
                                          "passive",
                                          "active",
                                          "time-sensitive",
                                          "critical"
                                        ]
                                      },
                                      "relevance-score": {
                                        "type": "number",
                                        "description": "A number between 0 and 1. The highest score is considered the \"most relevant\"  and is featured in the notification summary."
                                      }
                                    }
                                  }
                                }
                              }
                            ]
                          },
                          "android": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "A custom push payload for Android devices.",
                            "required": [
                              "message"
                            ],
                            "properties": {
                              "message": {
                                "type": "object",
                                "description": "The parent object for Android custom push payloads.",
                                "properties": {
                                  "notification": {
                                    "type": "object",
                                    "description": "Contains the push body and title.",
                                    "properties": {
                                      "title": {
                                        "x-scalar-ignore": true,
                                        "type": "string",
                                        "description": "The title of your push notification."
                                      },
                                      "body": {
                                        "x-scalar-ignore": true,
                                        "type": "string",
                                        "description": "The body of your push notification."
                                      }
                                    }
                                  },
                                  "data": {
                                    "type": "object",
                                    "description": "Contains key-value pairs that your app interprets.",
                                    "additionalProperties": {
                                      "x-additionalPropertiesName": "Attachment Names",
                                      "x-doNotRender": true,
                                      "type": "string"
                                    }
                                  },
                                  "android": {
                                    "type": "object",
                                    "description": "Contains custom push options for your notification.",
                                    "properties": {
                                      "notification": {
                                        "x-scalar-ignore": true,
                                        "type": "object",
                                        "description": "Properties supported specifically by Android on FCM.",
                                        "properties": {
                                          "icon": {
                                            "type": "string",
                                            "description": "Sets the notification icon to `myicon` for drawable resource `myicon`. If you don't send this key, FCM displays the launcher icon from your app manifest."
                                          },
                                          "sound": {
                                            "type": "string",
                                            "description": "The sound that plays when the device receives the notification. Supports `\"default\"` or the filename of a sound resource bundled in your app. Sound files must reside in `/res/raw/`."
                                          },
                                          "tag": {
                                            "type": "string",
                                            "description": "Identifier to replace existing notifications in the notification drawer. If empty, each request creates a new notification.\n\nIf you specify a tag, and a notification with the same tag is already being shown, the new notification replaces the existing one in the notification drawer. \n"
                                          },
                                          "color": {
                                            "type": "string",
                                            "description": "The notification's icon color in `#rrggbb` format."
                                          },
                                          "click_action": {
                                            "type": "string",
                                            "description": "The action that occurs when a user taps on the notification. Launches an activity with a matching intent filter when a person taps the notification."
                                          },
                                          "body_loc_key": {
                                            "type": "string",
                                            "description": "The key to the body string in the app's string resources that you want to use to localize the body text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."
                                          },
                                          "body_loc_arg": {
                                            "type": "string",
                                            "description": "Variable string values used in place of the format specifiers in `body_loc_key` to localize the body text to the user's current localization. See Formatting and Styling for more information."
                                          },
                                          "title_loc_key": {
                                            "type": "string",
                                            "description": "The key to the title string in the app's string resources that you want to use to localize the title text to the user's current localization. See [String Resources](https://developer.android.com/guide/topics/resources/string-resource/) for more information."
                                          },
                                          "title_loc_arg": {
                                            "type": "string",
                                            "description": "Variable string values used in place of the format specifiers in `title_loc_key` to localize the title text to the user's current localization. See Formatting and Styling for more information."
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "language": {
                        "type": "string",
                        "description": "Overrides language preferences for the person you want to send your transactional message to. Use one of our [supported two- or four-letter language codes](/localization-getting-started/#supported-languages)."
                      }
                    }
                  },
                  {
                    "x-scalar-ignore": true,
                    "type": "object",
                    "required": [
                      "to",
                      "identifiers"
                    ],
                    "properties": {
                      "identifiers": {
                        "description": "Identifies the person represented by your transactional message by one of, and only one of, `id`, `email`, or `cio_id`.",
                        "oneOf": [
                          {
                            "title": "id",
                            "type": "object",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The identifier for the person represented by the transactional message. **NOTE**: If your workspace identifies people by email, use the `email` identifier instead.\n",
                                "example": 12345
                              }
                            }
                          },
                          {
                            "title": "email",
                            "type": "object",
                            "required": [
                              "email"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "description": "The identifier for the person represented by the transactional message. Use this option if your workspace identifies people by email rather than by `id`.",
                                "example": "cool.person@example.com"
                              }
                            }
                          },
                          {
                            "title": "cio_id",
                            "type": "object",
                            "required": [
                              "cio_id"
                            ],
                            "properties": {
                              "cio_id": {
                                "type": "string",
                                "description": "A unique, immutable identifier for a person, set by Customer.io when you add a person.",
                                "example": 3000001
                              }
                            }
                          }
                        ]
                      },
                      "message_data": {
                        "type": "object",
                        "description": "An object containing the key-value pairs referenced using liquid in your message.",
                        "additionalProperties": {
                          "x-additionalPropertiesName": "Liquid Data",
                          "description": "Insert key-values that you want to reference in your message here."
                        },
                        "example": {
                          "password_reset_token": "abcde-12345-fghij-d888",
                          "account_id": "123dj"
                        }
                      },
                      "send_at": {
                        "type": "integer",
                        "description": "A unix timestamp (seconds since epoch) determining when the message will be sent. The timestamp can be up to 90 days in the future. If this value is in the past, your message is sent immediately."
                      },
                      "disable_message_retention": {
                        "x-scalar-ignore": true,
                        "type": "boolean",
                        "default": false,
                        "description": "If true, the message body is not retained in delivery history. Setting this value overrides the value set in the settings of your `transactional_message_id`."
                      },
                      "send_to_unsubscribed": {
                        "x-scalar-ignore": true,
                        "type": "boolean",
                        "default": true,
                        "description": "If false, your message is not sent to unsubscribed recipients. Setting this value overrides the value set in the settings of your `transactional_message_id`."
                      },
                      "queue_draft": {
                        "x-scalar-ignore": true,
                        "type": "boolean",
                        "description": "If true, your transactional message is held as a draft in Customer.io and not sent directly to your audience. You must go to the Deliveries and Drafts page to send your message.",
                        "default": false
                      }
                    }
                  }
                ],
                "example": {
                  "transactional_message_id": 44,
                  "title": "Did you really login from a new location?",
                  "identifiers": {
                    "id": 12345
                  },
                  "message_data": {
                    "password_reset_token": "abcde-12345-fghij-d888",
                    "account_id": "123dj"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a unique ID for the delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "delivery_id": {
                      "type": "string",
                      "description": "A unique identifier for the message."
                    },
                    "queued_at": {
                      "type": "integer",
                      "format": "unix timestamp",
                      "description": "The date-time when the message is sent."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "description": "Contains errors.",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"transactional_message_id\": 44,\n  \"title\": \"Did you really login from a new location?\",\n  \"identifiers\": {\n    \"id\": 12345\n  },\n  \"message_data\": {\n    \"password_reset_token\": \"abcde-12345-fghij-d888\",\n    \"account_id\": \"123dj\"\n  }\n}"
          },
          {
            "label": "Node.js (SDK)",
            "lang": "javascript",
            "source": "const { APIClient, SendPushRequest, RegionUS } = require(\"customerio-node\");\nconst api = new APIClient('app-key', { region: RegionUS });\n\nconst request = new SendPushRequest({\n  transactional_message_id: \"3\",\n  message_data: {\n    name: \"Person\",\n    items: {\n      name: \"shoes\",\n      price: \"59.99\",\n    },\n    products: [],\n  },\n  identifiers: {\n    id: \"2\",\n  },\n});\n\napi.sendPush(request)\n  .then(res => console.log(res))\n  .catch(err => console.log(err.statusCode, err.message))\n"
          },
          {
            "label": "Ruby (SDK)",
            "lang": "ruby",
            "source": "require \"customerio\"\n\nclient = Customerio::APIClient.new(\"your API key\", region: Customerio::Regions::US)\n\nrequest = Customerio::SendPushRequest.new(\n  transactional_message_id: \"3\",\n  message_data: {\n    name: \"Person\",\n    items: {\n      name: \"shoes\",\n      price: \"59.99\",\n    },\n    products: [],\n  },\n  identifiers: {\n    id: \"2\",\n  },\n)\n\nbegin\n  response = client.send_push(request)\n  puts response\nrescue Customerio::InvalidResponse => e\n  puts e.code, e.message\nend\n"
          },
          {
            "label": "Python (SDK)",
            "lang": "python",
            "source": "from customerio import APIClient, Regions, SendPushRequest\nclient = APIClient(\"your API key\", region=Regions.US)\n\nrequest = SendPushRequest(\n  transactional_message_id=\"3\",\n  identifiers={\n    \"id\": \"2\",\n  }\n)\n\nresponse = client.send_push(request)\nprint(response)\n"
          },
          {
            "label": "Go (SDK)",
            "lang": "go",
            "source": "import \"github.com/customerio/go-customerio/v3\"\n\nclient := customerio.NewAPIClient(\"your API key\", customerio.WithRegion(customerio.RegionUS));\n\nrequest := customerio.SendPushRequest{\n  TransactionalMessageID: transactionalMessageID,\n  Identifiers: map[string]string{\n    \"id\": \"example1\",\n  },\n  Title:   \"hello, {{ trigger.name }}\",\n  Message: \"hello from the Customer.io {{ trigger.client }} client\",\n}\n\nbody, err := client.SendPush(context.Background(), &request)\nif err != nil {\n  fmt.Println(err)\n}\n\nfmt.Println(body)\n"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/send/push \\\n  --header 'content-type: application/json' \\\n  --data '{\"transactional_message_id\":44,\"title\":\"Did you really login from a new location?\",\"identifiers\":{\"id\":12345},\"message_data\":{\"password_reset_token\":\"abcde-12345-fghij-d888\",\"account_id\":\"123dj\"}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/send/push\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  transactional_message_id: 44,\n  title: 'Did you really login from a new location?',\n  identifiers: {id: 12345},\n  message_data: {password_reset_token: 'abcde-12345-fghij-d888', account_id: '123dj'}\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/send/push\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"transactional_message_id\\\":44,\\\"title\\\":\\\"Did you really login from a new location?\\\",\\\"identifiers\\\":{\\\"id\\\":12345},\\\"message_data\\\":{\\\"password_reset_token\\\":\\\"abcde-12345-fghij-d888\\\",\\\"account_id\\\":\\\"123dj\\\"}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"transactional_message_id\\\":44,\\\"title\\\":\\\"Did you really login from a new location?\\\",\\\"identifiers\\\":{\\\"id\\\":12345},\\\"message_data\\\":{\\\"password_reset_token\\\":\\\"abcde-12345-fghij-d888\\\",\\\"account_id\\\":\\\"123dj\\\"}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/send/push\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/send/push\"\n\n\tpayload := strings.NewReader(\"{\\\"transactional_message_id\\\":44,\\\"title\\\":\\\"Did you really login from a new location?\\\",\\\"identifiers\\\":{\\\"id\\\":12345},\\\"message_data\\\":{\\\"password_reset_token\\\":\\\"abcde-12345-fghij-d888\\\",\\\"account_id\\\":\\\"123dj\\\"}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/send/sms": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "summary": "Send a transactional SMS",
        "operationId": "sendSMS",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Send a transactional SMS message. To send a message, you'll need to provide a `transactional_message_id`. This is either the numerical ID of your transactional message template or the *Trigger Name* that you assigned the template.\n\nYou can find your `transactional_message_id` from the code sample in the **Overview** tab for your transactional message in the user interface, or you can look up a list of your transactional messages through the [App API](#tag/Transactional).\n",
        "tags": [
          "Send Messages"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "description": "The payload of a transactional SMS.",
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "transactional_message_id"
                    ],
                    "properties": {
                      "transactional_message_id": {
                        "description": "The transactional message template that you want to use for your message. You can call the template by its numerical ID or by the *Trigger Name* that you assigned the template (case insensitive).",
                        "oneOf": [
                          {
                            "title": "ID (integer)",
                            "type": "integer",
                            "description": "The ID of the transactional message you want to send.",
                            "example": 44
                          },
                          {
                            "title": "Trigger Name (string)",
                            "type": "string",
                            "description": "The name of trigger for the transactional message you want to send; you set the trigger name in the *Configure Settings* step when setting up your message. This is case insensitive.",
                            "example": "verification_code"
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "object",
                    "required": [
                      "to"
                    ],
                    "properties": {
                      "to": {
                        "type": "string",
                        "description": "The phone number you want to send your SMS to. Phone numbers must be in E.164 format (e.g., +15551234567), but you can also use liquid syntax if you store users phone numbers as attributes; you don't have to pass an E.164 formatted phone number in the call.",
                        "example": "{{customer.phone}}"
                      },
                      "from": {
                        "type": "string",
                        "description": "The phone number or sender ID that your SMS is from. This must be a verified phone number in your Twilio account. This overrides the from address set within the transactional template (referenced by `transactional_message_id`). Phone numbers must be in E.164 format (e.g., +15551234567).",
                        "example": "+15551234567"
                      },
                      "language": {
                        "type": "string",
                        "description": "Overrides language preferences for the person you want to send your transactional message to. Use one of our [supported two- or four-letter language codes](/localization-getting-started/#supported-languages)."
                      }
                    }
                  },
                  {
                    "x-scalar-ignore": true,
                    "type": "object",
                    "required": [
                      "to",
                      "identifiers"
                    ],
                    "properties": {
                      "identifiers": {
                        "description": "Identifies the person represented by your transactional message by one of, and only one of, `id`, `email`, or `cio_id`.",
                        "oneOf": [
                          {
                            "title": "id",
                            "type": "object",
                            "required": [
                              "id"
                            ],
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The identifier for the person represented by the transactional message. **NOTE**: If your workspace identifies people by email, use the `email` identifier instead.\n",
                                "example": 12345
                              }
                            }
                          },
                          {
                            "title": "email",
                            "type": "object",
                            "required": [
                              "email"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "description": "The identifier for the person represented by the transactional message. Use this option if your workspace identifies people by email rather than by `id`.",
                                "example": "cool.person@example.com"
                              }
                            }
                          },
                          {
                            "title": "cio_id",
                            "type": "object",
                            "required": [
                              "cio_id"
                            ],
                            "properties": {
                              "cio_id": {
                                "type": "string",
                                "description": "A unique, immutable identifier for a person, set by Customer.io when you add a person.",
                                "example": 3000001
                              }
                            }
                          }
                        ]
                      },
                      "message_data": {
                        "type": "object",
                        "description": "An object containing the key-value pairs referenced using liquid in your message.",
                        "additionalProperties": {
                          "x-additionalPropertiesName": "Liquid Data",
                          "description": "Insert key-values that you want to reference in your message here."
                        },
                        "example": {
                          "password_reset_token": "abcde-12345-fghij-d888",
                          "account_id": "123dj"
                        }
                      },
                      "send_at": {
                        "type": "integer",
                        "description": "A unix timestamp (seconds since epoch) determining when the message will be sent. The timestamp can be up to 90 days in the future. If this value is in the past, your message is sent immediately."
                      },
                      "disable_message_retention": {
                        "x-scalar-ignore": true,
                        "type": "boolean",
                        "default": false,
                        "description": "If true, the message body is not retained in delivery history. Setting this value overrides the value set in the settings of your `transactional_message_id`."
                      },
                      "send_to_unsubscribed": {
                        "x-scalar-ignore": true,
                        "type": "boolean",
                        "default": true,
                        "description": "If false, your message is not sent to unsubscribed recipients. Setting this value overrides the value set in the settings of your `transactional_message_id`."
                      },
                      "queue_draft": {
                        "x-scalar-ignore": true,
                        "type": "boolean",
                        "description": "If true, your transactional message is held as a draft in Customer.io and not sent directly to your audience. You must go to the Deliveries and Drafts page to send your message.",
                        "default": false
                      }
                    }
                  }
                ],
                "example": {
                  "transactional_message_id": "confirmation code",
                  "to": "+15559876543",
                  "from": "+15551234567",
                  "body": "Your verification code is {{trigger.confirmation_code}}",
                  "identifiers": {
                    "id": "123456"
                  },
                  "message_data": {
                    "confirmation_code": "123456",
                    "account_name": "Jane Doe"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a unique ID for the delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "delivery_id": {
                      "type": "string",
                      "description": "A unique identifier for the message."
                    },
                    "queued_at": {
                      "type": "integer",
                      "format": "unix timestamp",
                      "description": "The date-time when the message is sent."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "description": "Contains errors.",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail.",
                          "example": "`Invalid phone number format. Phone numbers must be in E.164 format.`\n"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "You don't have SMS enabled.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail.",
                          "example": "SMS messaging is not enabled for your workspace."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"transactional_message_id\": \"confirmation code\",\n  \"to\": \"+15559876543\",\n  \"from\": \"+15551234567\",\n  \"body\": \"Your verification code is {{trigger.confirmation_code}}\",\n  \"identifiers\": {\n    \"id\": \"123456\"\n  },\n  \"message_data\": {\n    \"confirmation_code\": \"123456\",\n    \"account_name\": \"Jane Doe\"\n  }\n}"
          },
          {
            "label": "Node.js (SDK)",
            "lang": "javascript",
            "source": "const { APIClient, SendSMSRequest } = require(\"customerio-node\");\nconst api = new APIClient('app-key');\n\nconst request = new SendSMSRequest({\n  transactional_message_id: \"3\",\n  from: \"+15551234567\",\n  message_data: {\n    confirmation_code: \"123456\",\n    account_name: \"Jane Doe\",\n  },\n  identifiers: {\n    id: \"123456\",\n  },\n});\n\napi.sendSMS(request)\n  .then(res => console.log(res))\n  .catch(err => console.log(err.statusCode, err.message))\n"
          },
          {
            "label": "Ruby (SDK)",
            "lang": "ruby",
            "source": "require \"customerio\"\n\nclient = Customerio::APIClient.new(\"your API key\")\n\nrequest = Customerio::SendSMSRequest.new(\n  transactional_message_id: \"3\",\n  from: \"+15551234567\",\n  message_data: {\n    confirmation_code: \"123456\",\n    account_name: \"Jane Doe\",\n  },\n  identifiers: {\n    id: \"123456\",\n  },\n)\n\nbegin\n  response = client.send_sms(request)\n  puts response\nrescue Customerio::InvalidResponse => e\n  puts e.code, e.message\nend\n"
          },
          {
            "label": "Python (SDK)",
            "lang": "python",
            "source": "from customerio import APIClient, SendSMSRequest, CustomerIOException\nclient = APIClient(\"your API key\")\n\nrequest = SendSMSRequest(\n  transactional_message_id=\"confirmation_code\",\n  identifiers={\n    \"id\": \"123456\"\n  },\n  message_data={\n    \"confirmation_code\": \"123456\",\n    \"account_name\": \"Jane Doe\"\n  }\n)\n\ntry:\n  api.send_sms(request)\nexcept CustomerIOException as e:\n  print(\"error: \", e)\n"
          },
          {
            "label": "Go (SDK)",
            "lang": "go",
            "source": "import \"github.com/customerio/go-customerio/v3\"\n\nclient := customerio.NewAPIClient(\"your API key\")\n\nrequest := customerio.SendSMSRequest{\n  TransactionalMessageID: \"confirmation_code\",\n  Identifiers: map[string]string{\n    \"id\": \"123456\",\n  },\n  MessageData: map[string]interface{}{\n    \"confirmation_code\": \"123456\",\n    \"account_name\": \"Jane Doe\",\n  },\n}\n\nbody, err := client.SendSMS(context.Background(), &request)\nif err != nil {\n  fmt.Println(err)\n}\nfmt.Println(body)\n"
          },
          {
            "label": "cURL",
            "lang": "curl",
            "source": "curl --request POST \\\n  --url https://api.customer.io/v1/send/sms \\\n  --header 'Authorization: Bearer <YOUR-APP-API-KEY>' \\\n  --header 'content-type: application/json' \\\n  --data '{\n    \"transactional_message_id\": \"confirmation_code\",\n    \"identifiers\": {\n      \"id\": \"123456\"\n    },\n    \"message_data\": {\n      \"confirmation_code\": \"123456\",\n      \"account_name\": \"Jane Doe\"\n    }\n  }' \n"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/send/sms \\\n  --header 'content-type: application/json' \\\n  --data '{\"transactional_message_id\":\"confirmation code\",\"to\":\"+15559876543\",\"from\":\"+15551234567\",\"body\":\"Your verification code is {{trigger.confirmation_code}}\",\"identifiers\":{\"id\":\"123456\"},\"message_data\":{\"confirmation_code\":\"123456\",\"account_name\":\"Jane Doe\"}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/send/sms\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  transactional_message_id: 'confirmation code',\n  to: '+15559876543',\n  from: '+15551234567',\n  body: 'Your verification code is {{trigger.confirmation_code}}',\n  identifiers: {id: '123456'},\n  message_data: {confirmation_code: '123456', account_name: 'Jane Doe'}\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/send/sms\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"transactional_message_id\\\":\\\"confirmation code\\\",\\\"to\\\":\\\"+15559876543\\\",\\\"from\\\":\\\"+15551234567\\\",\\\"body\\\":\\\"Your verification code is {{trigger.confirmation_code}}\\\",\\\"identifiers\\\":{\\\"id\\\":\\\"123456\\\"},\\\"message_data\\\":{\\\"confirmation_code\\\":\\\"123456\\\",\\\"account_name\\\":\\\"Jane Doe\\\"}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"transactional_message_id\\\":\\\"confirmation code\\\",\\\"to\\\":\\\"+15559876543\\\",\\\"from\\\":\\\"+15551234567\\\",\\\"body\\\":\\\"Your verification code is {{trigger.confirmation_code}}\\\",\\\"identifiers\\\":{\\\"id\\\":\\\"123456\\\"},\\\"message_data\\\":{\\\"confirmation_code\\\":\\\"123456\\\",\\\"account_name\\\":\\\"Jane Doe\\\"}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/send/sms\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/send/sms\"\n\n\tpayload := strings.NewReader(\"{\\\"transactional_message_id\\\":\\\"confirmation code\\\",\\\"to\\\":\\\"+15559876543\\\",\\\"from\\\":\\\"+15551234567\\\",\\\"body\\\":\\\"Your verification code is {{trigger.confirmation_code}}\\\",\\\"identifiers\\\":{\\\"id\\\":\\\"123456\\\"},\\\"message_data\\\":{\\\"confirmation_code\\\":\\\"123456\\\",\\\"account_name\\\":\\\"Jane Doe\\\"}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "summary": "List campaigns",
        "operationId": "listCampaigns",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of your campaigns and associated metadata.",
        "tags": [
          "Campaigns"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of campaign objects.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "campaigns": {
                      "type": "array",
                      "description": "Each object is a campaign in your workspace with one of seven types of campaign triggers.",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "oneOf": [
                          {
                            "title": "Segment",
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for a campaign.",
                                "type": "integer",
                                "example": 5
                              },
                              "deduplicate_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "readOnly": true,
                                "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                "example": "15:1492548073"
                              },
                              "name": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The name of the campaign.",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "deprecated": true,
                                "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                                "enum": [
                                  "segment"
                                ]
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "active": {
                                "x-scalar-ignore": true,
                                "type": "boolean",
                                "description": "If true, the campaign is active and can still send messages."
                              },
                              "state": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The status of the campaign.",
                                "enum": [
                                  "running",
                                  "draft",
                                  "stopped"
                                ]
                              },
                              "actions": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of actions contained within the campaign.",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The action type.",
                                      "example": "email"
                                    },
                                    "id": {
                                      "type": "integer",
                                      "description": "The identifier for the action.",
                                      "example": 259
                                    }
                                  }
                                }
                              },
                              "first_started": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                                "example": 1552341937
                              },
                              "tags": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of tags you set on this campaign.",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "new",
                                  "welcome"
                                ]
                              },
                              "trigger_segment_ids": {
                                "description": "A list of segments used in the campaign trigger, returned if the campaign trigger included one or more segment conditions.",
                                "type": "array",
                                "items": {
                                  "type": "integer"
                                },
                                "example": [
                                  90
                                ]
                              },
                              "filter_segment_ids": {
                                "x-scalar-ignore": true,
                                "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                                "type": "array",
                                "items": {
                                  "type": "integer"
                                },
                                "example": [
                                  21,
                                  42
                                ]
                              },
                              "msg_templates": {
                                "type": "array",
                                "deprecated": true,
                                "description": "Indicates the message templates used in this campaign.",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The message type the template represents.",
                                      "enum": [
                                        "email",
                                        "sms",
                                        "push",
                                        "slack"
                                      ]
                                    },
                                    "id": {
                                      "type": "integer",
                                      "description": "The identifier for the template."
                                    }
                                  }
                                }
                              }
                            }
                          },
                          {
                            "title": "Event",
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for a campaign.",
                                "type": "integer",
                                "example": 5
                              },
                              "deduplicate_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "readOnly": true,
                                "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                "example": "15:1492548073"
                              },
                              "name": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The name of the campaign.",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "deprecated": true,
                                "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                                "enum": [
                                  "event"
                                ]
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "active": {
                                "x-scalar-ignore": true,
                                "type": "boolean",
                                "description": "If true, the campaign is active and can still send messages."
                              },
                              "state": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The status of the campaign.",
                                "enum": [
                                  "running",
                                  "draft",
                                  "stopped"
                                ]
                              },
                              "actions": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of actions contained within the campaign.",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The action type.",
                                      "example": "email"
                                    },
                                    "id": {
                                      "type": "integer",
                                      "description": "The identifier for the action.",
                                      "example": 259
                                    }
                                  }
                                }
                              },
                              "first_started": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                                "example": 1552341937
                              },
                              "tags": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of tags you set on this campaign.",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "new",
                                  "welcome"
                                ]
                              },
                              "filter_segment_ids": {
                                "x-scalar-ignore": true,
                                "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                                "type": "array",
                                "items": {
                                  "type": "integer"
                                },
                                "example": [
                                  21,
                                  42
                                ]
                              },
                              "event_name": {
                                "description": "The name of the event. How you reference the event in campaigns or segments.",
                                "type": "string"
                              }
                            }
                          },
                          {
                            "title": "Form",
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for a campaign.",
                                "type": "integer",
                                "example": 5
                              },
                              "deduplicate_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "readOnly": true,
                                "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                "example": "15:1492548073"
                              },
                              "name": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The name of the campaign.",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "deprecated": true,
                                "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                                "enum": [
                                  "form"
                                ]
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "active": {
                                "x-scalar-ignore": true,
                                "type": "boolean",
                                "description": "If true, the campaign is active and can still send messages."
                              },
                              "state": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The status of the campaign.",
                                "enum": [
                                  "running",
                                  "draft",
                                  "stopped"
                                ]
                              },
                              "actions": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of actions contained within the campaign.",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The action type.",
                                      "example": "email"
                                    },
                                    "id": {
                                      "type": "integer",
                                      "description": "The identifier for the action.",
                                      "example": 259
                                    }
                                  }
                                }
                              },
                              "first_started": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                                "example": 1552341937
                              },
                              "tags": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of tags you set on this campaign.",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "new",
                                  "welcome"
                                ]
                              },
                              "filter_segment_ids": {
                                "x-scalar-ignore": true,
                                "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                                "type": "array",
                                "items": {
                                  "type": "integer"
                                },
                                "example": [
                                  21,
                                  42
                                ]
                              }
                            }
                          },
                          {
                            "title": "Date",
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for a campaign.",
                                "type": "integer",
                                "example": 5
                              },
                              "deduplicate_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "readOnly": true,
                                "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                "example": "15:1492548073"
                              },
                              "name": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The name of the campaign.",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "deprecated": true,
                                "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                                "enum": [
                                  "date"
                                ]
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "active": {
                                "x-scalar-ignore": true,
                                "type": "boolean",
                                "description": "If true, the campaign is active and can still send messages."
                              },
                              "state": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The status of the campaign.",
                                "enum": [
                                  "running",
                                  "draft",
                                  "stopped"
                                ]
                              },
                              "actions": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of actions contained within the campaign.",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The action type.",
                                      "example": "email"
                                    },
                                    "id": {
                                      "type": "integer",
                                      "description": "The identifier for the action.",
                                      "example": 259
                                    }
                                  }
                                }
                              },
                              "first_started": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                                "example": 1552341937
                              },
                              "tags": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of tags you set on this campaign.",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "new",
                                  "welcome"
                                ]
                              },
                              "filter_segment_ids": {
                                "x-scalar-ignore": true,
                                "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                                "type": "array",
                                "items": {
                                  "type": "integer"
                                },
                                "example": [
                                  21,
                                  42
                                ]
                              },
                              "frequency": {
                                "description": "How often a person will receive this campaign based on the date specified in the campaign trigger.",
                                "type": "string",
                                "enum": [
                                  "once",
                                  "monthly",
                                  "yearly"
                                ]
                              },
                              "date_attribute": {
                                "description": "The attribute on people's profiles you use to configure the date of the campaign trigger.",
                                "type": "string"
                              },
                              "timezone": {
                                "description": "The time zone you set to configure the date of the campaign trigger.",
                                "type": "string",
                                "example": "America/Chicago"
                              },
                              "use_customer_timezone": {
                                "description": "If you chose \"the user's time zone\" while configuring the date of the campaign trigger, this is `true`. Otherwise, you set a specific time zone so it's `false`.",
                                "type": "boolean"
                              },
                              "start_hour": {
                                "description": "The hour you set the campaign to trigger. Follows the 24-hour clock.",
                                "type": "integer"
                              },
                              "start_minutes": {
                                "description": "The minutes you set the campaign to trigger. Follows the 24-hour clock.",
                                "type": "integer"
                              }
                            }
                          },
                          {
                            "title": "Relationship",
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for a campaign.",
                                "type": "integer",
                                "example": 5
                              },
                              "deduplicate_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "readOnly": true,
                                "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                "example": "15:1492548073"
                              },
                              "name": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The name of the campaign.",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "deprecated": true,
                                "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                                "enum": [
                                  "relationship"
                                ]
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "active": {
                                "x-scalar-ignore": true,
                                "type": "boolean",
                                "description": "If true, the campaign is active and can still send messages."
                              },
                              "state": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The status of the campaign.",
                                "enum": [
                                  "running",
                                  "draft",
                                  "stopped"
                                ]
                              },
                              "actions": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of actions contained within the campaign.",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The action type.",
                                      "example": "email"
                                    },
                                    "id": {
                                      "type": "integer",
                                      "description": "The identifier for the action.",
                                      "example": 259
                                    }
                                  }
                                }
                              },
                              "first_started": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                                "example": 1552341937
                              },
                              "tags": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of tags you set on this campaign.",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "new",
                                  "welcome"
                                ]
                              },
                              "filter_segment_ids": {
                                "x-scalar-ignore": true,
                                "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                                "type": "array",
                                "items": {
                                  "type": "integer"
                                },
                                "example": [
                                  21,
                                  42
                                ]
                              },
                              "object_type_id": {
                                "x-scalar-ignore": true,
                                "description": "The the object type ID of the trigger.",
                                "type": "integer"
                              },
                              "filter_object_attributes": {
                                "x-scalar-ignore": true,
                                "description": "A list of object attributes used in the campaign filter, returned if the campaign audience was filtered on one or more object attributes.",
                                "type": "string",
                                "example": "{\"and\":[{\"object_attribute\":{\"type_id\":1,\"field\":\"name\",\"operator\":\"eq\",\"value\":\"sfa\"}},{\"object_attribute\":{\"type_id\":1,\"field\":\"renewal_date\",\"operator\":\"eq\",\"value\":\"sdfs\"}}]}"
                              },
                              "filter_relationship_attributes": {
                                "x-scalar-ignore": true,
                                "description": "A list of relationship attributes used in the campaign filter, returned if the campaign audience was filtered on one or more relationship attributes.",
                                "type": "string",
                                "example": "{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"email\",\"operator\":\"eq\",\"value\":\"dscs@test.com\"}},{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"false\"}}]}"
                              },
                              "audience": {
                                "description": "Defines the people who will start a journey in your campaign.",
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "description": "The type of audience selected. \"Person added to object\" is `0`. \"Every person in the object\" is `1`. \"Certain people in the object\" is also `1`. \"Certain people\" will always have one or more audience filters (see below). \"Every person\" will never have an audience filter.",
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 1
                                  },
                                  "person_filters": {
                                    "description": "Returns the profile attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".",
                                    "type": "object",
                                    "example": "{\"and\":[{\"attribute\":{\"field\":\"title\",\"operator\":\"eq\",\"value\":\"asdca\"}}]}"
                                  },
                                  "relationship_filters": {
                                    "description": "Returns the relationship attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".",
                                    "type": "object",
                                    "example": "{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"asd\"}}]}"
                                  }
                                }
                              },
                              "relationship_attribute_triggers": {
                                "description": "A list of relationship attributes used to trigger the campaign.",
                                "type": "object",
                                "example": "{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"true\"}}]}"
                              }
                            }
                          },
                          {
                            "title": "Object",
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for a campaign.",
                                "type": "integer",
                                "example": 5
                              },
                              "deduplicate_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "readOnly": true,
                                "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                "example": "15:1492548073"
                              },
                              "name": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The name of the campaign.",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "deprecated": true,
                                "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                                "enum": [
                                  "object"
                                ]
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "active": {
                                "x-scalar-ignore": true,
                                "type": "boolean",
                                "description": "If true, the campaign is active and can still send messages."
                              },
                              "state": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The status of the campaign.",
                                "enum": [
                                  "running",
                                  "draft",
                                  "stopped"
                                ]
                              },
                              "actions": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of actions contained within the campaign.",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The action type.",
                                      "example": "email"
                                    },
                                    "id": {
                                      "type": "integer",
                                      "description": "The identifier for the action.",
                                      "example": 259
                                    }
                                  }
                                }
                              },
                              "first_started": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                                "example": 1552341937
                              },
                              "tags": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of tags you set on this campaign.",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "new",
                                  "welcome"
                                ]
                              },
                              "filter_segment_ids": {
                                "x-scalar-ignore": true,
                                "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                                "type": "array",
                                "items": {
                                  "type": "integer"
                                },
                                "example": [
                                  21,
                                  42
                                ]
                              },
                              "object_type_id": {
                                "x-scalar-ignore": true,
                                "description": "The the object type ID of the trigger.",
                                "type": "integer"
                              },
                              "filter_object_attributes": {
                                "x-scalar-ignore": true,
                                "description": "A list of object attributes used in the campaign filter, returned if the campaign audience was filtered on one or more object attributes.",
                                "type": "string",
                                "example": "{\"and\":[{\"object_attribute\":{\"type_id\":1,\"field\":\"name\",\"operator\":\"eq\",\"value\":\"sfa\"}},{\"object_attribute\":{\"type_id\":1,\"field\":\"renewal_date\",\"operator\":\"eq\",\"value\":\"sdfs\"}}]}"
                              },
                              "filter_relationship_attributes": {
                                "x-scalar-ignore": true,
                                "description": "A list of relationship attributes used in the campaign filter, returned if the campaign audience was filtered on one or more relationship attributes.",
                                "type": "string",
                                "example": "{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"email\",\"operator\":\"eq\",\"value\":\"dscs@test.com\"}},{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"false\"}}]}"
                              },
                              "audience": {
                                "description": "Defines the people who will start a journey in your campaign.",
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "description": "The type of audience selected. \"Every person in the object\" is `1`. \"Certain people in the object\" is also `1`. \"Certain people\" will always have one or more audience filters (see below). \"Every person\" will never have an audience filter.",
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 1
                                  },
                                  "person_filters": {
                                    "description": "Returns the profile attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".",
                                    "type": "object",
                                    "example": "{\"and\":[{\"attribute\":{\"field\":\"title\",\"operator\":\"eq\",\"value\":\"asdca\"}}]}"
                                  },
                                  "relationship_filters": {
                                    "description": "Returns the relationship attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".",
                                    "type": "object",
                                    "example": "{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"asd\"}}]}"
                                  }
                                }
                              },
                              "object_attribute_triggers": {
                                "description": "A list of object attributes used to trigger the campaign.",
                                "type": "object",
                                "example": "{\"and\":[{\"object_attribute\":{\"type_id\":1,\"field\":\"name\",\"operator\":\"eq\",\"value\":\"sfa\"}},{\"object_attribute\":{\"type_id\":1,\"field\":\"renewal_date\",\"operator\":\"eq\",\"value\":\"sdfs\"}}]}"
                              }
                            }
                          },
                          {
                            "title": "Webhook",
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for a campaign.",
                                "type": "integer",
                                "example": 5
                              },
                              "deduplicate_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "readOnly": true,
                                "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                "example": "15:1492548073"
                              },
                              "name": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The name of the campaign.",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "deprecated": true,
                                "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                                "enum": [
                                  "webhook"
                                ]
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "active": {
                                "x-scalar-ignore": true,
                                "type": "boolean",
                                "description": "If true, the campaign is active and can still send messages."
                              },
                              "state": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The status of the campaign.",
                                "enum": [
                                  "running",
                                  "draft",
                                  "stopped"
                                ]
                              },
                              "actions": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of actions contained within the campaign.",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The action type.",
                                      "example": "email"
                                    },
                                    "id": {
                                      "type": "integer",
                                      "description": "The identifier for the action.",
                                      "example": 259
                                    }
                                  }
                                }
                              },
                              "first_started": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                                "example": 1552341937
                              },
                              "tags": {
                                "x-scalar-ignore": true,
                                "type": "array",
                                "description": "An array of tags you set on this campaign.",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "new",
                                  "welcome"
                                ]
                              },
                              "webhook_id": {
                                "description": "The ID of the webhook trigger generated by Customer.io.",
                                "type": "integer"
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{campaign_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "campaign_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign that you want to trigger or return information about.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        }
      ],
      "get": {
        "summary": "Get a campaign",
        "operationId": "getCampaigns",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns metadata for an individual campaign.",
        "tags": [
          "Campaigns"
        ],
        "responses": {
          "200": {
            "description": "Returns metadata for the campaign.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "campaign": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "oneOf": [
                        {
                          "title": "Segment",
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a campaign.",
                              "type": "integer",
                              "example": 5
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The name of the campaign.",
                              "readOnly": true
                            },
                            "type": {
                              "type": "string",
                              "deprecated": true,
                              "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                              "enum": [
                                "segment"
                              ]
                            },
                            "created": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was created.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "updated": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was last updated.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "active": {
                              "x-scalar-ignore": true,
                              "type": "boolean",
                              "description": "If true, the campaign is active and can still send messages."
                            },
                            "state": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The status of the campaign.",
                              "enum": [
                                "running",
                                "draft",
                                "stopped"
                              ]
                            },
                            "actions": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of actions contained within the campaign.",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "The action type.",
                                    "example": "email"
                                  },
                                  "id": {
                                    "type": "integer",
                                    "description": "The identifier for the action.",
                                    "example": 259
                                  }
                                }
                              }
                            },
                            "first_started": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                              "example": 1552341937
                            },
                            "tags": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of tags you set on this campaign.",
                              "items": {
                                "type": "string"
                              },
                              "example": [
                                "new",
                                "welcome"
                              ]
                            },
                            "trigger_segment_ids": {
                              "description": "A list of segments used in the campaign trigger, returned if the campaign trigger included one or more segment conditions.",
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "example": [
                                90
                              ]
                            },
                            "filter_segment_ids": {
                              "x-scalar-ignore": true,
                              "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "example": [
                                21,
                                42
                              ]
                            },
                            "msg_templates": {
                              "type": "array",
                              "deprecated": true,
                              "description": "Indicates the message templates used in this campaign.",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "The message type the template represents.",
                                    "enum": [
                                      "email",
                                      "sms",
                                      "push",
                                      "slack"
                                    ]
                                  },
                                  "id": {
                                    "type": "integer",
                                    "description": "The identifier for the template."
                                  }
                                }
                              }
                            }
                          }
                        },
                        {
                          "title": "Event",
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a campaign.",
                              "type": "integer",
                              "example": 5
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The name of the campaign.",
                              "readOnly": true
                            },
                            "type": {
                              "type": "string",
                              "deprecated": true,
                              "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                              "enum": [
                                "event"
                              ]
                            },
                            "created": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was created.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "updated": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was last updated.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "active": {
                              "x-scalar-ignore": true,
                              "type": "boolean",
                              "description": "If true, the campaign is active and can still send messages."
                            },
                            "state": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The status of the campaign.",
                              "enum": [
                                "running",
                                "draft",
                                "stopped"
                              ]
                            },
                            "actions": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of actions contained within the campaign.",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "The action type.",
                                    "example": "email"
                                  },
                                  "id": {
                                    "type": "integer",
                                    "description": "The identifier for the action.",
                                    "example": 259
                                  }
                                }
                              }
                            },
                            "first_started": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                              "example": 1552341937
                            },
                            "tags": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of tags you set on this campaign.",
                              "items": {
                                "type": "string"
                              },
                              "example": [
                                "new",
                                "welcome"
                              ]
                            },
                            "filter_segment_ids": {
                              "x-scalar-ignore": true,
                              "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "example": [
                                21,
                                42
                              ]
                            },
                            "event_name": {
                              "description": "The name of the event. How you reference the event in campaigns or segments.",
                              "type": "string"
                            }
                          }
                        },
                        {
                          "title": "Form",
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a campaign.",
                              "type": "integer",
                              "example": 5
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The name of the campaign.",
                              "readOnly": true
                            },
                            "type": {
                              "type": "string",
                              "deprecated": true,
                              "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                              "enum": [
                                "form"
                              ]
                            },
                            "created": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was created.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "updated": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was last updated.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "active": {
                              "x-scalar-ignore": true,
                              "type": "boolean",
                              "description": "If true, the campaign is active and can still send messages."
                            },
                            "state": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The status of the campaign.",
                              "enum": [
                                "running",
                                "draft",
                                "stopped"
                              ]
                            },
                            "actions": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of actions contained within the campaign.",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "The action type.",
                                    "example": "email"
                                  },
                                  "id": {
                                    "type": "integer",
                                    "description": "The identifier for the action.",
                                    "example": 259
                                  }
                                }
                              }
                            },
                            "first_started": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                              "example": 1552341937
                            },
                            "tags": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of tags you set on this campaign.",
                              "items": {
                                "type": "string"
                              },
                              "example": [
                                "new",
                                "welcome"
                              ]
                            },
                            "filter_segment_ids": {
                              "x-scalar-ignore": true,
                              "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "example": [
                                21,
                                42
                              ]
                            }
                          }
                        },
                        {
                          "title": "Date",
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a campaign.",
                              "type": "integer",
                              "example": 5
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The name of the campaign.",
                              "readOnly": true
                            },
                            "type": {
                              "type": "string",
                              "deprecated": true,
                              "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                              "enum": [
                                "date"
                              ]
                            },
                            "created": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was created.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "updated": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was last updated.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "active": {
                              "x-scalar-ignore": true,
                              "type": "boolean",
                              "description": "If true, the campaign is active and can still send messages."
                            },
                            "state": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The status of the campaign.",
                              "enum": [
                                "running",
                                "draft",
                                "stopped"
                              ]
                            },
                            "actions": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of actions contained within the campaign.",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "The action type.",
                                    "example": "email"
                                  },
                                  "id": {
                                    "type": "integer",
                                    "description": "The identifier for the action.",
                                    "example": 259
                                  }
                                }
                              }
                            },
                            "first_started": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                              "example": 1552341937
                            },
                            "tags": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of tags you set on this campaign.",
                              "items": {
                                "type": "string"
                              },
                              "example": [
                                "new",
                                "welcome"
                              ]
                            },
                            "filter_segment_ids": {
                              "x-scalar-ignore": true,
                              "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "example": [
                                21,
                                42
                              ]
                            },
                            "frequency": {
                              "description": "How often a person will receive this campaign based on the date specified in the campaign trigger.",
                              "type": "string",
                              "enum": [
                                "once",
                                "monthly",
                                "yearly"
                              ]
                            },
                            "date_attribute": {
                              "description": "The attribute on people's profiles you use to configure the date of the campaign trigger.",
                              "type": "string"
                            },
                            "timezone": {
                              "description": "The time zone you set to configure the date of the campaign trigger.",
                              "type": "string",
                              "example": "America/Chicago"
                            },
                            "use_customer_timezone": {
                              "description": "If you chose \"the user's time zone\" while configuring the date of the campaign trigger, this is `true`. Otherwise, you set a specific time zone so it's `false`.",
                              "type": "boolean"
                            },
                            "start_hour": {
                              "description": "The hour you set the campaign to trigger. Follows the 24-hour clock.",
                              "type": "integer"
                            },
                            "start_minutes": {
                              "description": "The minutes you set the campaign to trigger. Follows the 24-hour clock.",
                              "type": "integer"
                            }
                          }
                        },
                        {
                          "title": "Relationship",
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a campaign.",
                              "type": "integer",
                              "example": 5
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The name of the campaign.",
                              "readOnly": true
                            },
                            "type": {
                              "type": "string",
                              "deprecated": true,
                              "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                              "enum": [
                                "relationship"
                              ]
                            },
                            "created": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was created.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "updated": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was last updated.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "active": {
                              "x-scalar-ignore": true,
                              "type": "boolean",
                              "description": "If true, the campaign is active and can still send messages."
                            },
                            "state": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The status of the campaign.",
                              "enum": [
                                "running",
                                "draft",
                                "stopped"
                              ]
                            },
                            "actions": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of actions contained within the campaign.",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "The action type.",
                                    "example": "email"
                                  },
                                  "id": {
                                    "type": "integer",
                                    "description": "The identifier for the action.",
                                    "example": 259
                                  }
                                }
                              }
                            },
                            "first_started": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                              "example": 1552341937
                            },
                            "tags": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of tags you set on this campaign.",
                              "items": {
                                "type": "string"
                              },
                              "example": [
                                "new",
                                "welcome"
                              ]
                            },
                            "filter_segment_ids": {
                              "x-scalar-ignore": true,
                              "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "example": [
                                21,
                                42
                              ]
                            },
                            "object_type_id": {
                              "x-scalar-ignore": true,
                              "description": "The the object type ID of the trigger.",
                              "type": "integer"
                            },
                            "filter_object_attributes": {
                              "x-scalar-ignore": true,
                              "description": "A list of object attributes used in the campaign filter, returned if the campaign audience was filtered on one or more object attributes.",
                              "type": "string",
                              "example": "{\"and\":[{\"object_attribute\":{\"type_id\":1,\"field\":\"name\",\"operator\":\"eq\",\"value\":\"sfa\"}},{\"object_attribute\":{\"type_id\":1,\"field\":\"renewal_date\",\"operator\":\"eq\",\"value\":\"sdfs\"}}]}"
                            },
                            "filter_relationship_attributes": {
                              "x-scalar-ignore": true,
                              "description": "A list of relationship attributes used in the campaign filter, returned if the campaign audience was filtered on one or more relationship attributes.",
                              "type": "string",
                              "example": "{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"email\",\"operator\":\"eq\",\"value\":\"dscs@test.com\"}},{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"false\"}}]}"
                            },
                            "audience": {
                              "description": "Defines the people who will start a journey in your campaign.",
                              "type": "object",
                              "properties": {
                                "type": {
                                  "description": "The type of audience selected. \"Person added to object\" is `0`. \"Every person in the object\" is `1`. \"Certain people in the object\" is also `1`. \"Certain people\" will always have one or more audience filters (see below). \"Every person\" will never have an audience filter.",
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 1
                                },
                                "person_filters": {
                                  "description": "Returns the profile attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".",
                                  "type": "object",
                                  "example": "{\"and\":[{\"attribute\":{\"field\":\"title\",\"operator\":\"eq\",\"value\":\"asdca\"}}]}"
                                },
                                "relationship_filters": {
                                  "description": "Returns the relationship attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".",
                                  "type": "object",
                                  "example": "{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"asd\"}}]}"
                                }
                              }
                            },
                            "relationship_attribute_triggers": {
                              "description": "A list of relationship attributes used to trigger the campaign.",
                              "type": "object",
                              "example": "{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"true\"}}]}"
                            }
                          }
                        },
                        {
                          "title": "Object",
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a campaign.",
                              "type": "integer",
                              "example": 5
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The name of the campaign.",
                              "readOnly": true
                            },
                            "type": {
                              "type": "string",
                              "deprecated": true,
                              "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                              "enum": [
                                "object"
                              ]
                            },
                            "created": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was created.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "updated": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was last updated.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "active": {
                              "x-scalar-ignore": true,
                              "type": "boolean",
                              "description": "If true, the campaign is active and can still send messages."
                            },
                            "state": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The status of the campaign.",
                              "enum": [
                                "running",
                                "draft",
                                "stopped"
                              ]
                            },
                            "actions": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of actions contained within the campaign.",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "The action type.",
                                    "example": "email"
                                  },
                                  "id": {
                                    "type": "integer",
                                    "description": "The identifier for the action.",
                                    "example": 259
                                  }
                                }
                              }
                            },
                            "first_started": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                              "example": 1552341937
                            },
                            "tags": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of tags you set on this campaign.",
                              "items": {
                                "type": "string"
                              },
                              "example": [
                                "new",
                                "welcome"
                              ]
                            },
                            "filter_segment_ids": {
                              "x-scalar-ignore": true,
                              "description": "A list of segments used in the campaign filter, returned if the campaign audience was filtered on one or more segments.",
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "example": [
                                21,
                                42
                              ]
                            },
                            "object_type_id": {
                              "x-scalar-ignore": true,
                              "description": "The the object type ID of the trigger.",
                              "type": "integer"
                            },
                            "filter_object_attributes": {
                              "x-scalar-ignore": true,
                              "description": "A list of object attributes used in the campaign filter, returned if the campaign audience was filtered on one or more object attributes.",
                              "type": "string",
                              "example": "{\"and\":[{\"object_attribute\":{\"type_id\":1,\"field\":\"name\",\"operator\":\"eq\",\"value\":\"sfa\"}},{\"object_attribute\":{\"type_id\":1,\"field\":\"renewal_date\",\"operator\":\"eq\",\"value\":\"sdfs\"}}]}"
                            },
                            "filter_relationship_attributes": {
                              "x-scalar-ignore": true,
                              "description": "A list of relationship attributes used in the campaign filter, returned if the campaign audience was filtered on one or more relationship attributes.",
                              "type": "string",
                              "example": "{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"email\",\"operator\":\"eq\",\"value\":\"dscs@test.com\"}},{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"false\"}}]}"
                            },
                            "audience": {
                              "description": "Defines the people who will start a journey in your campaign.",
                              "type": "object",
                              "properties": {
                                "type": {
                                  "description": "The type of audience selected. \"Every person in the object\" is `1`. \"Certain people in the object\" is also `1`. \"Certain people\" will always have one or more audience filters (see below). \"Every person\" will never have an audience filter.",
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 1
                                },
                                "person_filters": {
                                  "description": "Returns the profile attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".",
                                  "type": "object",
                                  "example": "{\"and\":[{\"attribute\":{\"field\":\"title\",\"operator\":\"eq\",\"value\":\"asdca\"}}]}"
                                },
                                "relationship_filters": {
                                  "description": "Returns the relationship attributes you filtered the audience by, if any. Only applies to `type 1`, \"Certain people in the object\".",
                                  "type": "object",
                                  "example": "{\"and\":[{\"relationship_attribute\":{\"type_id\":1,\"field\":\"trig\",\"operator\":\"eq\",\"value\":\"asd\"}}]}"
                                }
                              }
                            },
                            "object_attribute_triggers": {
                              "description": "A list of object attributes used to trigger the campaign.",
                              "type": "object",
                              "example": "{\"and\":[{\"object_attribute\":{\"type_id\":1,\"field\":\"name\",\"operator\":\"eq\",\"value\":\"sfa\"}},{\"object_attribute\":{\"type_id\":1,\"field\":\"renewal_date\",\"operator\":\"eq\",\"value\":\"sdfs\"}}]}"
                            }
                          }
                        },
                        {
                          "title": "Webhook",
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a campaign.",
                              "type": "integer",
                              "example": 5
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The name of the campaign.",
                              "readOnly": true
                            },
                            "type": {
                              "type": "string",
                              "deprecated": true,
                              "description": "The type of campaign trigger. **Sunsetting on March 30, 2025**",
                              "enum": [
                                "webhook"
                              ]
                            },
                            "created": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was created.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "updated": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was last updated.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "active": {
                              "x-scalar-ignore": true,
                              "type": "boolean",
                              "description": "If true, the campaign is active and can still send messages."
                            },
                            "state": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The status of the campaign.",
                              "enum": [
                                "running",
                                "draft",
                                "stopped"
                              ]
                            },
                            "actions": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of actions contained within the campaign.",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "The action type.",
                                    "example": "email"
                                  },
                                  "id": {
                                    "type": "integer",
                                    "description": "The identifier for the action.",
                                    "example": 259
                                  }
                                }
                              }
                            },
                            "first_started": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date and time when you first started the campaign and it first became eligible to be triggered.",
                              "example": 1552341937
                            },
                            "tags": {
                              "x-scalar-ignore": true,
                              "type": "array",
                              "description": "An array of tags you set on this campaign.",
                              "items": {
                                "type": "string"
                              },
                              "example": [
                                "new",
                                "welcome"
                              ]
                            },
                            "webhook_id": {
                              "description": "The ID of the webhook trigger generated by Customer.io.",
                              "type": "integer"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bcampaign_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{campaign_id}/metrics": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "campaign_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign that you want to trigger or return information about.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        },
        {
          "name": "version",
          "in": "query",
          "required": true,
          "description": "The version of the metrics API to use.",
          "schema": {
            "type": "string",
            "enum": [
              "1",
              "2"
            ],
            "example": "2"
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        },
        {
          "name": "res",
          "in": "query",
          "description": "**Version 2 only.** Determines increment for metrics—hourly, daily, weekly, or monthly.",
          "required": false,
          "schema": {
            "type": "string",
            "enum": [
              "hours",
              "hourly",
              "days",
              "daily",
              "weeks",
              "weekly",
              "months",
              "monthly"
            ]
          }
        },
        {
          "name": "tz",
          "in": "query",
          "required": false,
          "description": "**Version 2 only.** The time zone for the metrics you are requesting. If you do not provide a time zone, we use EST. You must use the [region format](/journeys/example-timezones/#region-format).",
          "schema": {
            "type": "string",
            "example": "America/New_York"
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "**Version 2 only.** The unix timestamp for the beginning of your metrics.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp",
            "example": 1652718066
          }
        },
        {
          "name": "end",
          "in": "query",
          "required": false,
          "description": "**Version 2 only.** The unix timestamp for the end of your metrics. Limited to 10 years from the `start` parameter.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "**Version 1 only.** The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "**Version 1 only.** The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 120 months.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "Get campaign metrics",
        "operationId": "campaignMetrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of metrics for an individual campaign. The available parameters and response format depend on the version parameter that you use with this endpoint. **We strongly recommend that you use `version=2`** with this endpoint:\n\n**Version 2 (Recommended):**\n- Uses `res`, `tz`, `start`, and `end` parameters\n- Based on resolution and optionally, time zone, start and end times\n- Provides maximum flexibility for time-based metrics\n\n**Version 1 (Deprecated):**\n- Uses `period` and `steps` parameters  \n- Based on steps (days, weeks, etc)\n- Returns metrics from oldest to newest (i.e. the 0-index for any result is the oldest step/period)\n- You cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months)\n- For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made\n- `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`\n",
        "tags": [
          "Campaigns"
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/metrics/?res=days&version=2\n"
          },
          {
            "label": "Node.js (SDK)",
            "lang": "javascript",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/{campaign_id}/metrics?res=days&version=2\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();\n"
          },
          {
            "label": "Ruby (SDK)",
            "lang": "ruby",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/{campaign_id}/metrics?res=days&version=2\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body\n"
          },
          {
            "label": "Python (SDK)",
            "lang": "python",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/{campaign_id}/metrics?res=days&version=2\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))\n"
          },
          {
            "label": "Go (SDK)",
            "lang": "go",
            "source": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n\n  url := \"https://api.customer.io/v1/campaigns/{campaign_id}/metrics?res=days&version=2\"\n\n  req, _ := http.NewRequest(\"GET\", url, nil)\n\n  res, _ := http.DefaultClient.Do(req)\n\n  defer res.Body.Close()\n  body, _ := ioutil.ReadAll(res.Body)\n\n  fmt.Println(res)\n  fmt.Println(string(body))\n\n}\n"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/metrics"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/metrics\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/metrics\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bcampaign_id%7D/metrics\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/metrics\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns campaign metrics by `series` based on the version and parameters of the request.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "title": "Version 2 (Recommended)",
                      "type": "object",
                      "properties": {
                        "metric": {
                          "type": "object",
                          "properties": {
                            "series": {
                              "allOf": [
                                {
                                  "x-scalar-ignore": true,
                                  "type": "object",
                                  "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                                  "properties": {
                                    "2xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "2xx responses by period, representative of webhook performance."
                                    },
                                    "3xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "3xx responses by period, representative of webhook performance."
                                    },
                                    "4xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "4xx responses by period, representative of webhook performance."
                                    },
                                    "5xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "5xx responses by period, representative of webhook performance."
                                    }
                                  }
                                },
                                {
                                  "x-scalar-ignore": true,
                                  "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                                  "type": "object",
                                  "properties": {
                                    "attempted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `attempted` messages."
                                    },
                                    "bounced": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `bounced` messages."
                                    },
                                    "clicked": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `clicked` messages."
                                    },
                                    "human_clicked": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `clicked` emails excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                    },
                                    "prefetch_clicked": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `clicked` emails attributed to machines. This metric is reliable starting April 20, 2025."
                                    },
                                    "converted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `converted` messages."
                                    },
                                    "created": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `created` messages."
                                    },
                                    "deferred": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `deferred` messages."
                                    },
                                    "delivered": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `delivered` messages."
                                    },
                                    "drafted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `drafted` messages."
                                    },
                                    "failed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `failed` messages."
                                    },
                                    "opened": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `opened` messages."
                                    },
                                    "human_opened": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `opened` emails excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                    },
                                    "prefetch_opened": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `opened` emails attributed to machines. This metric is reliable starting March 20, 2025."
                                    },
                                    "sent": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of sent messages."
                                    },
                                    "spammed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of spam complaints."
                                    },
                                    "suppressed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `suppressed` messages."
                                    },
                                    "undeliverable": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `undeliverable` messages."
                                    },
                                    "topic_unsubscribed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of topic unsubscribes in a given period."
                                    },
                                    "unsubscribed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of unsubscribes attributed to the campaign or message."
                                    }
                                  }
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    {
                      "title": "Version 1 (Deprecated)",
                      "type": "object",
                      "properties": {
                        "metric": {
                          "type": "object",
                          "properties": {
                            "series": {
                              "allOf": [
                                {
                                  "x-scalar-ignore": true,
                                  "type": "object",
                                  "description": "Returns metrics in accordance with the `period` you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `period` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                                  "properties": {
                                    "2xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "2xx responses by period, representative of webhook performance."
                                    },
                                    "3xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "3xx responses by period, representative of webhook performance."
                                    },
                                    "4xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "4xx responses by period, representative of webhook performance."
                                    },
                                    "5xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "5xx responses by period, representative of webhook performance."
                                    }
                                  }
                                },
                                {
                                  "x-scalar-ignore": true,
                                  "description": "Returns metrics in accordance with the `period` you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `period` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                                  "type": "object",
                                  "properties": {
                                    "attempted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `attempted` messages."
                                    },
                                    "bounced": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `bounced` messages."
                                    },
                                    "clicked": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `clicked` messages."
                                    },
                                    "converted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `converted` messages."
                                    },
                                    "created": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `created` messages."
                                    },
                                    "deferred": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `deferred` messages."
                                    },
                                    "delivered": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `delivered` messages."
                                    },
                                    "drafted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `drafted` messages."
                                    },
                                    "failed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `failed` messages."
                                    },
                                    "opened": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `opened` messages."
                                    },
                                    "sent": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of sent messages."
                                    },
                                    "spammed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of spam complaints."
                                    },
                                    "suppressed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `suppressed` messages."
                                    },
                                    "undeliverable": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `undeliverable` messages."
                                    },
                                    "topic_unsubscribed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of topic unsubscribes in a given period."
                                    },
                                    "unsubscribed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of unsubscribes attributed to the campaign or message."
                                    }
                                  }
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        }
      }
    },
    "/v1/campaigns/{campaign_id}/metrics/links": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "campaign_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign that you want to trigger or return information about.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "unique",
          "in": "query",
          "required": false,
          "description": "If true, the response contains only unique customer results, i.e. a customer who clicks a link twice is only counted once. If false, the response contains the total number of results without regard to uniqueness.",
          "schema": {
            "type": "boolean",
            "default": false
          }
        }
      ],
      "get": {
        "summary": "Get campaign link metrics",
        "operationId": "campaignLinkMetrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns metrics for link clicks within a campaign, both in total and in `series` periods (days, weeks, etc). `series` metrics are ordered oldest to newest (i.e. the 0-index for any result is the oldest step/period).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Campaigns"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of link objects. Each object represents a different link in your campaign and contains independent metrics.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "links": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "link": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The ID of the link.",
                                "example": 1234
                              },
                              "href": {
                                "type": "string",
                                "description": "The link destination—a URL, mailto, etc.",
                                "example": "https://docs.customer.io"
                              }
                            }
                          },
                          "metric": {
                            "type": "object",
                            "description": "Contains metrics for the link.",
                            "properties": {
                              "series": {
                                "type": "object",
                                "properties": {
                                  "clicked": {
                                    "type": "array",
                                    "description": "An array of results from oldest to newest, where each result indicates a period.",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "example": [
                                      1,
                                      3,
                                      5,
                                      7
                                    ]
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/metrics/links"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/metrics/links\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/metrics/links\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bcampaign_id%7D/metrics/links\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/metrics/links\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{campaign_id}/actions": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "campaign_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign that you want to trigger or return information about.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "List campaign actions",
        "operationId": "listCampaignActions",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns the operations in a campaign workflow. Each object in the response represents an action or 'tile' in the campaign builder.\n\nThis endpoint returns up to 10 `actions` at a time. If there is another page of results, the response will include a `next` string. Pass this string as the `start` parameter to get the next page of results.\n",
        "tags": [
          "Campaigns"
        ],
        "responses": {
          "200": {
            "description": "Returns campaign `actions`. Each object represents an individual action.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "actions": {
                      "description": "Each object in the array represents an action in your campaign.",
                      "type": "array",
                      "maxItems": 10,
                      "items": {
                        "x-scalar-ignore": true,
                        "oneOf": [
                          {
                            "title": "Email / message",
                            "allOf": [
                              {
                                "x-scalar-ignore": true,
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for an action.",
                                    "type": "integer",
                                    "readOnly": true,
                                    "example": 96
                                  },
                                  "broadcast_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The identifier for a broadcast.",
                                    "example": 2
                                  },
                                  "deduplicate_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                    "example": "15:1492548073"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the action, if it exists.",
                                    "readOnly": true,
                                    "example": "Opening Message"
                                  },
                                  "layout": {
                                    "type": "string",
                                    "description": "The layout used for the action, if it exists.",
                                    "readOnly": true
                                  },
                                  "created": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was created.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "updated": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was last updated.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "body": {
                                    "type": "string",
                                    "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "The type of action.",
                                    "enum": [
                                      "email",
                                      "in_app",
                                      "push",
                                      "twilio",
                                      "slack",
                                      "whatsapp"
                                    ],
                                    "readOnly": true
                                  },
                                  "sending_state": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "enum": [
                                      "automatic",
                                      "draft",
                                      "off"
                                    ],
                                    "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                  },
                                  "language": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                    "example": "fr",
                                    "readOnly": true
                                  },
                                  "from": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                    "readOnly": true,
                                    "example": "sentFrom@example.com"
                                  },
                                  "from_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                    "example": 1
                                  },
                                  "reply_to": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The address that receives replies for the message, if applicable.",
                                    "readOnly": true,
                                    "example": "replyto@example.com"
                                  },
                                  "reply_to_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                    "nullable": true,
                                    "example": 38
                                  },
                                  "preprocessor": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                    "enum": [
                                      "premailer"
                                    ],
                                    "readOnly": true
                                  },
                                  "recipient": {
                                    "x-scalar-ignore": true,
                                    "description": "The recipient address for an action.",
                                    "type": "string",
                                    "example": "{{customer.email}}"
                                  },
                                  "subject": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The subject line for an `email` action.",
                                    "example": "Did you get that thing I sent you?"
                                  },
                                  "bcc": {
                                    "x-scalar-ignore": true,
                                    "readOnly": true,
                                    "description": "The blind-copy address(es) for this action.",
                                    "type": "string"
                                  },
                                  "fake_bcc": {
                                    "x-scalar-ignore": true,
                                    "readOnly": true,
                                    "type": "boolean",
                                    "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                                  },
                                  "preheader_text": {
                                    "x-scalar-ignore": true,
                                    "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."
                                  },
                                  "body_amp": {
                                    "x-scalar-ignore": true,
                                    "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."
                                  }
                                }
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for an action.",
                                    "type": "integer",
                                    "readOnly": true,
                                    "example": 96
                                  },
                                  "campaign_id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for a campaign.",
                                    "type": "integer",
                                    "example": 5
                                  },
                                  "parent_action_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                    "example": 1,
                                    "readOnly": true
                                  },
                                  "headers": {
                                    "x-scalar-ignore": true,
                                    "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                    "type": "string",
                                    "format": "json",
                                    "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                  }
                                }
                              }
                            ]
                          },
                          {
                            "title": "SMS/MMS",
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for an action.",
                                    "type": "integer",
                                    "readOnly": true,
                                    "example": 96
                                  },
                                  "campaign_id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for a campaign.",
                                    "type": "integer",
                                    "example": 5
                                  },
                                  "parent_action_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                    "example": 1,
                                    "readOnly": true
                                  }
                                }
                              },
                              {
                                "x-scalar-ignore": true,
                                "type": "object",
                                "properties": {
                                  "deduplicate_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                    "example": "15:1492548073"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the action.",
                                    "readOnly": true,
                                    "example": "Opening Message"
                                  },
                                  "layout": {
                                    "type": "string",
                                    "description": "The layout used for the action, if it exists.",
                                    "readOnly": true
                                  },
                                  "created": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was created.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "updated": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was last updated.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "body": {
                                    "type": "string",
                                    "description": "The body of your SMS."
                                  },
                                  "language": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                    "example": "fr",
                                    "readOnly": true
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                                    "enum": [
                                      "twilio"
                                    ],
                                    "readOnly": true
                                  },
                                  "image_url": {
                                    "type": "string",
                                    "description": "The URL of the image in your SMS (MMS) message."
                                  },
                                  "sending_state": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "enum": [
                                      "automatic",
                                      "draft",
                                      "off"
                                    ],
                                    "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                  },
                                  "recipient": {
                                    "type": "string",
                                    "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                                    "example": ""
                                  }
                                }
                              }
                            ]
                          },
                          {
                            "title": "WhatsApp",
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for an action.",
                                    "type": "integer",
                                    "readOnly": true,
                                    "example": 96
                                  },
                                  "campaign_id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for a campaign.",
                                    "type": "integer",
                                    "example": 5
                                  },
                                  "parent_action_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                    "example": 1,
                                    "readOnly": true
                                  }
                                }
                              },
                              {
                                "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                                "type": "object",
                                "properties": {
                                  "deduplicate_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                    "example": "15:1492548073"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the action.",
                                    "readOnly": true,
                                    "example": "Welcome Message"
                                  },
                                  "created": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was created.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "updated": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was last updated.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "body": {
                                    "type": "string",
                                    "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                                    "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                                  },
                                  "body_json": {
                                    "type": "string",
                                    "description": "For visual editor content (if applicable)."
                                  },
                                  "language": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                    "example": "fr",
                                    "readOnly": true
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                                    "enum": [
                                      "whatsapp"
                                    ],
                                    "readOnly": true
                                  },
                                  "sending_state": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "enum": [
                                      "automatic",
                                      "draft",
                                      "off"
                                    ],
                                    "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                  },
                                  "recipient": {
                                    "type": "string",
                                    "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                                    "example": ""
                                  },
                                  "sender_identity_id": {
                                    "type": "integer",
                                    "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                                  },
                                  "send_to_unsubscribed": {
                                    "type": "boolean",
                                    "description": "Whether to send this message to unsubscribed customers."
                                  },
                                  "tracked": {
                                    "type": "boolean",
                                    "description": "Whether links in template parameters should be tracked.",
                                    "default": false
                                  }
                                }
                              }
                            ]
                          },
                          {
                            "title": "Webhook",
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for an action.",
                                    "type": "integer",
                                    "readOnly": true,
                                    "example": 96
                                  },
                                  "campaign_id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for a campaign.",
                                    "type": "integer",
                                    "example": 5
                                  },
                                  "parent_action_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                    "example": 1,
                                    "readOnly": true
                                  }
                                }
                              },
                              {
                                "x-scalar-ignore": true,
                                "type": "object",
                                "properties": {
                                  "deduplicate_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                    "example": "15:1492548073"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the action, if it exists.",
                                    "readOnly": true,
                                    "example": "Opening Message"
                                  },
                                  "layout": {
                                    "type": "string",
                                    "description": "The layout used for the action, if it exists.",
                                    "readOnly": true
                                  },
                                  "created": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was created.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "updated": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was last updated.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "body": {
                                    "type": "string",
                                    "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "The type of action.",
                                    "enum": [
                                      "webhook"
                                    ],
                                    "readOnly": true
                                  },
                                  "url": {
                                    "type": "string",
                                    "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                                    "example": "https://my.example.com/webhook"
                                  },
                                  "headers": {
                                    "x-scalar-ignore": true,
                                    "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                    "type": "string",
                                    "format": "json",
                                    "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                  },
                                  "method": {
                                    "description": "The HTTP method for your webhook.",
                                    "type": "string",
                                    "enum": [
                                      "get",
                                      "post",
                                      "put",
                                      "delete",
                                      "patch"
                                    ],
                                    "example": "post"
                                  },
                                  "sending_state": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "enum": [
                                      "automatic",
                                      "draft",
                                      "off"
                                    ],
                                    "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                  }
                                }
                              }
                            ]
                          }
                        ]
                      }
                    },
                    "next": {
                      "x-scalar-ignore": true,
                      "type": "string",
                      "description": "Indicates the next page of results. Add `?start=<next_value>` to the request to get the next page of results."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/actions"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/actions\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bcampaign_id%7D/actions\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{campaign_id}/messages": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "campaign_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign that you want to trigger or return information about.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer",
            "default": 50,
            "maximum": 1000
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        },
        {
          "name": "metric",
          "in": "query",
          "required": false,
          "description": "Determines the metric(s) you want to return.",
          "schema": {
            "type": "string",
            "enum": [
              "attempted",
              "sent",
              "delivered",
              "opened",
              "clicked",
              "converted",
              "bounced",
              "spammed",
              "unsubscribed",
              "dropped",
              "failed",
              "undeliverable"
            ]
          }
        },
        {
          "name": "drafts",
          "in": "query",
          "required": false,
          "description": "If true, your request returns drafts rather than active/sent messages.",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "start_ts",
          "in": "query",
          "required": false,
          "description": "The beginning timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        },
        {
          "name": "end_ts",
          "in": "query",
          "required": false,
          "description": "The ending timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        }
      ],
      "get": {
        "summary": "Get campaign message metadata",
        "operationId": "getCampaignMessages",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about the deliveries (instances of messages sent to individual people) sent from a campaign. Provide query parameters to refine the metrics you want to return.\nUse the `start_ts` and `end_ts` to find messages within a time range. If your request doesn't include `start_ts` and `end_ts` parameters, we'll return the most recent 6 months of messages. If your `start_ts` and `end_ts` range is more than 12 months, we'll return 12 months of data from the most recent timestamp in your request. Timestamps reflect when deliveries were created in our system, not when they were actually sent to recipients. There may be a delay between creation and sending.",
        "tags": [
          "Campaigns"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `messages`. Each object represents a different message in your campaign.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "messages": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "description": "Describes an individual message delivery. The object contains keys for all possible parents of the message (`newsletter_id`, `broadcast_id`, etc) but only the parents of the delivery are populated. Other parent IDs are null.",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a delivery—the instance of a message intended for an individual recipient.",
                            "type": "string",
                            "readOnly": true,
                            "example": "dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek="
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "message_template_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier of the message template used to create a message.",
                            "type": "integer",
                            "readOnly": true,
                            "deprecated": true
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "customer_identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                            "required": [
                              "email",
                              "id",
                              "cio_id"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "nullable": true,
                                "format": "email",
                                "description": "A person's email address, if set.",
                                "example": "test@example.com"
                              },
                              "id": {
                                "type": "string",
                                "nullable": true,
                                "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                                "example": 2
                              },
                              "cio_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                "example": "a3000001"
                              }
                            }
                          },
                          "recipient": {
                            "x-scalar-ignore": true,
                            "description": "The recipient address for an action.",
                            "type": "string",
                            "example": "{{customer.email}}"
                          },
                          "subject": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The subject line for an `email` action.",
                            "example": "Did you get that thing I sent you?"
                          },
                          "metrics": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Metrics for an individual instance of a message; each item in the object represents the timestamp when a message achieved a particular metric. This object only contains metrics that have been recorded.",
                            "properties": {
                              "bounced": {
                                "type": "integer",
                                "description": "The timestamp when the message `bounced`."
                              },
                              "clicked": {
                                "type": "integer",
                                "description": "The timestamp when the message was `clicked`."
                              },
                              "human_clicked": {
                                "type": "integer",
                                "description": "The number of `clicked` messages excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                              },
                              "prefetch_clicked": {
                                "type": "integer",
                                "description": "The number of `clicked` messages attributed to machines. This metric is reliable starting April 20, 2025."
                              },
                              "converted": {
                                "type": "integer",
                                "description": "The timestamp when the message was `converted`."
                              },
                              "created": {
                                "type": "integer",
                                "description": "The timestamp when the message was `created`."
                              },
                              "delivered": {
                                "type": "integer",
                                "description": "The timestamp when the message was `delivered`."
                              },
                              "drafted": {
                                "type": "integer",
                                "description": "The timestamp when the message was `drafted`."
                              },
                              "dropped": {
                                "type": "integer",
                                "description": "The timestamp when the message was `dropped`."
                              },
                              "failed": {
                                "type": "integer",
                                "description": "The timestamp when the message `failed`."
                              },
                              "opened": {
                                "type": "integer",
                                "description": "The timestamp when the message was `opened`."
                              },
                              "human_opened": {
                                "type": "integer",
                                "description": "The number of `opened` messages excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                              },
                              "prefetch_opened": {
                                "type": "integer",
                                "description": "The number of `opened` messages attributed to machines. This metric is reliable starting March 20, 2025."
                              },
                              "sent": {
                                "type": "integer",
                                "description": "The timestamp when the message was `sent`."
                              },
                              "spammed": {
                                "type": "integer",
                                "description": "The timestamp when the message was marked as spam."
                              },
                              "undeliverable": {
                                "type": "integer",
                                "description": "The timestamp when the message became `undeliverable`."
                              },
                              "unsubscribed": {
                                "type": "integer",
                                "description": "The timestamp when a person unsubscribed based on this message."
                              }
                            }
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "failure_message": {
                            "type": "string",
                            "description": "Explains why a message failed, if applicable.",
                            "nullable": true
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a message in a newsletter. Newsletters can have multiple content IDs (for multi-language messages or A/B tests).",
                            "type": "integer",
                            "readOnly": true,
                            "example": 1
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          },
                          "type": {
                            "x-scalar-ignore": true,
                            "description": "The type of message/action.",
                            "type": "string",
                            "enum": [
                              "email",
                              "webhook",
                              "twilio",
                              "slack",
                              "push",
                              "in_app",
                              "whatsapp"
                            ],
                            "readOnly": true,
                            "example": "email"
                          },
                          "forgotten": {
                            "type": "boolean",
                            "description": "If true message contents are not retained by Customer.io."
                          }
                        },
                        "example": {
                          "id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=",
                          "deduplicate_id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=:1619137768",
                          "msg_template_id": 43,
                          "action_id": 215,
                          "parent_action_id": null,
                          "customer_id": null,
                          "recipient": "person@example.com",
                          "subject": "Did you get that thing I sent you?",
                          "metrics": {
                            "delivered": 1619137768,
                            "sent": 1619137768
                          },
                          "created": 1619137767,
                          "failure_message": null,
                          "newsletter_id": null,
                          "content_id": null,
                          "campaign_id": 23,
                          "broadcast_id": null,
                          "trigger_event_id": null,
                          "type": "email",
                          "forgotten": false
                        }
                      },
                      "example": [
                        {
                          "id": "dgOq6QWq6QUDAAF22PaOyFVqVxHY3rI5fsg=",
                          "deduplicate_id": "dgOq6QWq6QUDAAF22PaOyFVqVxHY3rI5fsg=:1609957872",
                          "msg_template_id": 0,
                          "action_id": 196,
                          "customer_id": "1a55d8d1-b13d-4f1f-858f-a93ef21e3a7d",
                          "customer_identifiers": {
                            "id": "1a55d8d1-b13d-4f1f-858f-a93ef21e3a7d",
                            "email": "person@example.com",
                            "cio_id": 786433
                          },
                          "recipient": "person@email.com",
                          "subject": "Did you get that thing I sent you?",
                          "metrics": {
                            "delivered": 1609957872,
                            "sent": 1609957832
                          },
                          "created": 1609957805,
                          "failure_message": null,
                          "newsletter_id": null,
                          "content_id": null,
                          "campaign_id": 89,
                          "broadcast_id": null,
                          "type": "email",
                          "forgotten": false
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/messages"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/messages\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/messages\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bcampaign_id%7D/messages\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/messages\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{campaign_id}/actions/{action_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "campaign_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign that you want to trigger or return information about.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        },
        {
          "name": "action_id",
          "in": "path",
          "required": true,
          "description": "The action you want to lookup or act on.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "Get a campaign action",
        "operationId": "getCampaignAction",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about a specific action in a campaign.",
        "tags": [
          "Campaigns"
        ],
        "responses": {
          "200": {
            "description": "Returns the requested campaign `action`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "action": {
                      "x-scalar-ignore": true,
                      "oneOf": [
                        {
                          "title": "Email / message",
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "email",
                                    "in_app",
                                    "push",
                                    "twilio",
                                    "slack",
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "from": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                  "readOnly": true,
                                  "example": "sentFrom@example.com"
                                },
                                "from_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "example": 1
                                },
                                "reply_to": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that receives replies for the message, if applicable.",
                                  "readOnly": true,
                                  "example": "replyto@example.com"
                                },
                                "reply_to_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "nullable": true,
                                  "example": 38
                                },
                                "preprocessor": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                  "enum": [
                                    "premailer"
                                  ],
                                  "readOnly": true
                                },
                                "recipient": {
                                  "x-scalar-ignore": true,
                                  "description": "The recipient address for an action.",
                                  "type": "string",
                                  "example": "{{customer.email}}"
                                },
                                "subject": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The subject line for an `email` action.",
                                  "example": "Did you get that thing I sent you?"
                                },
                                "bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "description": "The blind-copy address(es) for this action.",
                                  "type": "string"
                                },
                                "fake_bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "type": "boolean",
                                  "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                                },
                                "preheader_text": {
                                  "x-scalar-ignore": true,
                                  "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."
                                },
                                "body_amp": {
                                  "x-scalar-ignore": true,
                                  "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."
                                }
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "SMS/MMS",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of your SMS."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                                  "enum": [
                                    "twilio"
                                  ],
                                  "readOnly": true
                                },
                                "image_url": {
                                  "type": "string",
                                  "description": "The URL of the image in your SMS (MMS) message."
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                                  "example": ""
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "WhatsApp",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Welcome Message"
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                                  "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                                },
                                "body_json": {
                                  "type": "string",
                                  "description": "For visual editor content (if applicable)."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                                  "enum": [
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                                  "example": ""
                                },
                                "sender_identity_id": {
                                  "type": "integer",
                                  "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                                },
                                "send_to_unsubscribed": {
                                  "type": "boolean",
                                  "description": "Whether to send this message to unsubscribed customers."
                                },
                                "tracked": {
                                  "type": "boolean",
                                  "description": "Whether links in template parameters should be tracked.",
                                  "default": false
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "Webhook",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "webhook"
                                  ],
                                  "readOnly": true
                                },
                                "url": {
                                  "type": "string",
                                  "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                                  "example": "https://my.example.com/webhook"
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                },
                                "method": {
                                  "description": "The HTTP method for your webhook.",
                                  "type": "string",
                                  "enum": [
                                    "get",
                                    "post",
                                    "put",
                                    "delete",
                                    "patch"
                                  ],
                                  "example": "post"
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid. It could also be that the `language` requested does not exist for this action."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/actions/{action_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "summary": "Update a campaign action",
        "operationId": "updateCampaignAction",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Update the contents of a campaign action, including the body of messages and HTTP requests.",
        "tags": [
          "Campaigns"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "title": "Email / message",
                    "allOf": [
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action, if it exists.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of action.",
                            "enum": [
                              "email",
                              "in_app",
                              "push",
                              "twilio",
                              "slack",
                              "whatsapp"
                            ],
                            "readOnly": true
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "from": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The address that the message is from, relevant if the action `type` is `email`.",
                            "readOnly": true,
                            "example": "sentFrom@example.com"
                          },
                          "from_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                            "example": 1
                          },
                          "reply_to": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The address that receives replies for the message, if applicable.",
                            "readOnly": true,
                            "example": "replyto@example.com"
                          },
                          "reply_to_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                            "nullable": true,
                            "example": 38
                          },
                          "preprocessor": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                            "enum": [
                              "premailer"
                            ],
                            "readOnly": true
                          },
                          "recipient": {
                            "x-scalar-ignore": true,
                            "description": "The recipient address for an action.",
                            "type": "string",
                            "example": "{{customer.email}}"
                          },
                          "subject": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The subject line for an `email` action.",
                            "example": "Did you get that thing I sent you?"
                          },
                          "bcc": {
                            "x-scalar-ignore": true,
                            "readOnly": true,
                            "description": "The blind-copy address(es) for this action.",
                            "type": "string"
                          },
                          "fake_bcc": {
                            "x-scalar-ignore": true,
                            "readOnly": true,
                            "type": "boolean",
                            "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                          },
                          "preheader_text": {
                            "x-scalar-ignore": true,
                            "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."
                          },
                          "body_amp": {
                            "x-scalar-ignore": true,
                            "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."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "headers": {
                            "x-scalar-ignore": true,
                            "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                            "type": "string",
                            "format": "json",
                            "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "SMS/MMS",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of your SMS."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "type": {
                            "type": "string",
                            "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                            "enum": [
                              "twilio"
                            ],
                            "readOnly": true
                          },
                          "image_url": {
                            "type": "string",
                            "description": "The URL of the image in your SMS (MMS) message."
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "recipient": {
                            "type": "string",
                            "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                            "example": ""
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "WhatsApp",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          }
                        }
                      },
                      {
                        "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action.",
                            "readOnly": true,
                            "example": "Welcome Message"
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                            "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                          },
                          "body_json": {
                            "type": "string",
                            "description": "For visual editor content (if applicable)."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "type": {
                            "type": "string",
                            "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                            "enum": [
                              "whatsapp"
                            ],
                            "readOnly": true
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "recipient": {
                            "type": "string",
                            "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                            "example": ""
                          },
                          "sender_identity_id": {
                            "type": "integer",
                            "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                          },
                          "send_to_unsubscribed": {
                            "type": "boolean",
                            "description": "Whether to send this message to unsubscribed customers."
                          },
                          "tracked": {
                            "type": "boolean",
                            "description": "Whether links in template parameters should be tracked.",
                            "default": false
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "Webhook",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action, if it exists.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of action.",
                            "enum": [
                              "webhook"
                            ],
                            "readOnly": true
                          },
                          "url": {
                            "type": "string",
                            "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                            "example": "https://my.example.com/webhook"
                          },
                          "headers": {
                            "x-scalar-ignore": true,
                            "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                            "type": "string",
                            "format": "json",
                            "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                          },
                          "method": {
                            "description": "The HTTP method for your webhook.",
                            "type": "string",
                            "enum": [
                              "get",
                              "post",
                              "put",
                              "delete",
                              "patch"
                            ],
                            "example": "post"
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated campaign `action`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "action": {
                      "x-scalar-ignore": true,
                      "oneOf": [
                        {
                          "title": "Email / message",
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "email",
                                    "in_app",
                                    "push",
                                    "twilio",
                                    "slack",
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "from": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                  "readOnly": true,
                                  "example": "sentFrom@example.com"
                                },
                                "from_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "example": 1
                                },
                                "reply_to": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that receives replies for the message, if applicable.",
                                  "readOnly": true,
                                  "example": "replyto@example.com"
                                },
                                "reply_to_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "nullable": true,
                                  "example": 38
                                },
                                "preprocessor": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                  "enum": [
                                    "premailer"
                                  ],
                                  "readOnly": true
                                },
                                "recipient": {
                                  "x-scalar-ignore": true,
                                  "description": "The recipient address for an action.",
                                  "type": "string",
                                  "example": "{{customer.email}}"
                                },
                                "subject": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The subject line for an `email` action.",
                                  "example": "Did you get that thing I sent you?"
                                },
                                "bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "description": "The blind-copy address(es) for this action.",
                                  "type": "string"
                                },
                                "fake_bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "type": "boolean",
                                  "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                                },
                                "preheader_text": {
                                  "x-scalar-ignore": true,
                                  "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."
                                },
                                "body_amp": {
                                  "x-scalar-ignore": true,
                                  "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."
                                }
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "SMS/MMS",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of your SMS."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                                  "enum": [
                                    "twilio"
                                  ],
                                  "readOnly": true
                                },
                                "image_url": {
                                  "type": "string",
                                  "description": "The URL of the image in your SMS (MMS) message."
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                                  "example": ""
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "WhatsApp",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Welcome Message"
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                                  "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                                },
                                "body_json": {
                                  "type": "string",
                                  "description": "For visual editor content (if applicable)."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                                  "enum": [
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                                  "example": ""
                                },
                                "sender_identity_id": {
                                  "type": "integer",
                                  "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                                },
                                "send_to_unsubscribed": {
                                  "type": "boolean",
                                  "description": "Whether to send this message to unsubscribed customers."
                                },
                                "tracked": {
                                  "type": "boolean",
                                  "description": "Whether links in template parameters should be tracked.",
                                  "default": false
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "Webhook",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "webhook"
                                  ],
                                  "readOnly": true
                                },
                                "url": {
                                  "type": "string",
                                  "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                                  "example": "https://my.example.com/webhook"
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                },
                                "method": {
                                  "description": "The HTTP method for your webhook.",
                                  "type": "string",
                                  "enum": [
                                    "get",
                                    "post",
                                    "put",
                                    "delete",
                                    "patch"
                                  ],
                                  "example": "post"
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid. It could also be that the `language` requested does not exist for this action."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/actions/{action_id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"broadcast_id\":2,\"body\":\"string\",\"sending_state\":\"automatic\",\"from_id\":1,\"reply_to_id\":38,\"recipient\":\"{{customer.email}}\",\"subject\":\"Did you get that thing I sent you?\",\"preheader_text\":\"string\",\"body_amp\":\"string\",\"campaign_id\":5,\"headers\":\"[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"},{\\\"name\\\":\\\"X-Custom-Header\\\",\\\"value\\\":\\\"custom-value\\\"}]\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  broadcast_id: 2,\n  body: 'string',\n  sending_state: 'automatic',\n  from_id: 1,\n  reply_to_id: 38,\n  recipient: '{{customer.email}}',\n  subject: 'Did you get that thing I sent you?',\n  preheader_text: 'string',\n  body_amp: 'string',\n  campaign_id: 5,\n  headers: '[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]'\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"campaign_id\\\":5,\\\"headers\\\":\\\"[{\\\\\\\"name\\\\\\\":\\\\\\\"X-Mailgun-Tag\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"my-cool-tag\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"X-Custom-Header\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"custom-value\\\\\\\"}]\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"campaign_id\\\":5,\\\"headers\\\":\\\"[{\\\\\\\"name\\\\\\\":\\\\\\\"X-Mailgun-Tag\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"my-cool-tag\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"X-Custom-Header\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"custom-value\\\\\\\"}]\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"campaign_id\\\":5,\\\"headers\\\":\\\"[{\\\\\\\"name\\\\\\\":\\\\\\\"X-Mailgun-Tag\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"my-cool-tag\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"X-Custom-Header\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"custom-value\\\\\\\"}]\\\"}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{campaign_id}/actions/{action_id}/language/{language}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "campaign_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign that you want to trigger or return information about.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        },
        {
          "name": "action_id",
          "in": "path",
          "required": true,
          "description": "The action you want to lookup or act on.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "language",
          "in": "path",
          "required": true,
          "description": "A [language tag](/journeys/unsubscribe-faqs/#currently-supported-languages) of a language variant. If you don't provide a language (an empty string), we'll use your default language. If the language variant does not exist, we'll return an error.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Get a translation of a campaign message",
        "operationId": "getCampaignActionTranslation",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a translated version of a message in a campaign. The message is identified by the `action_id`.",
        "tags": [
          "Campaigns"
        ],
        "responses": {
          "200": {
            "description": "Returns information for the requested campaign `action` language variant.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "action": {
                      "x-scalar-ignore": true,
                      "oneOf": [
                        {
                          "title": "Email / message",
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "email",
                                    "in_app",
                                    "push",
                                    "twilio",
                                    "slack",
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "from": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                  "readOnly": true,
                                  "example": "sentFrom@example.com"
                                },
                                "from_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "example": 1
                                },
                                "reply_to": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that receives replies for the message, if applicable.",
                                  "readOnly": true,
                                  "example": "replyto@example.com"
                                },
                                "reply_to_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "nullable": true,
                                  "example": 38
                                },
                                "preprocessor": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                  "enum": [
                                    "premailer"
                                  ],
                                  "readOnly": true
                                },
                                "recipient": {
                                  "x-scalar-ignore": true,
                                  "description": "The recipient address for an action.",
                                  "type": "string",
                                  "example": "{{customer.email}}"
                                },
                                "subject": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The subject line for an `email` action.",
                                  "example": "Did you get that thing I sent you?"
                                },
                                "bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "description": "The blind-copy address(es) for this action.",
                                  "type": "string"
                                },
                                "fake_bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "type": "boolean",
                                  "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                                },
                                "preheader_text": {
                                  "x-scalar-ignore": true,
                                  "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."
                                },
                                "body_amp": {
                                  "x-scalar-ignore": true,
                                  "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."
                                }
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "SMS/MMS",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of your SMS."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                                  "enum": [
                                    "twilio"
                                  ],
                                  "readOnly": true
                                },
                                "image_url": {
                                  "type": "string",
                                  "description": "The URL of the image in your SMS (MMS) message."
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                                  "example": ""
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "WhatsApp",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Welcome Message"
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                                  "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                                },
                                "body_json": {
                                  "type": "string",
                                  "description": "For visual editor content (if applicable)."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                                  "enum": [
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                                  "example": ""
                                },
                                "sender_identity_id": {
                                  "type": "integer",
                                  "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                                },
                                "send_to_unsubscribed": {
                                  "type": "boolean",
                                  "description": "Whether to send this message to unsubscribed customers."
                                },
                                "tracked": {
                                  "type": "boolean",
                                  "description": "Whether links in template parameters should be tracked.",
                                  "default": false
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "Webhook",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "webhook"
                                  ],
                                  "readOnly": true
                                },
                                "url": {
                                  "type": "string",
                                  "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                                  "example": "https://my.example.com/webhook"
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                },
                                "method": {
                                  "description": "The HTTP method for your webhook.",
                                  "type": "string",
                                  "enum": [
                                    "get",
                                    "post",
                                    "put",
                                    "delete",
                                    "patch"
                                  ],
                                  "example": "post"
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid. It could also be that the `language` requested does not exist for this action."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/actions/{action_id}/language/{language}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "summary": "Update a translation of a campaign message",
        "operationId": "updateCampaignActionTranslation",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Update the contents of a language variant of a campaign action, including the body of the messages and HTTP requests.",
        "tags": [
          "Campaigns"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "title": "Email / message",
                    "allOf": [
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action, if it exists.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of action.",
                            "enum": [
                              "email",
                              "in_app",
                              "push",
                              "twilio",
                              "slack",
                              "whatsapp"
                            ],
                            "readOnly": true
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "from": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The address that the message is from, relevant if the action `type` is `email`.",
                            "readOnly": true,
                            "example": "sentFrom@example.com"
                          },
                          "from_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                            "example": 1
                          },
                          "reply_to": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The address that receives replies for the message, if applicable.",
                            "readOnly": true,
                            "example": "replyto@example.com"
                          },
                          "reply_to_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                            "nullable": true,
                            "example": 38
                          },
                          "preprocessor": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                            "enum": [
                              "premailer"
                            ],
                            "readOnly": true
                          },
                          "recipient": {
                            "x-scalar-ignore": true,
                            "description": "The recipient address for an action.",
                            "type": "string",
                            "example": "{{customer.email}}"
                          },
                          "subject": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The subject line for an `email` action.",
                            "example": "Did you get that thing I sent you?"
                          },
                          "bcc": {
                            "x-scalar-ignore": true,
                            "readOnly": true,
                            "description": "The blind-copy address(es) for this action.",
                            "type": "string"
                          },
                          "fake_bcc": {
                            "x-scalar-ignore": true,
                            "readOnly": true,
                            "type": "boolean",
                            "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                          },
                          "preheader_text": {
                            "x-scalar-ignore": true,
                            "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."
                          },
                          "body_amp": {
                            "x-scalar-ignore": true,
                            "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."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "headers": {
                            "x-scalar-ignore": true,
                            "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                            "type": "string",
                            "format": "json",
                            "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "SMS/MMS",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of your SMS."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "type": {
                            "type": "string",
                            "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                            "enum": [
                              "twilio"
                            ],
                            "readOnly": true
                          },
                          "image_url": {
                            "type": "string",
                            "description": "The URL of the image in your SMS (MMS) message."
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "recipient": {
                            "type": "string",
                            "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                            "example": ""
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "WhatsApp",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          }
                        }
                      },
                      {
                        "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action.",
                            "readOnly": true,
                            "example": "Welcome Message"
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                            "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                          },
                          "body_json": {
                            "type": "string",
                            "description": "For visual editor content (if applicable)."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "type": {
                            "type": "string",
                            "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                            "enum": [
                              "whatsapp"
                            ],
                            "readOnly": true
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "recipient": {
                            "type": "string",
                            "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                            "example": ""
                          },
                          "sender_identity_id": {
                            "type": "integer",
                            "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                          },
                          "send_to_unsubscribed": {
                            "type": "boolean",
                            "description": "Whether to send this message to unsubscribed customers."
                          },
                          "tracked": {
                            "type": "boolean",
                            "description": "Whether links in template parameters should be tracked.",
                            "default": false
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "Webhook",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action, if it exists.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of action.",
                            "enum": [
                              "webhook"
                            ],
                            "readOnly": true
                          },
                          "url": {
                            "type": "string",
                            "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                            "example": "https://my.example.com/webhook"
                          },
                          "headers": {
                            "x-scalar-ignore": true,
                            "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                            "type": "string",
                            "format": "json",
                            "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                          },
                          "method": {
                            "description": "The HTTP method for your webhook.",
                            "type": "string",
                            "enum": [
                              "get",
                              "post",
                              "put",
                              "delete",
                              "patch"
                            ],
                            "example": "post"
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated campaign action.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "action": {
                      "x-scalar-ignore": true,
                      "oneOf": [
                        {
                          "title": "Email / message",
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "email",
                                    "in_app",
                                    "push",
                                    "twilio",
                                    "slack",
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "from": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                  "readOnly": true,
                                  "example": "sentFrom@example.com"
                                },
                                "from_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "example": 1
                                },
                                "reply_to": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that receives replies for the message, if applicable.",
                                  "readOnly": true,
                                  "example": "replyto@example.com"
                                },
                                "reply_to_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "nullable": true,
                                  "example": 38
                                },
                                "preprocessor": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                  "enum": [
                                    "premailer"
                                  ],
                                  "readOnly": true
                                },
                                "recipient": {
                                  "x-scalar-ignore": true,
                                  "description": "The recipient address for an action.",
                                  "type": "string",
                                  "example": "{{customer.email}}"
                                },
                                "subject": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The subject line for an `email` action.",
                                  "example": "Did you get that thing I sent you?"
                                },
                                "bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "description": "The blind-copy address(es) for this action.",
                                  "type": "string"
                                },
                                "fake_bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "type": "boolean",
                                  "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                                },
                                "preheader_text": {
                                  "x-scalar-ignore": true,
                                  "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."
                                },
                                "body_amp": {
                                  "x-scalar-ignore": true,
                                  "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."
                                }
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "SMS/MMS",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of your SMS."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                                  "enum": [
                                    "twilio"
                                  ],
                                  "readOnly": true
                                },
                                "image_url": {
                                  "type": "string",
                                  "description": "The URL of the image in your SMS (MMS) message."
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                                  "example": ""
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "WhatsApp",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Welcome Message"
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                                  "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                                },
                                "body_json": {
                                  "type": "string",
                                  "description": "For visual editor content (if applicable)."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                                  "enum": [
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                                  "example": ""
                                },
                                "sender_identity_id": {
                                  "type": "integer",
                                  "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                                },
                                "send_to_unsubscribed": {
                                  "type": "boolean",
                                  "description": "Whether to send this message to unsubscribed customers."
                                },
                                "tracked": {
                                  "type": "boolean",
                                  "description": "Whether links in template parameters should be tracked.",
                                  "default": false
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "Webhook",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "campaign_id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for a campaign.",
                                  "type": "integer",
                                  "example": 5
                                },
                                "parent_action_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                                  "example": 1,
                                  "readOnly": true
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "webhook"
                                  ],
                                  "readOnly": true
                                },
                                "url": {
                                  "type": "string",
                                  "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                                  "example": "https://my.example.com/webhook"
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                },
                                "method": {
                                  "description": "The HTTP method for your webhook.",
                                  "type": "string",
                                  "enum": [
                                    "get",
                                    "post",
                                    "put",
                                    "delete",
                                    "patch"
                                  ],
                                  "example": "post"
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid. It could also be that the `language` requested does not exist for this action."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/actions/{action_id}/language/{language} \\\n  --header 'content-type: application/json' \\\n  --data '{\"broadcast_id\":2,\"body\":\"string\",\"sending_state\":\"automatic\",\"from_id\":1,\"reply_to_id\":38,\"recipient\":\"{{customer.email}}\",\"subject\":\"Did you get that thing I sent you?\",\"preheader_text\":\"string\",\"body_amp\":\"string\",\"campaign_id\":5,\"headers\":\"[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"},{\\\"name\\\":\\\"X-Custom-Header\\\",\\\"value\\\":\\\"custom-value\\\"}]\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  broadcast_id: 2,\n  body: 'string',\n  sending_state: 'automatic',\n  from_id: 1,\n  reply_to_id: 38,\n  recipient: '{{customer.email}}',\n  subject: 'Did you get that thing I sent you?',\n  preheader_text: 'string',\n  body_amp: 'string',\n  campaign_id: 5,\n  headers: '[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]'\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"campaign_id\\\":5,\\\"headers\\\":\\\"[{\\\\\\\"name\\\\\\\":\\\\\\\"X-Mailgun-Tag\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"my-cool-tag\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"X-Custom-Header\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"custom-value\\\\\\\"}]\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"campaign_id\\\":5,\\\"headers\\\":\\\"[{\\\\\\\"name\\\\\\\":\\\\\\\"X-Mailgun-Tag\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"my-cool-tag\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"X-Custom-Header\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"custom-value\\\\\\\"}]\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"campaign_id\\\":5,\\\"headers\\\":\\\"[{\\\\\\\"name\\\\\\\":\\\\\\\"X-Mailgun-Tag\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"my-cool-tag\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"X-Custom-Header\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"custom-value\\\\\\\"}]\\\"}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{campaign_id}/actions/{action_id}/metrics": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "campaign_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign that you want to trigger or return information about.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        },
        {
          "name": "action_id",
          "in": "path",
          "required": true,
          "description": "The action you want to lookup or act on.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "version",
          "in": "query",
          "required": true,
          "description": "The version of the metrics API to use.",
          "schema": {
            "type": "string",
            "enum": [
              "1",
              "2"
            ],
            "example": "2"
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        },
        {
          "name": "res",
          "in": "query",
          "description": "**Version 2 only.** Determines increment for metrics—hourly, daily, weekly, or monthly.",
          "required": false,
          "schema": {
            "type": "string",
            "enum": [
              "hours",
              "hourly",
              "days",
              "daily",
              "weeks",
              "weekly",
              "months",
              "monthly"
            ]
          }
        },
        {
          "name": "tz",
          "in": "query",
          "required": false,
          "description": "**Version 2 only.** The time zone for the metrics you are requesting. If you do not provide a time zone, we use EST. You must use the [region format](/journeys/example-timezones/#region-format).",
          "schema": {
            "type": "string",
            "example": "America/New_York"
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "**Version 2 only.** The unix timestamp for the beginning of your metrics.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp",
            "example": 1652718066
          }
        },
        {
          "name": "end",
          "in": "query",
          "required": false,
          "description": "**Version 2 only.** The unix timestamp for the end of your metrics. Limited to 10 years from the `start` parameter.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "**Version 1 only.** The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "**Version 1 only.** The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 120 months.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "Get campaign action metrics",
        "operationId": "campaignActionMetrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of metrics for an individual action. The response format and available parameters depend on the version parameter that you use with this endpoint. **We strongly recommend that you use `version=2`**:\n\n**Version 2 (Recommended):**\n- Uses `res`, `tz`, `start`, and `end` parameters\n- Based on resolution with flexible time ranges\n- Returns metrics over a period of time (resolution) from oldest to newest\n\n**Version 1 (Deprecated):**\n- Uses `period` and `steps` parameters  \n- Based on steps (days, weeks, etc)\n- Returns metrics from oldest to newest (i.e. the 0-index for any result is the oldest step/period)\n- You cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months)\n- For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made\n- `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`\n",
        "tags": [
          "Campaigns"
        ],
        "responses": {
          "200": {
            "description": "Returns action metrics by `series` based on the version and parameters of the request.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "title": "Version 2 (Recommended)",
                      "type": "object",
                      "properties": {
                        "metric": {
                          "type": "object",
                          "properties": {
                            "series": {
                              "allOf": [
                                {
                                  "x-scalar-ignore": true,
                                  "type": "object",
                                  "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                                  "properties": {
                                    "2xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "2xx responses by period, representative of webhook performance."
                                    },
                                    "3xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "3xx responses by period, representative of webhook performance."
                                    },
                                    "4xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "4xx responses by period, representative of webhook performance."
                                    },
                                    "5xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "5xx responses by period, representative of webhook performance."
                                    }
                                  }
                                },
                                {
                                  "x-scalar-ignore": true,
                                  "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                                  "type": "object",
                                  "properties": {
                                    "attempted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `attempted` messages."
                                    },
                                    "bounced": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `bounced` messages."
                                    },
                                    "clicked": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `clicked` messages."
                                    },
                                    "human_clicked": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `clicked` emails excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                    },
                                    "prefetch_clicked": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `clicked` emails attributed to machines. This metric is reliable starting April 20, 2025."
                                    },
                                    "converted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `converted` messages."
                                    },
                                    "created": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `created` messages."
                                    },
                                    "deferred": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `deferred` messages."
                                    },
                                    "delivered": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `delivered` messages."
                                    },
                                    "drafted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `drafted` messages."
                                    },
                                    "failed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `failed` messages."
                                    },
                                    "opened": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `opened` messages."
                                    },
                                    "human_opened": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `opened` emails excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                    },
                                    "prefetch_opened": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `opened` emails attributed to machines. This metric is reliable starting March 20, 2025."
                                    },
                                    "sent": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of sent messages."
                                    },
                                    "spammed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of spam complaints."
                                    },
                                    "suppressed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `suppressed` messages."
                                    },
                                    "undeliverable": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `undeliverable` messages."
                                    },
                                    "topic_unsubscribed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of topic unsubscribes in a given period."
                                    },
                                    "unsubscribed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of unsubscribes attributed to the campaign or message."
                                    }
                                  }
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    {
                      "title": "Version 1 (Deprecated)",
                      "type": "object",
                      "properties": {
                        "metric": {
                          "type": "object",
                          "properties": {
                            "series": {
                              "allOf": [
                                {
                                  "x-scalar-ignore": true,
                                  "type": "object",
                                  "description": "Returns metrics in accordance with the `period` you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `period` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                                  "properties": {
                                    "2xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "2xx responses by period, representative of webhook performance."
                                    },
                                    "3xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "3xx responses by period, representative of webhook performance."
                                    },
                                    "4xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "4xx responses by period, representative of webhook performance."
                                    },
                                    "5xx": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "5xx responses by period, representative of webhook performance."
                                    }
                                  }
                                },
                                {
                                  "x-scalar-ignore": true,
                                  "description": "Returns metrics in accordance with the `period` you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `period` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                                  "type": "object",
                                  "properties": {
                                    "attempted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `attempted` messages."
                                    },
                                    "bounced": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `bounced` messages."
                                    },
                                    "clicked": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `clicked` messages."
                                    },
                                    "converted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `converted` messages."
                                    },
                                    "created": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `created` messages."
                                    },
                                    "deferred": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `deferred` messages."
                                    },
                                    "delivered": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `delivered` messages."
                                    },
                                    "drafted": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `drafted` messages."
                                    },
                                    "failed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `failed` messages."
                                    },
                                    "opened": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `opened` messages."
                                    },
                                    "sent": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of sent messages."
                                    },
                                    "spammed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of spam complaints."
                                    },
                                    "suppressed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `suppressed` messages."
                                    },
                                    "undeliverable": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of `undeliverable` messages."
                                    },
                                    "topic_unsubscribed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of topic unsubscribes in a given period."
                                    },
                                    "unsubscribed": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "The number of unsubscribes attributed to the campaign or message."
                                    }
                                  }
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/actions/{action_id}/metrics"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/metrics\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/metrics\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/metrics\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/metrics\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{campaign_id}/actions/{action_id}/metrics/links": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "campaign_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign that you want to trigger or return information about.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        },
        {
          "name": "action_id",
          "in": "path",
          "required": true,
          "description": "The action you want to lookup or act on.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        }
      ],
      "get": {
        "summary": "Get link metrics for an action",
        "operationId": "campaignActionLinks",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns link click metrics for an individual action. Unless you specify otherwise, the response contains data for the maximum period by days (45 days).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Campaigns"
        ],
        "responses": {
          "200": {
            "description": "Returns action metrics by `series` (with increments are based on the `period` and `step` in your request) for the campaign.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "links": {
                      "type": "array",
                      "description": "Each object in the array represents a link in your action.",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "link": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The ID of the link.",
                                "example": 1234
                              },
                              "href": {
                                "type": "string",
                                "description": "The link destination—a URL, mailto, etc.",
                                "example": "https://docs.customer.io"
                              }
                            }
                          },
                          "metric": {
                            "type": "object",
                            "description": "Contains metrics for the link.",
                            "properties": {
                              "series": {
                                "type": "object",
                                "properties": {
                                  "clicked": {
                                    "type": "array",
                                    "description": "An array of results from oldest to newest, where each result indicates a period.",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "example": [
                                      1,
                                      3,
                                      5,
                                      7
                                    ]
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `campaignID` or `actionID` is invalid."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/actions/{action_id}/metrics/links"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/metrics/links\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/metrics/links\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/metrics/links\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/actions/%7Baction_id%7D/metrics/links\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{campaign_id}/journey_metrics": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "campaign_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign that you want to trigger or return information about.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        },
        {
          "name": "start",
          "in": "query",
          "description": "The unix timestamp for the beginning of your journey metrics report.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "unix timestamp",
            "example": 1652718066
          }
        },
        {
          "name": "end",
          "in": "query",
          "description": "The unix timestamp for the end of your journey metrics report.",
          "required": true,
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        },
        {
          "name": "res",
          "in": "query",
          "description": "Determines increment for metrics—hourly, daily, weekly, or monthly.",
          "required": true,
          "schema": {
            "type": "string",
            "enum": [
              "hours",
              "hourly",
              "days",
              "daily",
              "weeks",
              "weekly",
              "months",
              "monthly"
            ]
          }
        }
      ],
      "get": {
        "summary": "Get campaign journey metrics",
        "operationId": "campaignJourneyMetrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of Journey Metrics for your campaign. These metrics show how many people triggered your campaign, were messaged, etc for the time period and \"resolution\" you set. You must provide the `start`, `end`, and `resolution` parameters or your request will return `400`.\n\nMetrics in the response are arrays, and each index in the array corresponds to the `resolution` in your request. If you request metrics in `days`, the first result in each metric array is the first day of results and each successive increment represents another day. \n\nEach increment represents the number of journeys that started within a time period and eventually achieved a particular metric. For example, array index 0 for the `converted` metric represents the number of journeys that started on the first day/month of results that achieved a conversion.\n",
        "tags": [
          "Campaigns"
        ],
        "responses": {
          "200": {
            "description": "Each `journey_metric` item in the response is an array. Each item in a metric array represents the number of journeys that started within the time increment (\"resolution\"—day or month) and eventually achieved that metric.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "journey_metric": {
                      "type": "object",
                      "properties": {
                        "started": {
                          "description": "The total number of people who meet the trigger criteria for a journey. This count occurs before filters are applied.",
                          "type": "array",
                          "items": {
                            "type": "integer"
                          }
                        },
                        "activated": {
                          "description": "People who started a journey and were not filtered out before they experienced an action.",
                          "type": "array",
                          "items": {
                            "type": "integer"
                          }
                        },
                        "exited_early": {
                          "description": "People who started a journey but stopped meeting the campaign trigger/filter criteria.",
                          "type": "array",
                          "items": {
                            "type": "integer"
                          }
                        },
                        "finished": {
                          "description": "People who finished the journey.",
                          "type": "array",
                          "items": {
                            "type": "integer"
                          }
                        },
                        "converted": {
                          "description": "People who matched the conversion criteria for the campaign.",
                          "type": "array",
                          "items": {
                            "type": "integer"
                          }
                        },
                        "never_activated": {
                          "description": "People who started a journey but were filtered out before they could experience any of the actions in the journey.",
                          "type": "array",
                          "items": {
                            "type": "integer"
                          }
                        },
                        "messaged": {
                          "description": "People who experienced at least one non-delay action in the journey. This metric typically represents journeys in progress.",
                          "type": "array",
                          "items": {
                            "type": "integer"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "You may have omitted query parameters or the `start` time occurred after the `end` time. The `campaignID` or `actionID` may also be invalid."
          },
          "404": {
            "description": "The campaign and/or action do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "label": "cURL",
            "lang": "curl",
            "source": "curl --request GET \\\n--url 'https://api.customer.io/v1/campaigns/{campaign_id}/journey_metrics?start=1650151266&end=1652052066&resolution=weeks' \\\n--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'\n"
          },
          {
            "label": "Node.js (SDK)",
            "lang": "javascript",
            "source": "const http = require(\"https\");\n\nconst options = {\n  method: \"GET\",\n  hostname: \"api.customer.io\",\n  port: null,\n  path: \"/v1/campaigns/{campaign_id}/journey_metrics?start=1650151266&end=1650151266&resolution=weeks\",\n  headers: {\n    Authorization: \"Bearer REPLACE_BEARER_TOKEN\",\n  },\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();\n"
          },
          {
            "label": "Ruby (SDK)",
            "lang": "ruby",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI('https://api.customer.io/v1/campaigns/{campaign_id}/journey_metrics')\nparams = { start: '1650151266', end: '1652052066', resolution: 'weeks' }\nurl.query = URI.encode_www_form(params)\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\nrequest['Authorization'] = 'Bearer REPLACE_BEARER_TOKEN'\n\nresponse = http.request(request)\nputs response.read_body\n"
          },
          {
            "label": "Python (SDK)",
            "lang": "python",
            "source": "import requests\n\nurl = \"https://api.customer.io/v1/campaigns/{campaign_id}/journey_metrics\"\n\nheaders = { \"Authorization\": \"Bearer REPLACE_BEARER_TOKEN\" }\n\nparams = {\n    \"start\": \"1650151266\",\n    \"end\": \"1652052066\",\n    \"resolution\": \"weeks\"\n}\n\nr = requests.get(url=url, params=params, headers=headers)\n\ndata = r.json()\n\nprint(data)\n"
          },
          {
            "label": "Go (SDK)",
            "lang": "go",
            "source": "package main\n\nimport (\n  \"fmt\"\n  \"io/ioutil\"\n  \"net/http\"\n)\n\nfunc main() {\n\n  url := \"https://api.customer.io/v1/campaigns/{campaign_id}/journey_metrics\"\n\n  req, _ := http.NewRequest(\"GET\", url, nil)\n  req.Header.Add(\"Authorization\", \"Bearer REPLACE_BEARER_TOKEN\")\n\n  params := req.URL.Query()\n  params.Add(\"start\", \"1650151266\")\n  params.Add(\"end\", \"1652052066\")\n  params.Add(\"resolution\", \"weeks\")\n  req.URL.RawQuery = params.Encode()\n\n  res, _ := http.DefaultClient.Do(req)\n\n  defer res.Body.Close()\n  body, _ := ioutil.ReadAll(res.Body)\n\n  fmt.Println(res)\n  fmt.Println(string(body))\n\n}\n"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{campaign_id}/journey_metrics"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bcampaign_id%7D/journey_metrics\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/journey_metrics\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bcampaign_id%7D/journey_metrics\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bcampaign_id%7D/journey_metrics\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/activities": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "operationId": "listActivities",
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "description": "The type of activity you want to search for. Types with `_o:<object_type_id>` are for objects and types with `_r:<object_type_id>` are for relationships.",
            "in": "query",
            "required": false,
            "schema": {
              "x-scalar-ignore": true,
              "description": "The type of activity. Types with `_o:<object_type_id>` are for objects and types with `_r:<object_type_id>` are for relationships.",
              "type": "string",
              "enum": [
                "add_relationship",
                "anon_merge",
                "attempted_action",
                "attempted_email",
                "attempted_in_app",
                "attempted_push",
                "attempted_slack",
                "attempted_twilio",
                "attempted_webhook",
                "attempted_whatsapp",
                "attribute_change",
                "bounced_action",
                "bounced_email",
                "bounced_push",
                "bounced_twilio",
                "bounced_whatsapp",
                "clicked_action",
                "clicked_content",
                "clicked_email",
                "clicked_in_app",
                "clicked_push",
                "clicked_twilio",
                "clicked_webhook",
                "converted_action",
                "converted_content",
                "converted_email",
                "converted_in_app",
                "converted_slack",
                "converted_twilio",
                "converted_webhook",
                "converted_whatsapp",
                "deferred_action",
                "deferred_email",
                "deferred_in_app",
                "deferred_push",
                "deferred_slack",
                "deferred_twilio",
                "deferred_webhook",
                "deferred_whatsapp",
                "delete_relationship",
                "delivered_action",
                "delivered_email",
                "delivered_push",
                "delivered_twilio",
                "delivered_whatsapp",
                "device_change",
                "drafted_action",
                "drafted_email",
                "drafted_in_app",
                "drafted_push",
                "drafted_slack",
                "drafted_twilio",
                "drafted_webhook",
                "dropped_action",
                "dropped_email",
                "dropped_push",
                "dropped_twilio",
                "dropped_webhook",
                "dropped_whatasapp",
                "event",
                "failed_action",
                "failed_attribute_change",
                "failed_batch_update",
                "failed_email",
                "failed_event",
                "failed_in_app",
                "failed_object_journeys",
                "failed_push",
                "failed_query_collection",
                "failed_slack",
                "failed_twilio",
                "failed_webhook",
                "failed_whatsapp",
                "opened_action",
                "opened_email",
                "opened_in_app",
                "opened_push",
                "page",
                "profile_create",
                "profile_delete",
                "profile_merge",
                "relationship_attribute_change",
                "relationship_failed_attribute_change",
                "screen",
                "sent_action",
                "sent_email",
                "sent_in_app",
                "sent_push",
                "sent_slack",
                "sent_twilio",
                "sent_webhook",
                "sent_whatsapp",
                "skipped_update",
                "spammed_email",
                "suppressed_twilio",
                "suppressed_whatsapp",
                "topic_unsubscribed_email",
                "undeliverable_action",
                "undeliverable_email",
                "undeliverable_in_app",
                "undeliverable_push",
                "undeliverable_slack",
                "undeliverable_twilio",
                "undeliverable_webhook",
                "undeliverable_whatsapp",
                "unsubscribed_action",
                "unsubscribed_email",
                "viewed_content",
                "webhook_event",
                "_o:<object_type_id>:add_relationship",
                "_o:<object_type_id>:attribute_change",
                "_o:<object_type_id>:create",
                "_o:<object_type_id>:delete",
                "_o:<object_type_id>:delete_relationship",
                "_o:<object_type_id>:failed_attribute_change",
                "_r:<object_type_id>:attribute_change",
                "_r:<object_type_id>:failed_attribute_change"
              ],
              "example": "sent_email"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "The name of the event or attribute you want to return.",
            "required": false,
            "schema": {
              "type": "string",
              "example": "something_happened"
            }
          },
          {
            "name": "deleted",
            "in": "query",
            "description": "If true, return results for deleted people.",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "customer_id",
            "required": false,
            "in": "query",
            "description": "The `identifier` of the person you want to look up. By default, this is a person's `id`. You can use the `id_type` parameter to look up a person by `email` or `cio_id`.\n\nIf you use a person's `cio_id`, you must prefix the value value with `cio_` when using it to find or reference a person (i.e. `cio_03000010` for a `cio_id` value of 03000010).\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id_type",
            "required": false,
            "in": "query",
            "description": "The type of `customer_id` you want to use to reference a person. If you don't provide this parameter, we assume that the `customer_id` in your request is a person's `id`.",
            "schema": {
              "type": "string",
              "enum": [
                "id",
                "email",
                "cio_id"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "The maximum number of results you want to retrieve per page.",
            "schema": {
              "type": "integer",
              "default": 10,
              "maximum": 100
            }
          }
        ],
        "summary": "List activities",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "This endpoint returns a list of \"activities\" for people, similar to your workspace's Activity Logs. This endpoint is guaranteed to return activity history within the past 30 days. It _might_ return data older than 30 days in some circumstances, but activites older than 30 days are not guaranteed.",
        "tags": [
          "Activities"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `activities`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "activities": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "customer_identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                            "required": [
                              "email",
                              "id",
                              "cio_id"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "nullable": true,
                                "format": "email",
                                "description": "A person's email address, if set.",
                                "example": "test@example.com"
                              },
                              "id": {
                                "type": "string",
                                "nullable": true,
                                "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                                "example": 2
                              },
                              "cio_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                "example": "a3000001"
                              }
                            }
                          },
                          "data": {
                            "oneOf": [
                              {
                                "title": "Message delivery",
                                "type": "object",
                                "properties": {
                                  "delivered": {
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date-time when the message was delivered, if applicable.",
                                    "nullable": true
                                  },
                                  "delivery_id": {
                                    "type": "string",
                                    "description": "The message ID."
                                  },
                                  "opened": {
                                    "type": "boolean",
                                    "nullable": true,
                                    "description": "Indicates whether or not a customer opened a message, if the message was delivered."
                                  }
                                },
                                "example": {
                                  "delivery_id": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ==",
                                  "opened": null,
                                  "delivered": null
                                }
                              },
                              {
                                "title": "Attribute change",
                                "description": "The name of the object is the attribute that changed.",
                                "type": "object",
                                "additionalProperties": {
                                  "x-scalar-ignore": true,
                                  "type": "object",
                                  "properties": {
                                    "from": {
                                      "type": "string",
                                      "description": "The old attribute value. If empty, the customer probably didn't bear the attribute before this action."
                                    },
                                    "to": {
                                      "type": "string",
                                      "description": "The new attribute value."
                                    }
                                  }
                                },
                                "example": {
                                  "email": {
                                    "from": "newPerson@example.com",
                                    "to": "newPerson@customer.io"
                                  }
                                }
                              }
                            ]
                          },
                          "delivery_id": {
                            "type": "string",
                            "description": "The message ID.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "delivery_type": {
                            "type": "string",
                            "description": "The recipient device, if applicable.",
                            "enum": [
                              "ios",
                              "android",
                              "email",
                              "phone"
                            ],
                            "example": "email"
                          },
                          "id": {
                            "description": "The identifier for the action.",
                            "type": "string",
                            "example": "01AK4N8V8G8KVA4HN8Y50CCZ59"
                          },
                          "timestamp": {
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date and time when the action occurred.",
                            "example": 1397566226
                          },
                          "type": {
                            "x-scalar-ignore": true,
                            "description": "The type of activity. Types with `_o:<object_type_id>` are for objects and types with `_r:<object_type_id>` are for relationships.",
                            "type": "string",
                            "enum": [
                              "add_relationship",
                              "anon_merge",
                              "attempted_action",
                              "attempted_email",
                              "attempted_in_app",
                              "attempted_push",
                              "attempted_slack",
                              "attempted_twilio",
                              "attempted_webhook",
                              "attempted_whatsapp",
                              "attribute_change",
                              "bounced_action",
                              "bounced_email",
                              "bounced_push",
                              "bounced_twilio",
                              "bounced_whatsapp",
                              "clicked_action",
                              "clicked_content",
                              "clicked_email",
                              "clicked_in_app",
                              "clicked_push",
                              "clicked_twilio",
                              "clicked_webhook",
                              "converted_action",
                              "converted_content",
                              "converted_email",
                              "converted_in_app",
                              "converted_slack",
                              "converted_twilio",
                              "converted_webhook",
                              "converted_whatsapp",
                              "deferred_action",
                              "deferred_email",
                              "deferred_in_app",
                              "deferred_push",
                              "deferred_slack",
                              "deferred_twilio",
                              "deferred_webhook",
                              "deferred_whatsapp",
                              "delete_relationship",
                              "delivered_action",
                              "delivered_email",
                              "delivered_push",
                              "delivered_twilio",
                              "delivered_whatsapp",
                              "device_change",
                              "drafted_action",
                              "drafted_email",
                              "drafted_in_app",
                              "drafted_push",
                              "drafted_slack",
                              "drafted_twilio",
                              "drafted_webhook",
                              "dropped_action",
                              "dropped_email",
                              "dropped_push",
                              "dropped_twilio",
                              "dropped_webhook",
                              "dropped_whatasapp",
                              "event",
                              "failed_action",
                              "failed_attribute_change",
                              "failed_batch_update",
                              "failed_email",
                              "failed_event",
                              "failed_in_app",
                              "failed_object_journeys",
                              "failed_push",
                              "failed_query_collection",
                              "failed_slack",
                              "failed_twilio",
                              "failed_webhook",
                              "failed_whatsapp",
                              "opened_action",
                              "opened_email",
                              "opened_in_app",
                              "opened_push",
                              "page",
                              "profile_create",
                              "profile_delete",
                              "profile_merge",
                              "relationship_attribute_change",
                              "relationship_failed_attribute_change",
                              "screen",
                              "sent_action",
                              "sent_email",
                              "sent_in_app",
                              "sent_push",
                              "sent_slack",
                              "sent_twilio",
                              "sent_webhook",
                              "sent_whatsapp",
                              "skipped_update",
                              "spammed_email",
                              "suppressed_twilio",
                              "suppressed_whatsapp",
                              "topic_unsubscribed_email",
                              "undeliverable_action",
                              "undeliverable_email",
                              "undeliverable_in_app",
                              "undeliverable_push",
                              "undeliverable_slack",
                              "undeliverable_twilio",
                              "undeliverable_webhook",
                              "undeliverable_whatsapp",
                              "unsubscribed_action",
                              "unsubscribed_email",
                              "viewed_content",
                              "webhook_event",
                              "_o:<object_type_id>:add_relationship",
                              "_o:<object_type_id>:attribute_change",
                              "_o:<object_type_id>:create",
                              "_o:<object_type_id>:delete",
                              "_o:<object_type_id>:delete_relationship",
                              "_o:<object_type_id>:failed_attribute_change",
                              "_r:<object_type_id>:attribute_change",
                              "_r:<object_type_id>:failed_attribute_change"
                            ],
                            "example": "sent_email"
                          }
                        }
                      }
                    },
                    "next": {
                      "x-scalar-ignore": true,
                      "type": "string",
                      "description": "Indicates the next page of results. Add `?start=<next_value>` to the request to get the next page of results."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url 'https://api.customer.io/v1/activities?start=SOME_STRING_VALUE&type=sent_email&name=something_happened&deleted=SOME_BOOLEAN_VALUE&customer_id=SOME_STRING_VALUE&id_type=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/activities?start=SOME_STRING_VALUE&type=sent_email&name=something_happened&deleted=SOME_BOOLEAN_VALUE&customer_id=SOME_STRING_VALUE&id_type=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/activities?start=SOME_STRING_VALUE&type=sent_email&name=something_happened&deleted=SOME_BOOLEAN_VALUE&customer_id=SOME_STRING_VALUE&id_type=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/activities?start=SOME_STRING_VALUE&type=sent_email&name=something_happened&deleted=SOME_BOOLEAN_VALUE&customer_id=SOME_STRING_VALUE&id_type=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/activities?start=SOME_STRING_VALUE&type=sent_email&name=something_happened&deleted=SOME_BOOLEAN_VALUE&customer_id=SOME_STRING_VALUE&id_type=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/assets": {
      "get": {
        "tags": [
          "Assets"
        ],
        "summary": "List file assets",
        "description": "Returns a paginated list of file assets. Supports filtering by parent folder and choosing between direct children or the entire folder subtree.",
        "operationId": "listAssets",
        "parameters": [
          {
            "name": "parent_folder_id",
            "in": "query",
            "description": "Filter by parent folder. Must reference an existing folder.",
            "schema": {
              "type": "string",
              "minimum": 0,
              "format": "uuid"
            }
          },
          {
            "name": "direct_descendants_only",
            "in": "query",
            "description": "If true, this returns only children of the parent folder.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page number of results you want to display. Use with `limit`.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the number of results per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of file assets with metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "assets": {
                      "type": "array",
                      "description": "The list of file assets matching the query.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The unique identifier of the file asset."
                          },
                          "name": {
                            "type": "string",
                            "description": "The display name of the file asset."
                          },
                          "parent_folder_id": {
                            "type": "string",
                            "nullable": true,
                            "description": "The ID of the parent folder, or null if the asset is at the root level."
                          },
                          "path": {
                            "type": "string",
                            "description": "The storage URL or path where the file is hosted."
                          },
                          "size": {
                            "type": "integer",
                            "description": "The file size in bytes."
                          },
                          "created": {
                            "type": "integer",
                            "format": "int64",
                            "description": "Unix timestamp when the asset was created."
                          },
                          "updated": {
                            "type": "integer",
                            "format": "int64",
                            "description": "Unix timestamp when the asset was last updated."
                          }
                        }
                      }
                    },
                    "meta": {
                      "type": "object",
                      "description": "Metadata about the paginated response including pagination details and applied filters.",
                      "properties": {
                        "pagination": {
                          "type": "object",
                          "description": "Pagination details for the current result set.",
                          "properties": {
                            "page": {
                              "type": "integer",
                              "description": "The page number of results you're on."
                            },
                            "limit": {
                              "type": "integer",
                              "description": "The number of results per page."
                            },
                            "total": {
                              "type": "integer",
                              "description": "The total number of folders."
                            }
                          }
                        },
                        "filters": {
                          "type": "object",
                          "description": "The filters applied in your request.",
                          "properties": {
                            "parent_folder_id": {
                              "type": "string",
                              "nullable": true,
                              "description": "The parent folder ID filter that was applied, or null if not filtering by parent."
                            },
                            "direct_descendants_only": {
                              "type": "boolean",
                              "description": "Whether the results were limited to direct descendants only."
                            }
                          },
                          "example": {
                            "parent_folder_id": "123e4567-e89b-12d3-a456-426614174000",
                            "direct_descendants_only": true,
                            "sort_by": "created",
                            "sort_order": "desc",
                            "created_before": 1714732800,
                            "created_after": null,
                            "updated_before": null,
                            "updated_after": null
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url 'https://api.customer.io/v1/assets?parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/assets?parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/assets?parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/assets?parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/assets?parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/assets/files": {
      "post": {
        "tags": [
          "Assets"
        ],
        "summary": "Create a file asset",
        "description": "Creates a new file asset. Supports two modes:\n\n**Multipart upload** (`Content-Type: multipart/form-data`): Upload the file directly. The server uploads the file to cloud storage and creates the asset record in a single request.\n\n**JSON** (`Content-Type: application/json`): Create an asset record from a previously uploaded file. Use this with the sign-then-upload flow where the client uploads the file to storage separately and then registers the asset with the resulting path and size.\n\nAccepted file types: `image/bmp`, `image/jpeg`, `image/jpg`, `image/png`, `image/gif`, `application/pdf`. Maximum file size: 3 MB.\n",
        "operationId": "createAsset",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "file"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The file to upload. Must be an accepted image or PDF type and no larger than 3 MB."
                  },
                  "name": {
                    "type": "string",
                    "description": "Custom display name for the asset. If omitted, the uploaded file's original filename is used."
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "The ID of the parent folder. Omit or set to \"0\" to place the asset at the root level."
                  }
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "path"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Display name for the asset. Path separators, control characters, and symbols are stripped."
                  },
                  "path": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The storage URL or path of the previously uploaded file."
                  },
                  "size": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "File size in bytes. Must be non-negative."
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "The ID of the parent folder. Omit or set to \"0\" to place the asset at the root level."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The newly created file asset.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "asset": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The unique identifier of the file asset."
                        },
                        "name": {
                          "type": "string",
                          "description": "The display name of the file asset."
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "nullable": true,
                          "description": "The ID of the parent folder, or null if the asset is at the root level."
                        },
                        "path": {
                          "type": "string",
                          "description": "The storage URL or path where the file is hosted."
                        },
                        "size": {
                          "type": "integer",
                          "description": "The file size in bytes."
                        },
                        "created": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp when the asset was created."
                        },
                        "updated": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp when the asset was last updated."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"string\",\n  \"path\": \"string\"\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --url https://api.customer.io/v1/assets/files \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"path\":\"string\",\"size\":0,\"parent_folder_id\":\"string\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/assets/files\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({name: 'string', path: 'string', size: 0, parent_folder_id: 'string'}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/assets/files\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"path\\\":\\\"string\\\",\\\"size\\\":0,\\\"parent_folder_id\\\":\\\"string\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"path\\\":\\\"string\\\",\\\"size\\\":0,\\\"parent_folder_id\\\":\\\"string\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/assets/files\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/assets/files\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"path\\\":\\\"string\\\",\\\"size\\\":0,\\\"parent_folder_id\\\":\\\"string\\\"}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/assets/files/{id}": {
      "get": {
        "tags": [
          "Assets"
        ],
        "summary": "Get a file asset",
        "description": "Retrieves a single file asset by its ID. Returns 404 if the asset does not exist or is a folder.",
        "operationId": "getAsset",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the resource.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested file asset.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "asset": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The unique identifier of the file asset."
                        },
                        "name": {
                          "type": "string",
                          "description": "The display name of the file asset."
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "nullable": true,
                          "description": "The ID of the parent folder, or null if the asset is at the root level."
                        },
                        "path": {
                          "type": "string",
                          "description": "The storage URL or path where the file is hosted."
                        },
                        "size": {
                          "type": "integer",
                          "description": "The file size in bytes."
                        },
                        "created": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp when the asset was created."
                        },
                        "updated": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp when the asset was last updated."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url https://api.customer.io/v1/assets/files/{id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/assets/files/%7Bid%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/assets/files/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/assets/files/%7Bid%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/assets/files/%7Bid%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "tags": [
          "Assets"
        ],
        "summary": "Update a file asset",
        "description": "Updates the name and/or parent folder of a file asset. The file itself (path, size) cannot be changed. At least one of `name` or `parent_folder_id` must be provided.",
        "operationId": "updateAsset",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the resource.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "New display name for the asset. Cannot be blank after trimming."
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "The ID of the new parent folder. Set to `null` to move the asset to the root level."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "File asset updated successfully."
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --url https://api.customer.io/v1/assets/files/{id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"parent_folder_id\":\"string\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/assets/files/%7Bid%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({name: 'string', parent_folder_id: 'string'}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/assets/files/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"string\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"string\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/assets/files/%7Bid%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/assets/files/%7Bid%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"string\\\"}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "delete": {
        "tags": [
          "Assets"
        ],
        "summary": "Delete a file asset",
        "description": "Soft-deletes a file asset by setting its `deleted_at` timestamp. The underlying file in cloud storage is not removed. Assets that are currently in use cannot be deleted.",
        "operationId": "deleteAsset",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the resource.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "204": {
            "description": "File asset deleted successfully."
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --url https://api.customer.io/v1/assets/files/{id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/assets/files/%7Bid%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/assets/files/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/assets/files/%7Bid%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/assets/files/%7Bid%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/assets/folders": {
      "get": {
        "tags": [
          "Assets"
        ],
        "summary": "List folders",
        "description": "Returns a paginated list of asset folders. Supports filtering by parent folder and choosing between direct children or the entire folder subtree.",
        "operationId": "listAssetFolders",
        "parameters": [
          {
            "name": "parent_folder_id",
            "in": "query",
            "description": "Filter by parent folder. Must reference an existing folder.",
            "schema": {
              "type": "string",
              "minimum": 0,
              "format": "uuid"
            }
          },
          {
            "name": "direct_descendants_only",
            "in": "query",
            "description": "If true, this returns only children of the parent folder.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page number of results you want to display. Use with `limit`.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the number of results per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of folders with metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "folders": {
                      "type": "array",
                      "description": "The list of folders matching the query.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID of folder",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the folder."
                          },
                          "parent_folder_id": {
                            "type": "string",
                            "nullable": true,
                            "description": "The ID of the parent folder. Returns `null` if there is no parent, which means the folder is in the root directory.",
                            "format": "uuid"
                          },
                          "created": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "Timestamp of when the folder was created."
                          },
                          "updated": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "Timestamp of last update to the folder."
                          }
                        },
                        "example": {
                          "id": "123e4567-e89b-12d3-a456-426614174000",
                          "name": "Product Announcements",
                          "parent_folder_id": null,
                          "created": 1714732800,
                          "updated": 1714732800
                        }
                      }
                    },
                    "meta": {
                      "type": "object",
                      "description": "Metadata about the paginated response including pagination details and applied filters.",
                      "properties": {
                        "pagination": {
                          "type": "object",
                          "description": "Pagination details for the current result set.",
                          "properties": {
                            "page": {
                              "type": "integer",
                              "description": "The page number of results you're on."
                            },
                            "limit": {
                              "type": "integer",
                              "description": "The number of results per page."
                            },
                            "total": {
                              "type": "integer",
                              "description": "The total number of folders."
                            }
                          }
                        },
                        "filters": {
                          "type": "object",
                          "description": "The filters applied in your request.",
                          "properties": {
                            "parent_folder_id": {
                              "type": "string",
                              "nullable": true,
                              "description": "The parent folder ID filter that was applied, or null if not filtering by parent."
                            },
                            "direct_descendants_only": {
                              "type": "boolean",
                              "description": "Whether the results were limited to direct descendants only."
                            }
                          },
                          "example": {
                            "parent_folder_id": "123e4567-e89b-12d3-a456-426614174000",
                            "direct_descendants_only": true,
                            "sort_by": "created",
                            "sort_order": "desc",
                            "created_before": 1714732800,
                            "created_after": null,
                            "updated_before": null,
                            "updated_after": null
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url 'https://api.customer.io/v1/assets/folders?parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/assets/folders?parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/assets/folders?parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/assets/folders?parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/assets/folders?parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "post": {
        "tags": [
          "Assets"
        ],
        "summary": "Create a folder",
        "description": "Creates a new folder for organizing file assets. Folder names must be unique within the same parent folder.",
        "operationId": "createAssetFolder",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Display name for the folder. Must be unique among siblings in the same parent folder."
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "The ID of the parent folder. Omit or set to \"0\" to create at the root level."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The newly created folder.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "folder": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID of folder",
                          "format": "uuid"
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the folder."
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "nullable": true,
                          "description": "The ID of the parent folder. Returns `null` if there is no parent, which means the folder is in the root directory.",
                          "format": "uuid"
                        },
                        "created": {
                          "type": "integer",
                          "format": "Unix timestamp",
                          "description": "Timestamp of when the folder was created."
                        },
                        "updated": {
                          "type": "integer",
                          "format": "Unix timestamp",
                          "description": "Timestamp of last update to the folder."
                        }
                      },
                      "example": {
                        "id": "123e4567-e89b-12d3-a456-426614174000",
                        "name": "Product Announcements",
                        "parent_folder_id": null,
                        "created": 1714732800,
                        "updated": 1714732800
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"string\"\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --url https://api.customer.io/v1/assets/folders \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"parent_folder_id\":\"string\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/assets/folders\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({name: 'string', parent_folder_id: 'string'}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/assets/folders\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"string\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"string\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/assets/folders\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/assets/folders\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"string\\\"}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/assets/folders/{id}": {
      "get": {
        "tags": [
          "Assets"
        ],
        "summary": "Get a folder",
        "description": "Retrieves a single folder by its ID.",
        "operationId": "getAssetFolder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the resource.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested folder.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "folder": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID of folder",
                          "format": "uuid"
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the folder."
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "nullable": true,
                          "description": "The ID of the parent folder. Returns `null` if there is no parent, which means the folder is in the root directory.",
                          "format": "uuid"
                        },
                        "created": {
                          "type": "integer",
                          "format": "Unix timestamp",
                          "description": "Timestamp of when the folder was created."
                        },
                        "updated": {
                          "type": "integer",
                          "format": "Unix timestamp",
                          "description": "Timestamp of last update to the folder."
                        }
                      },
                      "example": {
                        "id": "123e4567-e89b-12d3-a456-426614174000",
                        "name": "Product Announcements",
                        "parent_folder_id": null,
                        "created": 1714732800,
                        "updated": 1714732800
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url https://api.customer.io/v1/assets/folders/{id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/assets/folders/%7Bid%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/assets/folders/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/assets/folders/%7Bid%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/assets/folders/%7Bid%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "tags": [
          "Assets"
        ],
        "summary": "Update a folder",
        "description": "Updates the name and/or parent folder of an existing folder. At least one of `name` or `parent_folder_id` must be provided. Moving a folder into itself or one of its descendants is not allowed (cycle detection).",
        "operationId": "updateAssetFolder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the resource.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "New display name for the folder. Cannot be blank after trimming."
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "nullable": true,
                    "description": "The ID of the new parent folder. Set to `null` to move the folder to the root level. Cannot be the folder itself or one of its descendants."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Folder updated successfully."
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --url https://api.customer.io/v1/assets/folders/{id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"parent_folder_id\":\"string\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/assets/folders/%7Bid%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({name: 'string', parent_folder_id: 'string'}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/assets/folders/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"string\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"string\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/assets/folders/%7Bid%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/assets/folders/%7Bid%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"string\\\"}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "delete": {
        "tags": [
          "Assets"
        ],
        "summary": "Delete a folder",
        "description": "Soft-deletes an empty folder. Folders that still contain files or subfolders cannot be deleted. Assets marked as in use also prevent deletion.",
        "operationId": "deleteAssetFolder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the resource.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Folder deleted successfully."
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --url https://api.customer.io/v1/assets/folders/{id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/assets/folders/%7Bid%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/assets/folders/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/assets/folders/%7Bid%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/assets/folders/%7Bid%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "summary": "List broadcasts",
        "operationId": "listBroadcasts",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of your API-triggered broadcasts and associated metadata.",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of API-triggered broadcasts.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "broadcasts": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the broadcast.",
                            "readOnly": true
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of broadcast.",
                            "enum": [
                              "triggered_broadcast"
                            ]
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "active": {
                            "type": "boolean",
                            "description": "If true, the broadcast is active."
                          },
                          "state": {
                            "type": "string",
                            "description": "The state of the broadcast.",
                            "enum": [
                              "running",
                              "draft"
                            ]
                          },
                          "actions": {
                            "type": "array",
                            "description": "A list of actions used by the broadcast.",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "integer",
                                  "description": "The identifier for the action."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "email",
                                    "webhook",
                                    "push",
                                    "sms",
                                    "slack"
                                  ]
                                }
                              }
                            }
                          },
                          "msg_template_ids": {
                            "x-scalar-ignore": true,
                            "type": "array",
                            "deprecated": true,
                            "description": "Indicates the message template(s) used in this broadcast.",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "integer",
                                  "description": "The identifier for the template."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of template.",
                                  "enum": [
                                    "email",
                                    "webhook",
                                    "push",
                                    "sms",
                                    "slack"
                                  ]
                                }
                              }
                            }
                          },
                          "first_started": {
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date and time when you activated the broadcast.",
                            "example": 1552341937
                          },
                          "tags": {
                            "type": "array",
                            "description": "An array of tags you set on this broadcast.",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "example": {
                          "id": 2,
                          "deduplicate_id": "2:1520467200",
                          "created": 1520467200,
                          "type": "triggered_broadcast",
                          "updated": 1520467200,
                          "name": "basic",
                          "active": true,
                          "state": "running",
                          "actions": [
                            {
                              "id": 3,
                              "type": "email"
                            },
                            {
                              "id": 4
                            },
                            {
                              "type": "webhook"
                            }
                          ],
                          "tags": "nil",
                          "first_started": 1520467200,
                          "created_by": "ExamplePerson"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts/{broadcast_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a broadcast.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "operationId": "getBroadcast",
        "summary": "Get a broadcast",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns metadata for an individual broadcast.",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns metadata for the broadcast.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "broadcast": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The identifier for a broadcast.",
                          "example": 2
                        },
                        "deduplicate_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "readOnly": true,
                          "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                          "example": "15:1492548073"
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the broadcast.",
                          "readOnly": true
                        },
                        "type": {
                          "type": "string",
                          "description": "The type of broadcast.",
                          "enum": [
                            "triggered_broadcast"
                          ]
                        },
                        "created": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "active": {
                          "type": "boolean",
                          "description": "If true, the broadcast is active."
                        },
                        "state": {
                          "type": "string",
                          "description": "The state of the broadcast.",
                          "enum": [
                            "running",
                            "draft"
                          ]
                        },
                        "actions": {
                          "type": "array",
                          "description": "A list of actions used by the broadcast.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The identifier for the action."
                              },
                              "type": {
                                "type": "string",
                                "description": "The type of action.",
                                "enum": [
                                  "email",
                                  "webhook",
                                  "push",
                                  "sms",
                                  "slack"
                                ]
                              }
                            }
                          }
                        },
                        "msg_template_ids": {
                          "x-scalar-ignore": true,
                          "type": "array",
                          "deprecated": true,
                          "description": "Indicates the message template(s) used in this broadcast.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The identifier for the template."
                              },
                              "type": {
                                "type": "string",
                                "description": "The type of template.",
                                "enum": [
                                  "email",
                                  "webhook",
                                  "push",
                                  "sms",
                                  "slack"
                                ]
                              }
                            }
                          }
                        },
                        "first_started": {
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date and time when you activated the broadcast.",
                          "example": 1552341937
                        },
                        "tags": {
                          "type": "array",
                          "description": "An array of tags you set on this broadcast.",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "example": {
                        "id": 2,
                        "deduplicate_id": "2:1520467200",
                        "created": 1520467200,
                        "type": "triggered_broadcast",
                        "updated": 1520467200,
                        "name": "basic",
                        "active": true,
                        "state": "running",
                        "actions": [
                          {
                            "id": 3,
                            "type": "email"
                          },
                          {
                            "id": 4
                          },
                          {
                            "type": "webhook"
                          }
                        ],
                        "tags": "nil",
                        "first_started": 1520467200,
                        "created_by": "ExamplePerson"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts/%7Bbroadcast_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/campaigns/{broadcast_id}/triggers/{trigger_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The ID of the broadcast that you want to return information about.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "trigger_id",
          "in": "path",
          "required": true,
          "description": "The ID of the campaign trigger that you want to return information for.",
          "schema": {
            "type": "integer",
            "example": 3
          }
        }
      ],
      "get": {
        "operationId": "broadcastStatus",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "tags": [
          "Broadcasts"
        ],
        "summary": "Get the status of a broadcast",
        "description": "After triggering a broadcast you can retrieve the status of that broadcast using a GET of the `trigger_id`. You can retrieve the `trigger_id` from [Get broadcast triggers](/api/app/#operation/listBroadcastTriggers).\n",
        "responses": {
          "200": {
            "description": "Returns the status of your broadcast.",
            "content": {
              "application/json": {
                "schema": {
                  "x-scalar-ignore": true,
                  "type": "object",
                  "description": "You can get triggers to know when you triggered a broadcast and whether or not it's been processed.",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "description": "The identifier for a broadcast trigger."
                    },
                    "broadcast_id": {
                      "x-scalar-ignore": true,
                      "type": "integer",
                      "description": "The identifier for a broadcast.",
                      "example": 2
                    },
                    "created_at": {
                      "x-scalar-ignore": true,
                      "type": "integer",
                      "format": "unix timestamp",
                      "description": "The date time when the referenced ID was created.",
                      "example": 1552341937,
                      "readOnly": true
                    },
                    "processed_at": {
                      "type": "integer",
                      "format": "unix timestamp",
                      "description": "The date-time when Customer.io processed the trigger."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/campaigns/{broadcast_id}/triggers/{trigger_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/campaigns/%7Bbroadcast_id%7D/triggers/%7Btrigger_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/campaigns/%7Bbroadcast_id%7D/triggers/%7Btrigger_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/campaigns/%7Bbroadcast_id%7D/triggers/%7Btrigger_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/campaigns/%7Bbroadcast_id%7D/triggers/%7Btrigger_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts/{broadcast_id}/metrics": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a broadcast.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        }
      ],
      "get": {
        "operationId": "broadcastMetrics",
        "summary": "Get broadcast metrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of metrics for an individual broadcast in `steps` (days, weeks, etc). We return metrics from oldest to newest (i.e. the 0-index for any result is the oldest step/period).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns broadcast metrics by `series` (with increments are based on the `period` and `step` in your request) for the broadcast.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "metric": {
                      "type": "object",
                      "properties": {
                        "series": {
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                              "properties": {
                                "2xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "2xx responses by period, representative of webhook performance."
                                },
                                "3xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "3xx responses by period, representative of webhook performance."
                                },
                                "4xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "4xx responses by period, representative of webhook performance."
                                },
                                "5xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "5xx responses by period, representative of webhook performance."
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                              "type": "object",
                              "properties": {
                                "attempted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `attempted` messages."
                                },
                                "bounced": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `bounced` messages."
                                },
                                "clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` messages."
                                },
                                "human_clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` emails excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                },
                                "prefetch_clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` emails attributed to machines. This metric is reliable starting April 20, 2025."
                                },
                                "converted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `converted` messages."
                                },
                                "created": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `created` messages."
                                },
                                "deferred": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `deferred` messages."
                                },
                                "delivered": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `delivered` messages."
                                },
                                "drafted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `drafted` messages."
                                },
                                "failed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `failed` messages."
                                },
                                "opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` messages."
                                },
                                "human_opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` emails excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                },
                                "prefetch_opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` emails attributed to machines. This metric is reliable starting March 20, 2025."
                                },
                                "sent": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of sent messages."
                                },
                                "spammed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of spam complaints."
                                },
                                "suppressed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `suppressed` messages."
                                },
                                "undeliverable": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `undeliverable` messages."
                                },
                                "topic_unsubscribed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of topic unsubscribes in a given period."
                                },
                                "unsubscribed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of unsubscribes attributed to the campaign or message."
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/metrics"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/metrics\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/metrics\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts/%7Bbroadcast_id%7D/metrics\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/metrics\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts/{broadcast_id}/metrics/links": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a broadcast.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "unique",
          "in": "query",
          "required": false,
          "description": "If true, the response contains only unique customer results, i.e. a customer who clicks a link twice is only counted once. If false, the response contains the total number of results without regard to uniqueness.",
          "schema": {
            "type": "boolean",
            "default": false
          }
        }
      ],
      "get": {
        "operationId": "broadcastLinks",
        "summary": "Get broadcast link metrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns metrics for link clicks within a broadcast, both in total and in `series` periods (days, weeks, etc). `series` metrics are ordered oldest to newest (i.e. the 0-index for any result is the oldest step/period).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of link objects. Each object represents a different link in your broadcast and contains independent metrics.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "links": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "link": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The ID of the link.",
                                "example": 1234
                              },
                              "href": {
                                "type": "string",
                                "description": "The link destination—a URL, mailto, etc.",
                                "example": "https://docs.customer.io"
                              }
                            }
                          },
                          "metric": {
                            "type": "object",
                            "description": "Contains metrics for the link.",
                            "properties": {
                              "series": {
                                "type": "object",
                                "properties": {
                                  "clicked": {
                                    "type": "array",
                                    "description": "An array of results from oldest to newest, where each result indicates a period.",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "example": [
                                      1,
                                      3,
                                      5,
                                      7
                                    ]
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/metrics/links"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/metrics/links\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/metrics/links\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts/%7Bbroadcast_id%7D/metrics/links\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/metrics/links\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts/{broadcast_id}/actions": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a broadcast.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "operationId": "broadcastActions",
        "summary": "List broadcast actions",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns the actions that occur as a part of a broadcast.",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns broadcast `actions`. Each object represents an individual variant for this broadcast.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "actions": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "oneOf": [
                          {
                            "title": "Email / message",
                            "allOf": [
                              {
                                "x-scalar-ignore": true,
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for an action.",
                                    "type": "integer",
                                    "readOnly": true,
                                    "example": 96
                                  },
                                  "broadcast_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The identifier for a broadcast.",
                                    "example": 2
                                  },
                                  "deduplicate_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                    "example": "15:1492548073"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the action, if it exists.",
                                    "readOnly": true,
                                    "example": "Opening Message"
                                  },
                                  "layout": {
                                    "type": "string",
                                    "description": "The layout used for the action, if it exists.",
                                    "readOnly": true
                                  },
                                  "created": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was created.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "updated": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was last updated.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "body": {
                                    "type": "string",
                                    "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "The type of action.",
                                    "enum": [
                                      "email",
                                      "in_app",
                                      "push",
                                      "twilio",
                                      "slack",
                                      "whatsapp"
                                    ],
                                    "readOnly": true
                                  },
                                  "sending_state": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "enum": [
                                      "automatic",
                                      "draft",
                                      "off"
                                    ],
                                    "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                  },
                                  "language": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                    "example": "fr",
                                    "readOnly": true
                                  },
                                  "from": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                    "readOnly": true,
                                    "example": "sentFrom@example.com"
                                  },
                                  "from_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                    "example": 1
                                  },
                                  "reply_to": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The address that receives replies for the message, if applicable.",
                                    "readOnly": true,
                                    "example": "replyto@example.com"
                                  },
                                  "reply_to_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                    "nullable": true,
                                    "example": 38
                                  },
                                  "preprocessor": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                    "enum": [
                                      "premailer"
                                    ],
                                    "readOnly": true
                                  },
                                  "recipient": {
                                    "x-scalar-ignore": true,
                                    "description": "The recipient address for an action.",
                                    "type": "string",
                                    "example": "{{customer.email}}"
                                  },
                                  "subject": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The subject line for an `email` action.",
                                    "example": "Did you get that thing I sent you?"
                                  },
                                  "bcc": {
                                    "x-scalar-ignore": true,
                                    "readOnly": true,
                                    "description": "The blind-copy address(es) for this action.",
                                    "type": "string"
                                  },
                                  "fake_bcc": {
                                    "x-scalar-ignore": true,
                                    "readOnly": true,
                                    "type": "boolean",
                                    "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                                  },
                                  "preheader_text": {
                                    "x-scalar-ignore": true,
                                    "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."
                                  },
                                  "body_amp": {
                                    "x-scalar-ignore": true,
                                    "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."
                                  }
                                }
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for an action.",
                                    "type": "integer",
                                    "readOnly": true,
                                    "example": 96
                                  },
                                  "broadcast_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The identifier for a broadcast.",
                                    "example": 2
                                  },
                                  "headers": {
                                    "x-scalar-ignore": true,
                                    "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                    "type": "string",
                                    "format": "json",
                                    "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                  }
                                }
                              }
                            ]
                          },
                          {
                            "title": "SMS / MMS",
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for an action.",
                                    "type": "integer",
                                    "readOnly": true,
                                    "example": 96
                                  },
                                  "broadcast_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The identifier for a broadcast.",
                                    "example": 2
                                  }
                                }
                              },
                              {
                                "x-scalar-ignore": true,
                                "type": "object",
                                "properties": {
                                  "deduplicate_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                    "example": "15:1492548073"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the action.",
                                    "readOnly": true,
                                    "example": "Opening Message"
                                  },
                                  "layout": {
                                    "type": "string",
                                    "description": "The layout used for the action, if it exists.",
                                    "readOnly": true
                                  },
                                  "created": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was created.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "updated": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was last updated.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "body": {
                                    "type": "string",
                                    "description": "The body of your SMS."
                                  },
                                  "language": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                    "example": "fr",
                                    "readOnly": true
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                                    "enum": [
                                      "twilio"
                                    ],
                                    "readOnly": true
                                  },
                                  "image_url": {
                                    "type": "string",
                                    "description": "The URL of the image in your SMS (MMS) message."
                                  },
                                  "sending_state": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "enum": [
                                      "automatic",
                                      "draft",
                                      "off"
                                    ],
                                    "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                  },
                                  "recipient": {
                                    "type": "string",
                                    "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                                    "example": ""
                                  }
                                }
                              }
                            ]
                          },
                          {
                            "title": "WhatsApp",
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for an action.",
                                    "type": "integer",
                                    "readOnly": true,
                                    "example": 96
                                  },
                                  "broadcast_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The identifier for a broadcast.",
                                    "example": 2
                                  }
                                }
                              },
                              {
                                "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                                "type": "object",
                                "properties": {
                                  "deduplicate_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                    "example": "15:1492548073"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the action.",
                                    "readOnly": true,
                                    "example": "Welcome Message"
                                  },
                                  "created": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was created.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "updated": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was last updated.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "body": {
                                    "type": "string",
                                    "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                                    "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                                  },
                                  "body_json": {
                                    "type": "string",
                                    "description": "For visual editor content (if applicable)."
                                  },
                                  "language": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                    "example": "fr",
                                    "readOnly": true
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                                    "enum": [
                                      "whatsapp"
                                    ],
                                    "readOnly": true
                                  },
                                  "sending_state": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "enum": [
                                      "automatic",
                                      "draft",
                                      "off"
                                    ],
                                    "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                  },
                                  "recipient": {
                                    "type": "string",
                                    "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                                    "example": ""
                                  },
                                  "sender_identity_id": {
                                    "type": "integer",
                                    "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                                  },
                                  "send_to_unsubscribed": {
                                    "type": "boolean",
                                    "description": "Whether to send this message to unsubscribed customers."
                                  },
                                  "tracked": {
                                    "type": "boolean",
                                    "description": "Whether links in template parameters should be tracked.",
                                    "default": false
                                  }
                                }
                              }
                            ]
                          },
                          {
                            "title": "Webhook",
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "description": "The identifier for an action.",
                                    "type": "integer",
                                    "readOnly": true,
                                    "example": 96
                                  },
                                  "broadcast_id": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "description": "The identifier for a broadcast.",
                                    "example": 2
                                  }
                                }
                              },
                              {
                                "x-scalar-ignore": true,
                                "type": "object",
                                "properties": {
                                  "deduplicate_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                    "example": "15:1492548073"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the action, if it exists.",
                                    "readOnly": true,
                                    "example": "Opening Message"
                                  },
                                  "layout": {
                                    "type": "string",
                                    "description": "The layout used for the action, if it exists.",
                                    "readOnly": true
                                  },
                                  "created": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was created.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "updated": {
                                    "x-scalar-ignore": true,
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date time when the referenced ID was last updated.",
                                    "example": 1552341937,
                                    "readOnly": true
                                  },
                                  "body": {
                                    "type": "string",
                                    "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "The type of action.",
                                    "enum": [
                                      "webhook"
                                    ],
                                    "readOnly": true
                                  },
                                  "url": {
                                    "type": "string",
                                    "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                                    "example": "https://my.example.com/webhook"
                                  },
                                  "headers": {
                                    "x-scalar-ignore": true,
                                    "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                    "type": "string",
                                    "format": "json",
                                    "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                  },
                                  "method": {
                                    "description": "The HTTP method for your webhook.",
                                    "type": "string",
                                    "enum": [
                                      "get",
                                      "post",
                                      "put",
                                      "delete",
                                      "patch"
                                    ],
                                    "example": "post"
                                  },
                                  "sending_state": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "enum": [
                                      "automatic",
                                      "draft",
                                      "off"
                                    ],
                                    "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                  }
                                }
                              }
                            ]
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/actions"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/actions\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts/%7Bbroadcast_id%7D/actions\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts/{broadcast_id}/messages": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a broadcast.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "metric",
          "in": "query",
          "required": false,
          "description": "Determines the metric(s) you want to return.",
          "schema": {
            "type": "string",
            "enum": [
              "attempted",
              "sent",
              "delivered",
              "opened",
              "clicked",
              "converted",
              "bounced",
              "spammed",
              "unsubscribed",
              "dropped",
              "failed",
              "undeliverable"
            ]
          }
        },
        {
          "name": "state",
          "in": "query",
          "required": false,
          "description": "The state of a broadcast.",
          "schema": {
            "type": "string",
            "enum": [
              "failed",
              "sent",
              "drafted",
              "attempted"
            ]
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        },
        {
          "name": "start_ts",
          "in": "query",
          "required": false,
          "description": "The beginning timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        },
        {
          "name": "end_ts",
          "in": "query",
          "required": false,
          "description": "The ending timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        }
      ],
      "get": {
        "operationId": "broadcastMessages",
        "summary": "Get messages for a broadcast",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about the deliveries (instances of messages sent to individual people) sent from an API-triggered broadcast. Provide query parameters to refine the metrics you want to return.\n\nUse the `start_ts` and `end_ts` to find messages within a time range. If your request doesn't include `start_ts` and `end_ts` parameters, we'll return results for the 1 month period after the first trigger. If your `start_ts` and `end_ts` range is more than 12 months, we'll return 12 months of data from the most recent timestamp in your request. Timestamps reflect when deliveries were created in our system, not when they were actually sent to recipients. There may be a delay between creation and sending.\n",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `messages`. Each object represents a different message in your broadcast.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "messages": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "description": "Describes an individual message delivery. The object contains keys for all possible parents of the message (`newsletter_id`, `broadcast_id`, etc) but only the parents of the delivery are populated. Other parent IDs are null.",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a delivery—the instance of a message intended for an individual recipient.",
                            "type": "string",
                            "readOnly": true,
                            "example": "dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek="
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "message_template_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier of the message template used to create a message.",
                            "type": "integer",
                            "readOnly": true,
                            "deprecated": true
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "customer_identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                            "required": [
                              "email",
                              "id",
                              "cio_id"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "nullable": true,
                                "format": "email",
                                "description": "A person's email address, if set.",
                                "example": "test@example.com"
                              },
                              "id": {
                                "type": "string",
                                "nullable": true,
                                "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                                "example": 2
                              },
                              "cio_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                "example": "a3000001"
                              }
                            }
                          },
                          "recipient": {
                            "x-scalar-ignore": true,
                            "description": "The recipient address for an action.",
                            "type": "string",
                            "example": "{{customer.email}}"
                          },
                          "subject": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The subject line for an `email` action.",
                            "example": "Did you get that thing I sent you?"
                          },
                          "metrics": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Metrics for an individual instance of a message; each item in the object represents the timestamp when a message achieved a particular metric. This object only contains metrics that have been recorded.",
                            "properties": {
                              "bounced": {
                                "type": "integer",
                                "description": "The timestamp when the message `bounced`."
                              },
                              "clicked": {
                                "type": "integer",
                                "description": "The timestamp when the message was `clicked`."
                              },
                              "human_clicked": {
                                "type": "integer",
                                "description": "The number of `clicked` messages excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                              },
                              "prefetch_clicked": {
                                "type": "integer",
                                "description": "The number of `clicked` messages attributed to machines. This metric is reliable starting April 20, 2025."
                              },
                              "converted": {
                                "type": "integer",
                                "description": "The timestamp when the message was `converted`."
                              },
                              "created": {
                                "type": "integer",
                                "description": "The timestamp when the message was `created`."
                              },
                              "delivered": {
                                "type": "integer",
                                "description": "The timestamp when the message was `delivered`."
                              },
                              "drafted": {
                                "type": "integer",
                                "description": "The timestamp when the message was `drafted`."
                              },
                              "dropped": {
                                "type": "integer",
                                "description": "The timestamp when the message was `dropped`."
                              },
                              "failed": {
                                "type": "integer",
                                "description": "The timestamp when the message `failed`."
                              },
                              "opened": {
                                "type": "integer",
                                "description": "The timestamp when the message was `opened`."
                              },
                              "human_opened": {
                                "type": "integer",
                                "description": "The number of `opened` messages excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                              },
                              "prefetch_opened": {
                                "type": "integer",
                                "description": "The number of `opened` messages attributed to machines. This metric is reliable starting March 20, 2025."
                              },
                              "sent": {
                                "type": "integer",
                                "description": "The timestamp when the message was `sent`."
                              },
                              "spammed": {
                                "type": "integer",
                                "description": "The timestamp when the message was marked as spam."
                              },
                              "undeliverable": {
                                "type": "integer",
                                "description": "The timestamp when the message became `undeliverable`."
                              },
                              "unsubscribed": {
                                "type": "integer",
                                "description": "The timestamp when a person unsubscribed based on this message."
                              }
                            }
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "failure_message": {
                            "type": "string",
                            "description": "Explains why a message failed, if applicable.",
                            "nullable": true
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a message in a newsletter. Newsletters can have multiple content IDs (for multi-language messages or A/B tests).",
                            "type": "integer",
                            "readOnly": true,
                            "example": 1
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          },
                          "type": {
                            "x-scalar-ignore": true,
                            "description": "The type of message/action.",
                            "type": "string",
                            "enum": [
                              "email",
                              "webhook",
                              "twilio",
                              "slack",
                              "push",
                              "in_app",
                              "whatsapp"
                            ],
                            "readOnly": true,
                            "example": "email"
                          },
                          "forgotten": {
                            "type": "boolean",
                            "description": "If true message contents are not retained by Customer.io."
                          }
                        },
                        "example": {
                          "id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=",
                          "deduplicate_id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=:1619137768",
                          "msg_template_id": 43,
                          "action_id": 215,
                          "parent_action_id": null,
                          "customer_id": null,
                          "recipient": "person@example.com",
                          "subject": "Did you get that thing I sent you?",
                          "metrics": {
                            "delivered": 1619137768,
                            "sent": 1619137768
                          },
                          "created": 1619137767,
                          "failure_message": null,
                          "newsletter_id": null,
                          "content_id": null,
                          "campaign_id": 23,
                          "broadcast_id": null,
                          "trigger_event_id": null,
                          "type": "email",
                          "forgotten": false
                        }
                      },
                      "example": [
                        {
                          "id": "dgOq6QWq6QUDAAF22PaOyFVqVxHY3rI5fsg=",
                          "deduplicate_id": "dgOq6QWq6QUDAAF22PaOyFVqVxHY3rI5fsg=:1609957872",
                          "msg_template_id": 0,
                          "action_id": 196,
                          "customer_id": "1a55d8d1-b13d-4f1f-858f-a93ef21e3a7d",
                          "customer_identifiers": {
                            "id": "1a55d8d1-b13d-4f1f-858f-a93ef21e3a7d",
                            "email": "person@example.com",
                            "cio_id": 786433
                          },
                          "recipient": "person@example.com",
                          "subject": "Did you get that thing I sent you?",
                          "metrics": {
                            "delivered": 1609957872,
                            "sent": 1609957832
                          },
                          "created": 1609957805,
                          "failure_message": null,
                          "newsletter_id": null,
                          "content_id": null,
                          "campaign_id": null,
                          "broadcast_id": 94,
                          "type": "email",
                          "forgotten": false
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/messages"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/messages\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/messages\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts/%7Bbroadcast_id%7D/messages\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/messages\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts/{broadcast_id}/actions/{action_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a broadcast.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "action_id",
          "in": "path",
          "required": true,
          "description": "The action you want to lookup or act on.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "operationId": "getBroadcastAction",
        "summary": "Get a broadcast action",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about a specific action within a broadcast.",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns the requested broadcast `action`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "action": {
                      "x-scalar-ignore": true,
                      "oneOf": [
                        {
                          "title": "Email / message",
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "email",
                                    "in_app",
                                    "push",
                                    "twilio",
                                    "slack",
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "from": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                  "readOnly": true,
                                  "example": "sentFrom@example.com"
                                },
                                "from_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "example": 1
                                },
                                "reply_to": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that receives replies for the message, if applicable.",
                                  "readOnly": true,
                                  "example": "replyto@example.com"
                                },
                                "reply_to_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "nullable": true,
                                  "example": 38
                                },
                                "preprocessor": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                  "enum": [
                                    "premailer"
                                  ],
                                  "readOnly": true
                                },
                                "recipient": {
                                  "x-scalar-ignore": true,
                                  "description": "The recipient address for an action.",
                                  "type": "string",
                                  "example": "{{customer.email}}"
                                },
                                "subject": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The subject line for an `email` action.",
                                  "example": "Did you get that thing I sent you?"
                                },
                                "bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "description": "The blind-copy address(es) for this action.",
                                  "type": "string"
                                },
                                "fake_bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "type": "boolean",
                                  "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                                },
                                "preheader_text": {
                                  "x-scalar-ignore": true,
                                  "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."
                                },
                                "body_amp": {
                                  "x-scalar-ignore": true,
                                  "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."
                                }
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "SMS / MMS",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of your SMS."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                                  "enum": [
                                    "twilio"
                                  ],
                                  "readOnly": true
                                },
                                "image_url": {
                                  "type": "string",
                                  "description": "The URL of the image in your SMS (MMS) message."
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                                  "example": ""
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "WhatsApp",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Welcome Message"
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                                  "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                                },
                                "body_json": {
                                  "type": "string",
                                  "description": "For visual editor content (if applicable)."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                                  "enum": [
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                                  "example": ""
                                },
                                "sender_identity_id": {
                                  "type": "integer",
                                  "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                                },
                                "send_to_unsubscribed": {
                                  "type": "boolean",
                                  "description": "Whether to send this message to unsubscribed customers."
                                },
                                "tracked": {
                                  "type": "boolean",
                                  "description": "Whether links in template parameters should be tracked.",
                                  "default": false
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "Webhook",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "webhook"
                                  ],
                                  "readOnly": true
                                },
                                "url": {
                                  "type": "string",
                                  "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                                  "example": "https://my.example.com/webhook"
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                },
                                "method": {
                                  "description": "The HTTP method for your webhook.",
                                  "type": "string",
                                  "enum": [
                                    "get",
                                    "post",
                                    "put",
                                    "delete",
                                    "patch"
                                  ],
                                  "example": "post"
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid. Or the `language` does not exist for this action."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/actions/{action_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "operationId": "updateBroadcastAction",
        "summary": "Update a broadcast action",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Update the contents of a broadcast action, including the body of messages or HTTP requests.",
        "tags": [
          "Broadcasts"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "title": "Email / message",
                    "allOf": [
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action, if it exists.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of action.",
                            "enum": [
                              "email",
                              "in_app",
                              "push",
                              "twilio",
                              "slack",
                              "whatsapp"
                            ],
                            "readOnly": true
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "from": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The address that the message is from, relevant if the action `type` is `email`.",
                            "readOnly": true,
                            "example": "sentFrom@example.com"
                          },
                          "from_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                            "example": 1
                          },
                          "reply_to": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The address that receives replies for the message, if applicable.",
                            "readOnly": true,
                            "example": "replyto@example.com"
                          },
                          "reply_to_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                            "nullable": true,
                            "example": 38
                          },
                          "preprocessor": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                            "enum": [
                              "premailer"
                            ],
                            "readOnly": true
                          },
                          "recipient": {
                            "x-scalar-ignore": true,
                            "description": "The recipient address for an action.",
                            "type": "string",
                            "example": "{{customer.email}}"
                          },
                          "subject": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The subject line for an `email` action.",
                            "example": "Did you get that thing I sent you?"
                          },
                          "bcc": {
                            "x-scalar-ignore": true,
                            "readOnly": true,
                            "description": "The blind-copy address(es) for this action.",
                            "type": "string"
                          },
                          "fake_bcc": {
                            "x-scalar-ignore": true,
                            "readOnly": true,
                            "type": "boolean",
                            "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                          },
                          "preheader_text": {
                            "x-scalar-ignore": true,
                            "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."
                          },
                          "body_amp": {
                            "x-scalar-ignore": true,
                            "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."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "headers": {
                            "x-scalar-ignore": true,
                            "description": "An array of objects containing headers, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.\n",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "description": "The name of the header."
                                },
                                "value": {
                                  "type": "string",
                                  "description": "The value of the header."
                                }
                              },
                              "example": [
                                {
                                  "name": "X-Mailgun-Tag",
                                  "value": "my-cool-tag"
                                }
                              ]
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "SMS / MMS",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of your SMS."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "type": {
                            "type": "string",
                            "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                            "enum": [
                              "twilio"
                            ],
                            "readOnly": true
                          },
                          "image_url": {
                            "type": "string",
                            "description": "The URL of the image in your SMS (MMS) message."
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "recipient": {
                            "type": "string",
                            "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                            "example": ""
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "WhatsApp",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          }
                        }
                      },
                      {
                        "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action.",
                            "readOnly": true,
                            "example": "Welcome Message"
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                            "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                          },
                          "body_json": {
                            "type": "string",
                            "description": "For visual editor content (if applicable)."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "type": {
                            "type": "string",
                            "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                            "enum": [
                              "whatsapp"
                            ],
                            "readOnly": true
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "recipient": {
                            "type": "string",
                            "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                            "example": ""
                          },
                          "sender_identity_id": {
                            "type": "integer",
                            "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                          },
                          "send_to_unsubscribed": {
                            "type": "boolean",
                            "description": "Whether to send this message to unsubscribed customers."
                          },
                          "tracked": {
                            "type": "boolean",
                            "description": "Whether links in template parameters should be tracked.",
                            "default": false
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "Webhook",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action, if it exists.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of action.",
                            "enum": [
                              "webhook"
                            ],
                            "readOnly": true
                          },
                          "url": {
                            "type": "string",
                            "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                            "example": "https://my.example.com/webhook"
                          },
                          "headers": {
                            "x-scalar-ignore": true,
                            "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                            "type": "string",
                            "format": "json",
                            "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                          },
                          "method": {
                            "description": "The HTTP method for your webhook.",
                            "type": "string",
                            "enum": [
                              "get",
                              "post",
                              "put",
                              "delete",
                              "patch"
                            ],
                            "example": "post"
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated broadcast action.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "action": {
                      "x-scalar-ignore": true,
                      "oneOf": [
                        {
                          "title": "Email / message",
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "email",
                                    "in_app",
                                    "push",
                                    "twilio",
                                    "slack",
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "from": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                  "readOnly": true,
                                  "example": "sentFrom@example.com"
                                },
                                "from_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "example": 1
                                },
                                "reply_to": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that receives replies for the message, if applicable.",
                                  "readOnly": true,
                                  "example": "replyto@example.com"
                                },
                                "reply_to_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "nullable": true,
                                  "example": 38
                                },
                                "preprocessor": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                  "enum": [
                                    "premailer"
                                  ],
                                  "readOnly": true
                                },
                                "recipient": {
                                  "x-scalar-ignore": true,
                                  "description": "The recipient address for an action.",
                                  "type": "string",
                                  "example": "{{customer.email}}"
                                },
                                "subject": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The subject line for an `email` action.",
                                  "example": "Did you get that thing I sent you?"
                                },
                                "bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "description": "The blind-copy address(es) for this action.",
                                  "type": "string"
                                },
                                "fake_bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "type": "boolean",
                                  "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                                },
                                "preheader_text": {
                                  "x-scalar-ignore": true,
                                  "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."
                                },
                                "body_amp": {
                                  "x-scalar-ignore": true,
                                  "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."
                                }
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "SMS / MMS",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of your SMS."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                                  "enum": [
                                    "twilio"
                                  ],
                                  "readOnly": true
                                },
                                "image_url": {
                                  "type": "string",
                                  "description": "The URL of the image in your SMS (MMS) message."
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                                  "example": ""
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "WhatsApp",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Welcome Message"
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                                  "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                                },
                                "body_json": {
                                  "type": "string",
                                  "description": "For visual editor content (if applicable)."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                                  "enum": [
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                                  "example": ""
                                },
                                "sender_identity_id": {
                                  "type": "integer",
                                  "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                                },
                                "send_to_unsubscribed": {
                                  "type": "boolean",
                                  "description": "Whether to send this message to unsubscribed customers."
                                },
                                "tracked": {
                                  "type": "boolean",
                                  "description": "Whether links in template parameters should be tracked.",
                                  "default": false
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "Webhook",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "webhook"
                                  ],
                                  "readOnly": true
                                },
                                "url": {
                                  "type": "string",
                                  "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                                  "example": "https://my.example.com/webhook"
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                },
                                "method": {
                                  "description": "The HTTP method for your webhook.",
                                  "type": "string",
                                  "enum": [
                                    "get",
                                    "post",
                                    "put",
                                    "delete",
                                    "patch"
                                  ],
                                  "example": "post"
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid. Or the `language` does not exist for this action."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/actions/{action_id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"broadcast_id\":2,\"body\":\"string\",\"sending_state\":\"automatic\",\"from_id\":1,\"reply_to_id\":38,\"recipient\":\"{{customer.email}}\",\"subject\":\"Did you get that thing I sent you?\",\"preheader_text\":\"string\",\"body_amp\":\"string\",\"headers\":[[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"}]]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  broadcast_id: 2,\n  body: 'string',\n  sending_state: 'automatic',\n  from_id: 1,\n  reply_to_id: 38,\n  recipient: '{{customer.email}}',\n  subject: 'Did you get that thing I sent you?',\n  preheader_text: 'string',\n  body_amp: 'string',\n  headers: [[{name: 'X-Mailgun-Tag', value: 'my-cool-tag'}]]\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts/{broadcast_id}/actions/{action_id}/language/{language}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a broadcast.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "action_id",
          "in": "path",
          "required": true,
          "description": "The action you want to lookup or act on.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "language",
          "in": "path",
          "required": true,
          "description": "A [language tag](/journeys/unsubscribe-faqs/#currently-supported-languages) of a language variant. If you don't provide a language (an empty string), we'll use your default language. If the language variant does not exist, we'll return an error.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "getBroadcastActionLanguage",
        "summary": "Get a translation of a broadcast message",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about a translation of message in a broadcast. The message is identified by the `action_id`.",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns information for the requested language variant for a broadcast `action`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "action": {
                      "x-scalar-ignore": true,
                      "oneOf": [
                        {
                          "title": "Email / message",
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "email",
                                    "in_app",
                                    "push",
                                    "twilio",
                                    "slack",
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "from": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                  "readOnly": true,
                                  "example": "sentFrom@example.com"
                                },
                                "from_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "example": 1
                                },
                                "reply_to": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that receives replies for the message, if applicable.",
                                  "readOnly": true,
                                  "example": "replyto@example.com"
                                },
                                "reply_to_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "nullable": true,
                                  "example": 38
                                },
                                "preprocessor": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                  "enum": [
                                    "premailer"
                                  ],
                                  "readOnly": true
                                },
                                "recipient": {
                                  "x-scalar-ignore": true,
                                  "description": "The recipient address for an action.",
                                  "type": "string",
                                  "example": "{{customer.email}}"
                                },
                                "subject": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The subject line for an `email` action.",
                                  "example": "Did you get that thing I sent you?"
                                },
                                "bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "description": "The blind-copy address(es) for this action.",
                                  "type": "string"
                                },
                                "fake_bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "type": "boolean",
                                  "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                                },
                                "preheader_text": {
                                  "x-scalar-ignore": true,
                                  "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."
                                },
                                "body_amp": {
                                  "x-scalar-ignore": true,
                                  "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."
                                }
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "SMS / MMS",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of your SMS."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                                  "enum": [
                                    "twilio"
                                  ],
                                  "readOnly": true
                                },
                                "image_url": {
                                  "type": "string",
                                  "description": "The URL of the image in your SMS (MMS) message."
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                                  "example": ""
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "WhatsApp",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Welcome Message"
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                                  "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                                },
                                "body_json": {
                                  "type": "string",
                                  "description": "For visual editor content (if applicable)."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                                  "enum": [
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                                  "example": ""
                                },
                                "sender_identity_id": {
                                  "type": "integer",
                                  "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                                },
                                "send_to_unsubscribed": {
                                  "type": "boolean",
                                  "description": "Whether to send this message to unsubscribed customers."
                                },
                                "tracked": {
                                  "type": "boolean",
                                  "description": "Whether links in template parameters should be tracked.",
                                  "default": false
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "Webhook",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "webhook"
                                  ],
                                  "readOnly": true
                                },
                                "url": {
                                  "type": "string",
                                  "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                                  "example": "https://my.example.com/webhook"
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                },
                                "method": {
                                  "description": "The HTTP method for your webhook.",
                                  "type": "string",
                                  "enum": [
                                    "get",
                                    "post",
                                    "put",
                                    "delete",
                                    "patch"
                                  ],
                                  "example": "post"
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid. Or the `language` does not exist for this action."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/actions/{action_id}/language/{language}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "operationId": "updateBroadcastActionLanguage",
        "summary": "Update a translation of a broadcast message",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Update a translation of a specific broadcast action, including the body of messages or HTTP requests.",
        "tags": [
          "Broadcasts"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "oneOf": [
                  {
                    "title": "Email / message",
                    "allOf": [
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action, if it exists.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of action.",
                            "enum": [
                              "email",
                              "in_app",
                              "push",
                              "twilio",
                              "slack",
                              "whatsapp"
                            ],
                            "readOnly": true
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "from": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The address that the message is from, relevant if the action `type` is `email`.",
                            "readOnly": true,
                            "example": "sentFrom@example.com"
                          },
                          "from_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                            "example": 1
                          },
                          "reply_to": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The address that receives replies for the message, if applicable.",
                            "readOnly": true,
                            "example": "replyto@example.com"
                          },
                          "reply_to_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                            "nullable": true,
                            "example": 38
                          },
                          "preprocessor": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                            "enum": [
                              "premailer"
                            ],
                            "readOnly": true
                          },
                          "recipient": {
                            "x-scalar-ignore": true,
                            "description": "The recipient address for an action.",
                            "type": "string",
                            "example": "{{customer.email}}"
                          },
                          "subject": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The subject line for an `email` action.",
                            "example": "Did you get that thing I sent you?"
                          },
                          "bcc": {
                            "x-scalar-ignore": true,
                            "readOnly": true,
                            "description": "The blind-copy address(es) for this action.",
                            "type": "string"
                          },
                          "fake_bcc": {
                            "x-scalar-ignore": true,
                            "readOnly": true,
                            "type": "boolean",
                            "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                          },
                          "preheader_text": {
                            "x-scalar-ignore": true,
                            "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."
                          },
                          "body_amp": {
                            "x-scalar-ignore": true,
                            "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."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "headers": {
                            "x-scalar-ignore": true,
                            "description": "An array of objects containing headers, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.\n",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "description": "The name of the header."
                                },
                                "value": {
                                  "type": "string",
                                  "description": "The value of the header."
                                }
                              },
                              "example": [
                                {
                                  "name": "X-Mailgun-Tag",
                                  "value": "my-cool-tag"
                                }
                              ]
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "SMS / MMS",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of your SMS."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "type": {
                            "type": "string",
                            "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                            "enum": [
                              "twilio"
                            ],
                            "readOnly": true
                          },
                          "image_url": {
                            "type": "string",
                            "description": "The URL of the image in your SMS (MMS) message."
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "recipient": {
                            "type": "string",
                            "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                            "example": ""
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "WhatsApp",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          }
                        }
                      },
                      {
                        "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action.",
                            "readOnly": true,
                            "example": "Welcome Message"
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                            "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                          },
                          "body_json": {
                            "type": "string",
                            "description": "For visual editor content (if applicable)."
                          },
                          "language": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                            "example": "fr",
                            "readOnly": true
                          },
                          "type": {
                            "type": "string",
                            "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                            "enum": [
                              "whatsapp"
                            ],
                            "readOnly": true
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          },
                          "recipient": {
                            "type": "string",
                            "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                            "example": ""
                          },
                          "sender_identity_id": {
                            "type": "integer",
                            "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                          },
                          "send_to_unsubscribed": {
                            "type": "boolean",
                            "description": "Whether to send this message to unsubscribed customers."
                          },
                          "tracked": {
                            "type": "boolean",
                            "description": "Whether links in template parameters should be tracked.",
                            "default": false
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "Webhook",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the action, if it exists.",
                            "readOnly": true,
                            "example": "Opening Message"
                          },
                          "layout": {
                            "type": "string",
                            "description": "The layout used for the action, if it exists.",
                            "readOnly": true
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "body": {
                            "type": "string",
                            "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of action.",
                            "enum": [
                              "webhook"
                            ],
                            "readOnly": true
                          },
                          "url": {
                            "type": "string",
                            "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                            "example": "https://my.example.com/webhook"
                          },
                          "headers": {
                            "x-scalar-ignore": true,
                            "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                            "type": "string",
                            "format": "json",
                            "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                          },
                          "method": {
                            "description": "The HTTP method for your webhook.",
                            "type": "string",
                            "enum": [
                              "get",
                              "post",
                              "put",
                              "delete",
                              "patch"
                            ],
                            "example": "post"
                          },
                          "sending_state": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "enum": [
                              "automatic",
                              "draft",
                              "off"
                            ],
                            "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated broadcast action.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "action": {
                      "x-scalar-ignore": true,
                      "oneOf": [
                        {
                          "title": "Email / message",
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "email",
                                    "in_app",
                                    "push",
                                    "twilio",
                                    "slack",
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "from": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                  "readOnly": true,
                                  "example": "sentFrom@example.com"
                                },
                                "from_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "example": 1
                                },
                                "reply_to": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The address that receives replies for the message, if applicable.",
                                  "readOnly": true,
                                  "example": "replyto@example.com"
                                },
                                "reply_to_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                  "nullable": true,
                                  "example": 38
                                },
                                "preprocessor": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                  "enum": [
                                    "premailer"
                                  ],
                                  "readOnly": true
                                },
                                "recipient": {
                                  "x-scalar-ignore": true,
                                  "description": "The recipient address for an action.",
                                  "type": "string",
                                  "example": "{{customer.email}}"
                                },
                                "subject": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The subject line for an `email` action.",
                                  "example": "Did you get that thing I sent you?"
                                },
                                "bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "description": "The blind-copy address(es) for this action.",
                                  "type": "string"
                                },
                                "fake_bcc": {
                                  "x-scalar-ignore": true,
                                  "readOnly": true,
                                  "type": "boolean",
                                  "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                                },
                                "preheader_text": {
                                  "x-scalar-ignore": true,
                                  "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."
                                },
                                "body_amp": {
                                  "x-scalar-ignore": true,
                                  "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."
                                }
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "SMS / MMS",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of your SMS."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For SMS/MMS messages, the `type` is always `twilio`.",
                                  "enum": [
                                    "twilio"
                                  ],
                                  "readOnly": true
                                },
                                "image_url": {
                                  "type": "string",
                                  "description": "The URL of the image in your SMS (MMS) message."
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient value. In general, your recipient is an attribute that you reference using liquid, like `{{customer.phone}}`, instead of a hard-coded value. If you set this field to a liquid statement like `{{customer.phone}}`, the field returns blank in `GET` requests because we populate the recipient from your liquid statement at send time.",
                                  "example": ""
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "WhatsApp",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "description": "The action object for WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio). Messages sent through Twilio still use the `twilio` type and are treated similarly to SMS messages.",
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action.",
                                  "readOnly": true,
                                  "example": "Welcome Message"
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "A JSON string containing the WhatsApp message template structure. This includes \nthe template metadata (`whatsapp_message_template`) from Meta and the template \nparameters (`template_parameters`) with liquid variables that populate the template \nplaceholders. You can retrieve available templates via `GET /v1/environments/{environment_id}/whatsapp/templates`.\n",
                                  "example": "{\"body\":\"\",\"image_url\":\"\",\"whatsapp_message_template\":{\"id\":\"12345\",\"name\":\"welcome\",\"language\":\"en_US\",\"status\":\"APPROVED\",\"components\":[...]},\"template_parameters\":{\"name\":\"welcome\",\"components\":[{\"type\":\"BODY\",\"parameters\":[{\"type\":\"text\",\"text\":\"{{customer.name}}\",\"parameter_name\":\"name\"}]}]}}"
                                },
                                "body_json": {
                                  "type": "string",
                                  "description": "For visual editor content (if applicable)."
                                },
                                "language": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                  "example": "fr",
                                  "readOnly": true
                                },
                                "type": {
                                  "type": "string",
                                  "description": "For WhatsApp messages sent from Customer.io using your Facebook Business Account (not Twilio), the `type` is always `whatsapp`.",
                                  "enum": [
                                    "whatsapp"
                                  ],
                                  "readOnly": true
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                },
                                "recipient": {
                                  "type": "string",
                                  "description": "The recipient phone number in E.164 format. Typically referenced using liquid \nlike `{{customer.phone}}`. If you set this field to a liquid statement, the \nfield returns blank in `GET` requests because we populate the recipient from \nyour liquid statement at send time.\n",
                                  "example": ""
                                },
                                "sender_identity_id": {
                                  "type": "integer",
                                  "description": "The ID of the WhatsApp Business phone number to send from. This corresponds to \na phone number registered in your WhatsApp Business Account and synced via \n`GET /v1/environments/{environment_id}/whatsapp/sync`.\n"
                                },
                                "send_to_unsubscribed": {
                                  "type": "boolean",
                                  "description": "Whether to send this message to unsubscribed customers."
                                },
                                "tracked": {
                                  "type": "boolean",
                                  "description": "Whether links in template parameters should be tracked.",
                                  "default": false
                                }
                              }
                            }
                          ]
                        },
                        {
                          "title": "Webhook",
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "x-scalar-ignore": true,
                                  "description": "The identifier for an action.",
                                  "type": "integer",
                                  "readOnly": true,
                                  "example": 96
                                },
                                "broadcast_id": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "description": "The identifier for a broadcast.",
                                  "example": 2
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "properties": {
                                "deduplicate_id": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "readOnly": true,
                                  "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                  "example": "15:1492548073"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The name of the action, if it exists.",
                                  "readOnly": true,
                                  "example": "Opening Message"
                                },
                                "layout": {
                                  "type": "string",
                                  "description": "The layout used for the action, if it exists.",
                                  "readOnly": true
                                },
                                "created": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was created.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "updated": {
                                  "x-scalar-ignore": true,
                                  "type": "integer",
                                  "format": "unix timestamp",
                                  "description": "The date time when the referenced ID was last updated.",
                                  "example": 1552341937,
                                  "readOnly": true
                                },
                                "body": {
                                  "type": "string",
                                  "description": "The body of the action. You cannot modify the body if you created it with our drag-and-drop editor."
                                },
                                "type": {
                                  "type": "string",
                                  "description": "The type of action.",
                                  "enum": [
                                    "webhook"
                                  ],
                                  "readOnly": true
                                },
                                "url": {
                                  "type": "string",
                                  "description": "The URL to send a webhook to, applies to `webhook` type actions.",
                                  "example": "https://my.example.com/webhook"
                                },
                                "headers": {
                                  "x-scalar-ignore": true,
                                  "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                  "type": "string",
                                  "format": "json",
                                  "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                                },
                                "method": {
                                  "description": "The HTTP method for your webhook.",
                                  "type": "string",
                                  "enum": [
                                    "get",
                                    "post",
                                    "put",
                                    "delete",
                                    "patch"
                                  ],
                                  "example": "post"
                                },
                                "sending_state": {
                                  "x-scalar-ignore": true,
                                  "type": "string",
                                  "enum": [
                                    "automatic",
                                    "draft",
                                    "off"
                                  ],
                                  "description": "Determines the sending behavior for the action. `automatic` sends the action automatically when triggered; `draft` queues drafts when the action is triggered; or `off` to disable the action."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid. Or the `language` does not exist for this action."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/actions/{action_id}/language/{language} \\\n  --header 'content-type: application/json' \\\n  --data '{\"broadcast_id\":2,\"body\":\"string\",\"sending_state\":\"automatic\",\"from_id\":1,\"reply_to_id\":38,\"recipient\":\"{{customer.email}}\",\"subject\":\"Did you get that thing I sent you?\",\"preheader_text\":\"string\",\"body_amp\":\"string\",\"headers\":[[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"}]]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  broadcast_id: 2,\n  body: 'string',\n  sending_state: 'automatic',\n  from_id: 1,\n  reply_to_id: 38,\n  recipient: '{{customer.email}}',\n  subject: 'Did you get that thing I sent you?',\n  preheader_text: 'string',\n  body_amp: 'string',\n  headers: [[{name: 'X-Mailgun-Tag', value: 'my-cool-tag'}]]\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/language/%7Blanguage%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"broadcast_id\\\":2,\\\"body\\\":\\\"string\\\",\\\"sending_state\\\":\\\"automatic\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts/{broadcast_id}/actions/{action_id}/metrics": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a broadcast.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "action_id",
          "in": "path",
          "required": true,
          "description": "The action you want to lookup or act on.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        }
      ],
      "get": {
        "operationId": "broadcastActionMetrics",
        "summary": "Get broadcast action metrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of metrics for an individual action both in total and in `steps` (days, weeks, etc) over a period of time. Stepped `series` metrics return from oldest to newest (i.e. the 0-index for any result is the oldest step/period).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns action metrics by `series` (with increments are based on the `period` and `step` in your request) for the broadcast.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "metric": {
                      "type": "object",
                      "properties": {
                        "series": {
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                              "properties": {
                                "2xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "2xx responses by period, representative of webhook performance."
                                },
                                "3xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "3xx responses by period, representative of webhook performance."
                                },
                                "4xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "4xx responses by period, representative of webhook performance."
                                },
                                "5xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "5xx responses by period, representative of webhook performance."
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                              "type": "object",
                              "properties": {
                                "attempted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `attempted` messages."
                                },
                                "bounced": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `bounced` messages."
                                },
                                "clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` messages."
                                },
                                "human_clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` emails excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                },
                                "prefetch_clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` emails attributed to machines. This metric is reliable starting April 20, 2025."
                                },
                                "converted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `converted` messages."
                                },
                                "created": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `created` messages."
                                },
                                "deferred": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `deferred` messages."
                                },
                                "delivered": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `delivered` messages."
                                },
                                "drafted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `drafted` messages."
                                },
                                "failed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `failed` messages."
                                },
                                "opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` messages."
                                },
                                "human_opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` emails excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                },
                                "prefetch_opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` emails attributed to machines. This metric is reliable starting March 20, 2025."
                                },
                                "sent": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of sent messages."
                                },
                                "spammed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of spam complaints."
                                },
                                "suppressed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `suppressed` messages."
                                },
                                "undeliverable": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `undeliverable` messages."
                                },
                                "topic_unsubscribed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of topic unsubscribes in a given period."
                                },
                                "unsubscribed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of unsubscribes attributed to the campaign or message."
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/actions/{action_id}/metrics"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/metrics\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/metrics\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/metrics\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/metrics\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts/{broadcast_id}/actions/{action_id}/metrics/links": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a broadcast.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "action_id",
          "in": "path",
          "required": true,
          "description": "The action you want to lookup or act on.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        }
      ],
      "get": {
        "operationId": "broadcastActionLinks",
        "summary": "Get broadcast action link metrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns link click metrics for an individual broadcast action. Unless you specify otherwise, the response contains data for the maximum period by days (45 days).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns broadcast variant metrics by `series` (with increments are based on the `period` and `step` in your request) for the broadcast.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "links": {
                      "type": "array",
                      "description": "Each object in the array represents a link in your broadcast variant.",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "link": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The ID of the link.",
                                "example": 1234
                              },
                              "href": {
                                "type": "string",
                                "description": "The link destination—a URL, mailto, etc.",
                                "example": "https://docs.customer.io"
                              }
                            }
                          },
                          "metric": {
                            "type": "object",
                            "description": "Contains metrics for the link.",
                            "properties": {
                              "series": {
                                "type": "object",
                                "properties": {
                                  "clicked": {
                                    "type": "array",
                                    "description": "An array of results from oldest to newest, where each result indicates a period.",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "example": [
                                      1,
                                      3,
                                      5,
                                      7
                                    ]
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/actions/{action_id}/metrics/links"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/metrics/links\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/metrics/links\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/metrics/links\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/actions/%7Baction_id%7D/metrics/links\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/broadcasts/{broadcast_id}/triggers": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "broadcast_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a broadcast.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "operationId": "listBroadcastTriggers",
        "summary": "Get broadcast triggers",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of the `triggers` for a broadcast.",
        "tags": [
          "Broadcasts"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `triggers`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "triggers": {
                      "type": "array",
                      "description": "Each object in the array represents a time that your broadcast was triggered/sent.",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "description": "You can get triggers to know when you triggered a broadcast and whether or not it's been processed.",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "description": "The identifier for a broadcast trigger."
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "created_at": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "processed_at": {
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date-time when Customer.io processed the trigger."
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `broadcastID`, `actionID` or `triggerID` is invalid."
          },
          "404": {
            "description": "The broadcast, action, and/or trigger do not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/broadcasts/{broadcast_id}/triggers"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/broadcasts/%7Bbroadcast_id%7D/triggers\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/triggers\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/broadcasts/%7Bbroadcast_id%7D/triggers\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/broadcasts/%7Bbroadcast_id%7D/triggers\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/data_index/attributes": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "summary": "Add or update attributes",
        "operationId": "updateAttributeMetadata",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Attributes are customer data like their name and email. Use this endpoint to add new attributes or update existing attributes in your workspace. To add attributes to customers, use our Pipelines or Track APIs. **NOTE:** If you add new attributes, they will not appear in your [Data Index](/journeys/using-data-index/) until you've added it to a customer's profile.\n\nAdd descriptions for attributes [so our AI tools can better understand your data](/ai/cio-with-llms/). For instance, this influences how our segment builder generates conditions with AI.\n\nIf you're on a Premium plan, you can also specify [whether an attribute is sensitive or not](/accounts-and-workspaces/add-remove-team-members/#hide-sensitive-attributes). Then Admins and Workspace Admins can decide which teammates to hide sensitive data from.\n",
        "tags": [
          "Data Index"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "attributes"
                ],
                "properties": {
                  "attributes": {
                    "type": "array",
                    "description": "Array of attribute updates",
                    "minItems": 1,
                    "maxItems": 100,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "The name of the attribute to update",
                          "example": "last_active"
                        },
                        "description": {
                          "type": "string",
                          "maxLength": 255,
                          "description": "The purpose of the attribute. This helps our AI tools understand your data.",
                          "example": "The last time the user clicked something on our app after logging in."
                        },
                        "privacy_level": {
                          "type": "integer",
                          "enum": [
                            0,
                            1
                          ],
                          "description": "Available on Premium plans. This indicates whether an attribute is sensitive or not. \n\n0 means NOT sensitive. \n\n1 means sensitive.\n",
                          "example": 0
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Attributes updated successfully"
          },
          "400": {
            "description": "Invalid request format",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "The reason for failure.",
                            "enum": [
                              "Invalid request format"
                            ]
                          },
                          "status": {
                            "type": "string",
                            "description": "The response code.",
                            "enum": [
                              400
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "The reason for the response.",
                            "enum": [
                              "Empty attributes array",
                              "Too many attributes",
                              "Privacy level feature not enabled"
                            ]
                          },
                          "status": {
                            "type": "string",
                            "description": "The response code.",
                            "enum": [
                              422
                            ]
                          },
                          "source": {
                            "type": "object",
                            "properties": {
                              "pointer": {
                                "type": "string",
                                "description": "The path to the attribute that caused the error. 0 is the first attribute, 1 is the second, and so on."
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "empty_attributes": {
                    "summary": "Empty attributes array",
                    "value": {
                      "errors": [
                        {
                          "detail": "At least one attribute is required",
                          "source": {
                            "pointer": "/data/attributes/attributes"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  },
                  "too_many_attributes": {
                    "summary": "Too many attributes",
                    "value": {
                      "errors": [
                        {
                          "detail": "Can not update more than 100 attributes at once",
                          "source": {
                            "pointer": "/data/attributes/attributes"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  },
                  "privacy_level_not_enabled": {
                    "summary": "Privacy level feature not enabled",
                    "value": {
                      "errors": [
                        {
                          "detail": "Privacy level updates are not available. Please contact support to enable this feature.",
                          "source": {
                            "pointer": "/data/attributes/attributes[0].privacy_level"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"attributes\": [\n    {\n      \"name\": \"last_active\"\n    }\n  ]\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/data_index/attributes \\\n  --header 'content-type: application/json' \\\n  --data '{\"attributes\":[{\"name\":\"last_active\",\"description\":\"The last time the user clicked something on our app after logging in.\",\"privacy_level\":0}]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/data_index/attributes\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  attributes: [\n    {\n      name: 'last_active',\n      description: 'The last time the user clicked something on our app after logging in.',\n      privacy_level: 0\n    }\n  ]\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/data_index/attributes\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"attributes\\\":[{\\\"name\\\":\\\"last_active\\\",\\\"description\\\":\\\"The last time the user clicked something on our app after logging in.\\\",\\\"privacy_level\\\":0}]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"attributes\\\":[{\\\"name\\\":\\\"last_active\\\",\\\"description\\\":\\\"The last time the user clicked something on our app after logging in.\\\",\\\"privacy_level\\\":0}]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/data_index/attributes\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/data_index/attributes\"\n\n\tpayload := strings.NewReader(\"{\\\"attributes\\\":[{\\\"name\\\":\\\"last_active\\\",\\\"description\\\":\\\"The last time the user clicked something on our app after logging in.\\\",\\\"privacy_level\\\":0}]}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/data_index/events": {
      "post": {
        "summary": "Add or update events",
        "operationId": "updateEventMetadata",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Events are actions your customers have performed. Use this endpoint to add new events or update existing events in your workspace. To associate events with customers, use our Pipelines or Track APIs. **NOTE:** If you add new events, they will not appear in your [Data Index](/journeys/using-data-index/) until you've associated it with a customer.\n\nAdd descriptions for events [so our AI tools can better understand your data](/ai/cio-with-llms/). For instance, this influences how our segment builder generates conditions with AI.\n",
        "tags": [
          "Data Index"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "events"
                ],
                "properties": {
                  "events": {
                    "type": "array",
                    "description": "Array of event updates",
                    "minItems": 1,
                    "maxItems": 100,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "The name of the event",
                          "example": "purchase_completed"
                        },
                        "description": {
                          "type": "string",
                          "maxLength": 255,
                          "description": "The meaning of the event",
                          "example": "User successfully completed a purchase"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Events updated successfully"
          },
          "400": {
            "description": "Invalid request format",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "The reason for the response.",
                            "enum": [
                              "Invalid request format"
                            ]
                          },
                          "status": {
                            "type": "string",
                            "description": "The response code.",
                            "enum": [
                              400
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "enum": [
                              "Empty events array",
                              "Too many events"
                            ],
                            "description": "The reason for the response."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              422
                            ]
                          },
                          "source": {
                            "type": "object",
                            "properties": {
                              "pointer": {
                                "type": "string",
                                "description": "The path to the event that caused the error."
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "empty_events": {
                    "summary": "Empty events array",
                    "value": {
                      "errors": [
                        {
                          "detail": "At least one event is required",
                          "source": {
                            "pointer": "/data/attributes/events"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  },
                  "too_many_events": {
                    "summary": "Too many events",
                    "value": {
                      "errors": [
                        {
                          "detail": "Can not update more than 100 events at once",
                          "source": {
                            "pointer": "/data/attributes/events"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"events\": [\n    {\n      \"name\": \"purchase_completed\"\n    }\n  ]\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/data_index/events \\\n  --header 'content-type: application/json' \\\n  --data '{\"events\":[{\"name\":\"purchase_completed\",\"description\":\"User successfully completed a purchase\"}]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/data_index/events\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  events: [\n    {\n      name: 'purchase_completed',\n      description: 'User successfully completed a purchase'\n    }\n  ]\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/data_index/events\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"events\\\":[{\\\"name\\\":\\\"purchase_completed\\\",\\\"description\\\":\\\"User successfully completed a purchase\\\"}]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"events\\\":[{\\\"name\\\":\\\"purchase_completed\\\",\\\"description\\\":\\\"User successfully completed a purchase\\\"}]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/data_index/events\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/data_index/events\"\n\n\tpayload := strings.NewReader(\"{\\\"events\\\":[{\\\"name\\\":\\\"purchase_completed\\\",\\\"description\\\":\\\"User successfully completed a purchase\\\"}]}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/design_studio/folders": {
      "get": {
        "tags": [
          "Design Studio"
        ],
        "summary": "List folders",
        "operationId": "listFolders",
        "description": "Returns a paginated list of folders. This does not include files like emails, components, etc.\n",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number of results you want to display. Use with `limit`.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the number of results per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 1000
            }
          },
          {
            "name": "parent_folder_id",
            "in": "query",
            "description": "Filter by parent folder. Must reference an existing folder.",
            "schema": {
              "type": "string",
              "minimum": 0,
              "format": "uuid"
            }
          },
          {
            "name": "direct_descendants_only",
            "in": "query",
            "description": "If true, this returns only children of the parent folder.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "created",
                "updated",
                "name"
              ],
              "default": "created"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "asc"
            }
          },
          {
            "name": "created_before",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records created before this time."
          },
          {
            "name": "created_after",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records created after this time."
          },
          {
            "name": "updated_before",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records updated before this time."
          },
          {
            "name": "updated_after",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records updated after this time."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "folders": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID of folder",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the folder."
                          },
                          "parent_folder_id": {
                            "type": "string",
                            "nullable": true,
                            "description": "The ID of the parent folder. Returns `null` if there is no parent, which means the folder is in the root directory.",
                            "format": "uuid"
                          },
                          "created": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "Timestamp of when the folder was created."
                          },
                          "updated": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "Timestamp of last update to the folder."
                          }
                        },
                        "example": {
                          "id": "123e4567-e89b-12d3-a456-426614174000",
                          "name": "Product Announcements",
                          "parent_folder_id": null,
                          "created": 1714732800,
                          "updated": 1714732800
                        }
                      }
                    },
                    "meta": {
                      "type": "object",
                      "description": "Metadata about the paginated response including pagination details and applied filters.",
                      "properties": {
                        "pagination": {
                          "type": "object",
                          "description": "Pagination details for the current result set.",
                          "properties": {
                            "page": {
                              "type": "integer",
                              "description": "The page number of results you're on."
                            },
                            "limit": {
                              "type": "integer",
                              "description": "The number of results per page."
                            },
                            "total": {
                              "type": "integer",
                              "description": "The total number of folders."
                            }
                          }
                        },
                        "filters": {
                          "type": "object",
                          "description": "The filters applied in your request.",
                          "properties": {
                            "parent_folder_id": {
                              "type": "string",
                              "nullable": true,
                              "description": "The parent folder ID filter that was applied, or null if not filtering by parent."
                            },
                            "direct_descendants_only": {
                              "type": "boolean",
                              "description": "Whether the results were limited to direct descendants only."
                            }
                          },
                          "example": {
                            "parent_folder_id": "123e4567-e89b-12d3-a456-426614174000",
                            "direct_descendants_only": true,
                            "sort_by": "created",
                            "sort_order": "desc",
                            "created_before": 1714732800,
                            "created_after": null,
                            "updated_before": null,
                            "updated_after": null
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "invalid query parameter",
                      "status": 400
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url 'https://api.customer.io/v1/design_studio/folders?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/folders?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/folders?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/design_studio/folders?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/folders?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "post": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Create a folder",
        "description": "Create a new folder at the root level or under a parent folder. To create a child folder, you need the UUID of the parent folder, which you can retrieve with [List folders](#tag/design-studio/listFolders).\n",
        "operationId": "createFolder",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of the folder. Cannot contain these characters: < > : \" / \\ | ? * .\n",
                    "minLength": 1,
                    "maxLength": 170
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "description": "UUID of the parent folder. Omit or pass `null` to create at root.",
                    "format": "uuid",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Folder created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "folder": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID of folder",
                          "format": "uuid"
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the folder."
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "nullable": true,
                          "description": "The ID of the parent folder. Returns `null` if there is no parent, which means the folder is in the root directory.",
                          "format": "uuid"
                        },
                        "created": {
                          "type": "integer",
                          "format": "Unix timestamp",
                          "description": "Timestamp of when the folder was created."
                        },
                        "updated": {
                          "type": "integer",
                          "format": "Unix timestamp",
                          "description": "Timestamp of last update to the folder."
                        }
                      },
                      "example": {
                        "id": "123e4567-e89b-12d3-a456-426614174000",
                        "name": "Product Announcements",
                        "parent_folder_id": null,
                        "created": 1714732800,
                        "updated": 1714732800
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "description": "The name is missing or invalid, the parent folder id is an empty string, or there's an unknown JSON field in the request body",
                            "type": "string"
                          },
                          "status": {
                            "description": "Response code",
                            "type": "integer"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "errors": [
                      {
                        "detail": "missing or invalid name",
                        "status": 400
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Response not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "parent folder not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"string\"\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --url https://api.customer.io/v1/design_studio/folders \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"parent_folder_id\":\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/folders\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({name: 'string', parent_folder_id: '26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec'}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/folders\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/design_studio/folders\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/folders\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\"}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/design_studio/folders/{id}": {
      "get": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Get a folder",
        "description": "Get a folder by its UUID. You can retrieve the UUID of folders through [List folders](#tag/design-studio/listFolders).\n",
        "operationId": "getFolder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the folder.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "folder": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID of folder",
                          "format": "uuid"
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the folder."
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "nullable": true,
                          "description": "The ID of the parent folder. Returns `null` if there is no parent, which means the folder is in the root directory.",
                          "format": "uuid"
                        },
                        "created": {
                          "type": "integer",
                          "format": "Unix timestamp",
                          "description": "Timestamp of when the folder was created."
                        },
                        "updated": {
                          "type": "integer",
                          "format": "Unix timestamp",
                          "description": "Timestamp of last update to the folder."
                        }
                      },
                      "example": {
                        "id": "123e4567-e89b-12d3-a456-426614174000",
                        "name": "Product Announcements",
                        "parent_folder_id": null,
                        "created": 1714732800,
                        "updated": 1714732800
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url https://api.customer.io/v1/design_studio/folders/{id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/folders/%7Bid%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/folders/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/design_studio/folders/%7Bid%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/folders/%7Bid%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Update a folder",
        "description": "Update the name of a folder or change the folder it belongs to.\n",
        "operationId": "updateFolder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the folder.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the folder. Cannot contain any of these characters: < > : \" / \\ | ? * .\n",
                    "minLength": 1,
                    "maxLength": 170
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "The UUID of the parent folder. \n\nOmit if you want no change to where the folder or file is located. Include `null` to move it to your root directory. Or add the UUID of another folder to move it there.\n",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successful response, no content returned"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "description": "Possible reasons for error: No fields provided, invalid name, parent_folder_id is an empty string or not a valid place to move the folder to, or unknown JSON field in request body\n",
                            "type": "string"
                          },
                          "status": {
                            "description": "Response code",
                            "type": "integer"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "errors": [
                      {
                        "detail": "missing or invalid name",
                        "status": 400
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --url https://api.customer.io/v1/design_studio/folders/{id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"parent_folder_id\":\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/folders/%7Bid%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({name: 'string', parent_folder_id: '26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec'}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/folders/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/design_studio/folders/%7Bid%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/folders/%7Bid%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\"}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "delete": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Delete a folder",
        "description": "Delete a folder **including subfolders and files**. You cannot delete a folder with files used in your workflows (campaigns, broadcasts, etc).",
        "operationId": "deleteFolder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the folder.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful response, no content returned"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --url https://api.customer.io/v1/design_studio/folders/{id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/folders/%7Bid%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/folders/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/design_studio/folders/%7Bid%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/folders/%7Bid%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/design_studio/emails": {
      "get": {
        "tags": [
          "Design Studio"
        ],
        "summary": "List emails",
        "description": "Returns a paginated list of emails and a separate array of folders that the emails belong to.\n",
        "operationId": "listEmails",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number of results you want to display. Use with `limit`.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the number of results per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 1000
            }
          },
          {
            "name": "parent_folder_id",
            "in": "query",
            "description": "Filter by parent folder. Must reference an existing folder.",
            "schema": {
              "type": "string",
              "minimum": 0,
              "format": "uuid"
            }
          },
          {
            "name": "direct_descendants_only",
            "in": "query",
            "description": "If true, this returns only children of the parent folder.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "created",
                "updated",
                "name"
              ],
              "default": "created"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "asc"
            }
          },
          {
            "name": "created_before",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records created before this time."
          },
          {
            "name": "created_after",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records created after this time."
          },
          {
            "name": "updated_before",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records updated before this time."
          },
          {
            "name": "updated_after",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records updated after this time."
          },
          {
            "name": "is_template",
            "description": "Filter by whether the email is a template",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "has_translations",
            "description": "Filter by whether the email has translations",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false",
                "any"
              ],
              "default": "any"
            }
          },
          {
            "name": "is_linked",
            "description": "Filter by whether the email is linked to a workflow (campaign, broadcast, etc).",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false",
                "any"
              ],
              "default": "any"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "emails": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "ID of email"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the email"
                          },
                          "is_template": {
                            "type": "boolean",
                            "description": "Whether the email is a template"
                          },
                          "is_linked": {
                            "type": "boolean",
                            "description": "Whether the email is linked to a workflow (campaign, broadcast, etc)"
                          },
                          "has_translations": {
                            "type": "boolean",
                            "description": "Whether the email has translations"
                          },
                          "parent_folder_id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "The ID of the parent folder. Returns `null` if there is no parent, which means the folder is in the root directory.",
                            "nullable": true
                          },
                          "created": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "Timestamp of when the email was created.",
                            "example": 1714732800
                          },
                          "updated": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "Timestamp of last update to the email.",
                            "example": 1714732800
                          }
                        }
                      }
                    },
                    "folders": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID of folder",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the folder."
                          },
                          "parent_folder_id": {
                            "type": "string",
                            "nullable": true,
                            "description": "The ID of the parent folder. Returns `null` if there is no parent, which means the folder is in the root directory.",
                            "format": "uuid"
                          },
                          "created": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "Timestamp of when the folder was created."
                          },
                          "updated": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "Timestamp of last update to the folder."
                          }
                        },
                        "example": {
                          "id": "123e4567-e89b-12d3-a456-426614174000",
                          "name": "Product Announcements",
                          "parent_folder_id": null,
                          "created": 1714732800,
                          "updated": 1714732800
                        }
                      }
                    },
                    "meta": {
                      "type": "object",
                      "description": "Metadata about the paginated response including pagination details and applied filters.",
                      "properties": {
                        "pagination": {
                          "type": "object",
                          "description": "Pagination details for the current result set.",
                          "properties": {
                            "page": {
                              "type": "integer",
                              "description": "The page number of results you're on."
                            },
                            "limit": {
                              "type": "integer",
                              "description": "The number of results per page."
                            },
                            "total": {
                              "type": "integer",
                              "description": "The total number of folders."
                            }
                          }
                        },
                        "filters": {
                          "type": "object",
                          "description": "The filters applied in your request.",
                          "properties": {
                            "parent_folder_id": {
                              "type": "string",
                              "nullable": true,
                              "description": "The parent folder ID filter that was applied, or null if not filtering by parent."
                            },
                            "direct_descendants_only": {
                              "type": "boolean",
                              "description": "Whether the results were limited to direct descendants only."
                            }
                          },
                          "example": {
                            "parent_folder_id": "123e4567-e89b-12d3-a456-426614174000",
                            "direct_descendants_only": true,
                            "sort_by": "created",
                            "sort_order": "desc",
                            "created_before": 1714732800,
                            "created_after": null,
                            "updated_before": null,
                            "updated_after": null
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "invalid query parameter",
                      "status": 400
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url 'https://api.customer.io/v1/design_studio/emails?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE&is_template=SOME_STRING_VALUE&has_translations=SOME_STRING_VALUE&is_linked=SOME_STRING_VALUE'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/emails?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE&is_template=SOME_STRING_VALUE&has_translations=SOME_STRING_VALUE&is_linked=SOME_STRING_VALUE\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/emails?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE&is_template=SOME_STRING_VALUE&has_translations=SOME_STRING_VALUE&is_linked=SOME_STRING_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/design_studio/emails?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE&is_template=SOME_STRING_VALUE&has_translations=SOME_STRING_VALUE&is_linked=SOME_STRING_VALUE\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/emails?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE&is_template=SOME_STRING_VALUE&has_translations=SOME_STRING_VALUE&is_linked=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "post": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Create an email",
        "description": "Create an email. Note, you can create an email without filling out all required fields for sending. You can fill in the envelope, like a to and from address, with this method, but that's not required until you connect it to a workflow like a campaign.",
        "operationId": "createEmail",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Display name of the email."
                  },
                  "is_template": {
                    "type": "boolean",
                    "default": false,
                    "description": "Whether the email is a reusable template."
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "UUID of the parent folder. Omit or pass `null` to create at root."
                  },
                  "content": {
                    "type": "object",
                    "description": "The content of your email.",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Email subject line."
                      },
                      "preheader_text": {
                        "type": "string",
                        "description": "Preview text."
                      },
                      "html": {
                        "type": "string",
                        "description": "HTML body."
                      },
                      "amp": {
                        "type": "string",
                        "description": "AMP HTML body."
                      },
                      "text": {
                        "type": "string",
                        "description": "Plain text body."
                      }
                    }
                  },
                  "envelope": {
                    "type": "object",
                    "description": "The envelope of your email, like from and to addresses.",
                    "properties": {
                      "from_id": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Sender identity ID. Must reference an existing identity. You can find this in *Workspace Settings > Email* under your From Addresses.\n"
                      },
                      "reply_to_id": {
                        "type": "integer",
                        "format": "int64",
                        "nullable": true,
                        "description": "Reply-to identity ID. Must reference an existing identity from *Workspace Settings > Email* under your From Addresses.\n"
                      },
                      "recipient": {
                        "type": "string",
                        "description": "Recipient email address. Defaults to `{{customer.email}}`` if not set.\n"
                      },
                      "bcc": {
                        "type": "string",
                        "description": "BCC email address."
                      },
                      "fake_bcc": {
                        "type": "boolean",
                        "description": "Whether to use fake BCC. Defaults to true if not provided."
                      },
                      "headers": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          }
                        },
                        "description": "Custom headers. Each item: { \"name\": \"string\", \"value\": \"string\" }.\n"
                      }
                    }
                  },
                  "transformers": {
                    "type": "object",
                    "description": "Automate repetitive actions like removing white space and inlining CSS with [transformers](/journeys/code-editor-overview/#transformers).",
                    "properties": {
                      "url_parameters": {
                        "type": "object",
                        "description": "Appends query string parameters to all absolute URLs in `<a>` and VML elements. Useful for adding UTM tracking or other analytics parameters. Skips `mailto:`, `tel:`, and `sms:` links. Elements marked with `data-ignore-params` are excluded.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable URL parameter injection.\n",
                            "default": false
                          },
                          "parameters": {
                            "type": "array",
                            "description": "List of parameters to append to URLs.\n",
                            "default": [],
                            "items": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Parameter name.\n"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Parameter value. May contain template variables.\n"
                                },
                                "url_encode": {
                                  "type": "boolean",
                                  "description": "URL-encode the value before appending it to the URL.\n"
                                }
                              }
                            }
                          }
                        }
                      },
                      "css_variables": {
                        "type": "object",
                        "description": "Resolves CSS custom properties (`var(--name)`) into their computed values. Required for email clients that do not support CSS custom properties (most email clients). Variables declared in one `<style>` tag are available in subsequent `<style>` tags.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable CSS variable resolution.\n",
                            "default": false
                          },
                          "preserve": {
                            "type": "boolean",
                            "description": "Keep original custom property declarations (`--name: value`) alongside the resolved values.\n",
                            "default": false
                          }
                        }
                      },
                      "css_inliner": {
                        "type": "object",
                        "description": "Moves CSS from `<style>` tags into inline `style` attributes on each element. Essential for email clients with limited `<style>` support (for example, older Gmail and some Outlook versions). Uses the `juice` library. Elements in `<style>` tags marked with `data-ignore-inlining` are skipped.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable CSS inlining.\n",
                            "default": false
                          },
                          "apply_style_tags": {
                            "type": "boolean",
                            "description": "Inline styles from `<style>` tags.\n",
                            "default": true
                          },
                          "preserve_important": {
                            "type": "boolean",
                            "description": "Preserve `!important` declarations in inlined styles.\n",
                            "default": false
                          },
                          "remove_style_tags": {
                            "type": "boolean",
                            "description": "Remove `<style>` tags after inlining their rules.\n",
                            "default": true
                          },
                          "preserve_font_faces": {
                            "type": "boolean",
                            "description": "Keep `@font-face` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_media_queries": {
                            "type": "boolean",
                            "description": "Keep `@media` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_keyframes": {
                            "type": "boolean",
                            "description": "Keep `@keyframes` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_pseudos": {
                            "type": "boolean",
                            "description": "Keep pseudo-selector rules (for example, `:hover`) in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "inline_pseudo_elements": {
                            "type": "boolean",
                            "description": "Attempt to inline pseudo-element (`::before`, `::after`) styles.\n",
                            "default": false
                          },
                          "apply_html_attributes": {
                            "type": "object",
                            "description": "Controls adding redundant HTML attributes alongside inlined CSS to different HTML elements.\n",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable adding redundant HTML attributes.\n",
                                "default": true
                              },
                              "apply_width_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML `width` attributes alongside inlined CSS `width` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS width (for example, older Outlook).\n",
                                "default": true
                              },
                              "apply_height_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML `height` attributes alongside inlined CSS `height` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS height.\n",
                                "default": true
                              },
                              "apply_table_element_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML attributes on table elements (`<table>`, `<th>`, `<tr>`, `<td>`, `<caption>`, `<colgroup>`, `<col>`, `<thead>`, `<tbody>`, `<tfoot>`): `background-color` → `bgcolor`, `background-image` → `background`, `text-align` → `align`, `vertical-align` → `valign`.\n",
                                "default": true
                              }
                            }
                          }
                        }
                      },
                      "accessibility": {
                        "type": "object",
                        "description": "Applies a set of accessibility improvements to the email HTML. When no `language` is set, this falls back to the `lang` attribute on the `<html>` tag, or `\"und\"` (undetermined). The `dir` attribute is automatically derived from the language using RTL detection.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable accessibility fixes.\n",
                            "default": false
                          },
                          "language": {
                            "type": "string",
                            "description": "Language code (for example, `\"en\"`, `\"fr\"`, or `\"ar\"`) used for `lang` and `dir` attributes.\n",
                            "default": ""
                          },
                          "add_lang_to_html": {
                            "type": "boolean",
                            "description": "Add `lang` attribute to the `<html>` element if not already present.\n",
                            "default": true
                          },
                          "add_dir_to_html": {
                            "type": "boolean",
                            "description": "Add `dir` attribute (`ltr`, `rtl`, or `auto`) to the `<html>` element if not already present.\n",
                            "default": true
                          },
                          "add_lang_to_content": {
                            "type": "boolean",
                            "description": "Add `lang` attribute to direct children of `<body>`.\n",
                            "default": true
                          },
                          "add_dir_to_content": {
                            "type": "boolean",
                            "description": "Add `dir` attribute to direct children of `<body>`.\n",
                            "default": true
                          },
                          "add_role_to_tables": {
                            "type": "boolean",
                            "description": "Add `role=\"presentation\"` to all `<table>` elements without an existing `role`, so screen readers skip table semantics for layout tables.\n",
                            "default": true
                          },
                          "add_vml_alt_text": {
                            "type": "boolean",
                            "description": "Add `alt` attribute to VML elements (used by Outlook’s Word rendering engine), derived from the element’s text content.\n",
                            "default": true
                          },
                          "add_empty_alt_to_images": {
                            "type": "boolean",
                            "description": "Add `alt=\"\"` to `<img>` elements missing an `alt` attribute, preventing screen readers from reading the file name.\n",
                            "default": true
                          },
                          "add_title_to_head": {
                            "type": "boolean",
                            "description": "Add a `<title>` tag to `<head>` using the email subject line (creates or replaces if empty).\n",
                            "default": true
                          },
                          "remove_button_role_from_links": {
                            "type": "boolean",
                            "description": "Remove `role=\"button\"` from `<a>` tags to restore proper link semantics for screen readers.\n",
                            "default": true
                          },
                          "remove_zoom_meta_tag": {
                            "type": "boolean",
                            "description": "Remove viewport `<meta>` tags that restrict zoom (`user-scalable=0`, `user-scalable=no`, `maximum-scale=1`, or `maximum-scale=2`).\n",
                            "default": true
                          }
                        }
                      },
                      "formatter": {
                        "type": "object",
                        "description": "Controls the output formatting of the final HTML. Only one mode (`prettify` or `minify`) can be active at a time. Set to `\"none\"` to skip formatting entirely.\n",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Formatting mode to apply.\n",
                            "enum": [
                              "none",
                              "prettify",
                              "minify"
                            ],
                            "default": "none"
                          },
                          "prettify": {
                            "type": "object",
                            "description": "Options used when `type` is `\"prettify\"`. Produces human-readable, indented HTML output.\n",
                            "properties": {
                              "indent_character": {
                                "type": "string",
                                "description": "Character used for indentation.\n",
                                "enum": [
                                  "spaces",
                                  "tabs"
                                ],
                                "default": "spaces"
                              },
                              "indent_size": {
                                "type": "integer",
                                "description": "Number of indent characters per level.\n",
                                "default": 2
                              },
                              "wrap_attributes": {
                                "type": "boolean",
                                "description": "Wrap HTML attributes onto separate lines (`force-expand-multiline` mode).\n",
                                "default": false
                              }
                            }
                          },
                          "minify": {
                            "type": "object",
                            "description": "Options used when `type` is `\"minify\"`. Reduces file size by stripping whitespace and comments.\n",
                            "properties": {
                              "remove_line_breaks": {
                                "type": "boolean",
                                "description": "Remove all line breaks from the output.\n",
                                "default": false
                              },
                              "line_length_limit": {
                                "type": "integer",
                                "description": "Maximum characters per line before inserting a line break.\n",
                                "default": 500
                              },
                              "remove_indentations": {
                                "type": "boolean",
                                "description": "Remove leading whitespace indentation.\n",
                                "default": true
                              },
                              "remove_html_comments": {
                                "type": "string",
                                "description": "HTML comment removal level. `\"0\"` keeps all comments, `\"1\"` removes non-conditional comments (preserves MSO conditionals like `<!--[if mso]>`), and `\"2\"` removes all comments including conditional.\n",
                                "enum": [
                                  "0",
                                  "1",
                                  "2"
                                ],
                                "default": "0"
                              },
                              "remove_css_comments": {
                                "type": "boolean",
                                "description": "Remove CSS comments (`/* ... */`) from `<style>` blocks.\n",
                                "default": true
                              }
                            }
                          }
                        }
                      },
                      "prevent_widows": {
                        "type": "object",
                        "description": "Replaces the last space in text blocks with a non-breaking space (`&nbsp;`) to prevent a single word from wrapping onto its own line (a “widow”). Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags (`{{ }} ` and `{% %}`).\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable widow word prevention.\n",
                            "default": false
                          }
                        }
                      },
                      "encode_entities": {
                        "type": "object",
                        "description": "Encodes special characters (for example, `©`, `™`, and `—`) as their HTML entity equivalents. Improves rendering consistency across email clients with varying character encoding support. Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags and avoids double-encoding existing entities.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable HTML entity encoding.\n",
                            "default": false
                          }
                        }
                      },
                      "remove_unused_css": {
                        "type": "object",
                        "description": "Scans the HTML and removes any CSS selectors from `<style>` tags that are not referenced in the document. Reduces file size and helps avoid Gmail’s 102 KB clipping limit. HTML and CSS comments are always preserved by this step (comment removal is handled separately by the formatter object).\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable unused CSS removal.\n",
                            "default": false
                          },
                          "whitelist": {
                            "type": "array",
                            "description": "CSS selectors to always keep, even if they are not found in the HTML.\n  - .ReadMsgBody\n  - .ExternalClass\n  - .aBn\n  - .a6S\n  - .im\n  - .yshortcuts\n  - \"#outlook\"\n  - .MsoHyperlink\n  - .MsoHyperlinkFollowed                \n",
                            "items": {
                              "type": "string",
                              "description": "A CSS selector to always keep.\n"
                            }
                          },
                          "backend_markers": {
                            "type": "array",
                            "description": "Template syntax delimiters (e.g., Liquid, Handlebars) that the CSS parser should skip over to avoid treating template expressions as invalid CSS.\n",
                            "default": [
                              {
                                "heads": "",
                                "tails": ""
                              },
                              {
                                "heads": "{%",
                                "tails": "%}"
                              }
                            ],
                            "items": {
                              "type": "object",
                              "properties": {
                                "heads": {
                                  "type": "string",
                                  "description": "Opening delimiter.\n"
                                },
                                "tails": {
                                  "type": "string",
                                  "description": "Closing delimiter.\n"
                                }
                              }
                            }
                          },
                          "uglify": {
                            "type": "boolean",
                            "description": "Shorten (uglify) CSS class names to reduce file size.\n",
                            "default": false
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Unique identifier for the email."
                        },
                        "name": {
                          "type": "string",
                          "description": "Display name of the email."
                        },
                        "is_template": {
                          "type": "boolean",
                          "description": "Whether the email is a reusable template."
                        },
                        "is_linked": {
                          "type": "boolean",
                          "description": "Whether the email is currently linked to a workflow (campaign, broadcast, etc).\n"
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "format": "uuid",
                          "nullable": true,
                          "description": "UUID of the parent folder, or `null` if the email is in your root directory.\n"
                        },
                        "available_languages": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "List of [language codes](/journeys/localization-attribute/#supported-languages) that reflect the languages this default email has been translated to.",
                          "example": [
                            "en",
                            "es"
                          ]
                        },
                        "created": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp of when the email was created."
                        },
                        "updated": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp of the last update to the email."
                        },
                        "content": {
                          "type": "object",
                          "description": "The content of your email.",
                          "properties": {
                            "subject": {
                              "type": "string",
                              "description": "Email subject line."
                            },
                            "preheader_text": {
                              "type": "string",
                              "description": "Preview text."
                            },
                            "html": {
                              "type": "string",
                              "description": "HTML body."
                            },
                            "amp": {
                              "type": "string",
                              "description": "AMP HTML body."
                            },
                            "text": {
                              "type": "string",
                              "description": "Plain text body."
                            }
                          }
                        },
                        "envelope": {
                          "type": "object",
                          "properties": {
                            "from_id": {
                              "type": "integer",
                              "nullable": true,
                              "description": "Sender identity ID.\n"
                            },
                            "from": {
                              "type": "string",
                              "description": "The sender address associated with the from_id."
                            },
                            "reply_to_id": {
                              "type": "integer",
                              "nullable": true,
                              "description": "Reply-to identity ID. This matches one of the ids in *Workspace Settings > Email*.\n"
                            },
                            "reply_to": {
                              "type": "string",
                              "description": "The reply-to address associated with the reply_to_id."
                            },
                            "bcc": {
                              "type": "string",
                              "description": "BCC email address."
                            },
                            "fake_bcc": {
                              "type": "boolean",
                              "description": "Whether to use fake BCC. Defaults to true if not provided."
                            },
                            "headers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                }
                              },
                              "description": "Custom headers. Each item: { \"name\": \"string\", \"value\": \"string\" }.\n"
                            },
                            "recipient": {
                              "type": "string",
                              "description": "Recipient expression. Defaults to {{customer.email}} if not set."
                            }
                          }
                        },
                        "transformers": {
                          "type": "object",
                          "description": "Automate repetitive actions like removing white space and inlining CSS with [transformers](/journeys/code-editor-overview/#transformers).",
                          "properties": {
                            "url_parameters": {
                              "type": "object",
                              "description": "Appends query string parameters to all absolute URLs in `<a>` and VML elements. Useful for adding UTM tracking or other analytics parameters. Skips `mailto:`, `tel:`, and `sms:` links. Elements marked with `data-ignore-params` are excluded.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable URL parameter injection.\n",
                                  "default": false
                                },
                                "parameters": {
                                  "type": "array",
                                  "description": "List of parameters to append to URLs.\n",
                                  "default": [],
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string",
                                        "description": "Parameter name.\n"
                                      },
                                      "value": {
                                        "type": "string",
                                        "description": "Parameter value. May contain template variables.\n"
                                      },
                                      "url_encode": {
                                        "type": "boolean",
                                        "description": "URL-encode the value before appending it to the URL.\n"
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "css_variables": {
                              "type": "object",
                              "description": "Resolves CSS custom properties (`var(--name)`) into their computed values. Required for email clients that do not support CSS custom properties (most email clients). Variables declared in one `<style>` tag are available in subsequent `<style>` tags.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable CSS variable resolution.\n",
                                  "default": false
                                },
                                "preserve": {
                                  "type": "boolean",
                                  "description": "Keep original custom property declarations (`--name: value`) alongside the resolved values.\n",
                                  "default": false
                                }
                              }
                            },
                            "css_inliner": {
                              "type": "object",
                              "description": "Moves CSS from `<style>` tags into inline `style` attributes on each element. Essential for email clients with limited `<style>` support (for example, older Gmail and some Outlook versions). Uses the `juice` library. Elements in `<style>` tags marked with `data-ignore-inlining` are skipped.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable CSS inlining.\n",
                                  "default": false
                                },
                                "apply_style_tags": {
                                  "type": "boolean",
                                  "description": "Inline styles from `<style>` tags.\n",
                                  "default": true
                                },
                                "preserve_important": {
                                  "type": "boolean",
                                  "description": "Preserve `!important` declarations in inlined styles.\n",
                                  "default": false
                                },
                                "remove_style_tags": {
                                  "type": "boolean",
                                  "description": "Remove `<style>` tags after inlining their rules.\n",
                                  "default": true
                                },
                                "preserve_font_faces": {
                                  "type": "boolean",
                                  "description": "Keep `@font-face` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_media_queries": {
                                  "type": "boolean",
                                  "description": "Keep `@media` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_keyframes": {
                                  "type": "boolean",
                                  "description": "Keep `@keyframes` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_pseudos": {
                                  "type": "boolean",
                                  "description": "Keep pseudo-selector rules (for example, `:hover`) in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "inline_pseudo_elements": {
                                  "type": "boolean",
                                  "description": "Attempt to inline pseudo-element (`::before`, `::after`) styles.\n",
                                  "default": false
                                },
                                "apply_html_attributes": {
                                  "type": "object",
                                  "description": "Controls adding redundant HTML attributes alongside inlined CSS to different HTML elements.\n",
                                  "properties": {
                                    "enabled": {
                                      "type": "boolean",
                                      "description": "Enable adding redundant HTML attributes.\n",
                                      "default": true
                                    },
                                    "apply_width_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML `width` attributes alongside inlined CSS `width` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS width (for example, older Outlook).\n",
                                      "default": true
                                    },
                                    "apply_height_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML `height` attributes alongside inlined CSS `height` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS height.\n",
                                      "default": true
                                    },
                                    "apply_table_element_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML attributes on table elements (`<table>`, `<th>`, `<tr>`, `<td>`, `<caption>`, `<colgroup>`, `<col>`, `<thead>`, `<tbody>`, `<tfoot>`): `background-color` → `bgcolor`, `background-image` → `background`, `text-align` → `align`, `vertical-align` → `valign`.\n",
                                      "default": true
                                    }
                                  }
                                }
                              }
                            },
                            "accessibility": {
                              "type": "object",
                              "description": "Applies a set of accessibility improvements to the email HTML. When no `language` is set, this falls back to the `lang` attribute on the `<html>` tag, or `\"und\"` (undetermined). The `dir` attribute is automatically derived from the language using RTL detection.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable accessibility fixes.\n",
                                  "default": false
                                },
                                "language": {
                                  "type": "string",
                                  "description": "Language code (for example, `\"en\"`, `\"fr\"`, or `\"ar\"`) used for `lang` and `dir` attributes.\n",
                                  "default": ""
                                },
                                "add_lang_to_html": {
                                  "type": "boolean",
                                  "description": "Add `lang` attribute to the `<html>` element if not already present.\n",
                                  "default": true
                                },
                                "add_dir_to_html": {
                                  "type": "boolean",
                                  "description": "Add `dir` attribute (`ltr`, `rtl`, or `auto`) to the `<html>` element if not already present.\n",
                                  "default": true
                                },
                                "add_lang_to_content": {
                                  "type": "boolean",
                                  "description": "Add `lang` attribute to direct children of `<body>`.\n",
                                  "default": true
                                },
                                "add_dir_to_content": {
                                  "type": "boolean",
                                  "description": "Add `dir` attribute to direct children of `<body>`.\n",
                                  "default": true
                                },
                                "add_role_to_tables": {
                                  "type": "boolean",
                                  "description": "Add `role=\"presentation\"` to all `<table>` elements without an existing `role`, so screen readers skip table semantics for layout tables.\n",
                                  "default": true
                                },
                                "add_vml_alt_text": {
                                  "type": "boolean",
                                  "description": "Add `alt` attribute to VML elements (used by Outlook’s Word rendering engine), derived from the element’s text content.\n",
                                  "default": true
                                },
                                "add_empty_alt_to_images": {
                                  "type": "boolean",
                                  "description": "Add `alt=\"\"` to `<img>` elements missing an `alt` attribute, preventing screen readers from reading the file name.\n",
                                  "default": true
                                },
                                "add_title_to_head": {
                                  "type": "boolean",
                                  "description": "Add a `<title>` tag to `<head>` using the email subject line (creates or replaces if empty).\n",
                                  "default": true
                                },
                                "remove_button_role_from_links": {
                                  "type": "boolean",
                                  "description": "Remove `role=\"button\"` from `<a>` tags to restore proper link semantics for screen readers.\n",
                                  "default": true
                                },
                                "remove_zoom_meta_tag": {
                                  "type": "boolean",
                                  "description": "Remove viewport `<meta>` tags that restrict zoom (`user-scalable=0`, `user-scalable=no`, `maximum-scale=1`, or `maximum-scale=2`).\n",
                                  "default": true
                                }
                              }
                            },
                            "formatter": {
                              "type": "object",
                              "description": "Controls the output formatting of the final HTML. Only one mode (`prettify` or `minify`) can be active at a time. Set to `\"none\"` to skip formatting entirely.\n",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "description": "Formatting mode to apply.\n",
                                  "enum": [
                                    "none",
                                    "prettify",
                                    "minify"
                                  ],
                                  "default": "none"
                                },
                                "prettify": {
                                  "type": "object",
                                  "description": "Options used when `type` is `\"prettify\"`. Produces human-readable, indented HTML output.\n",
                                  "properties": {
                                    "indent_character": {
                                      "type": "string",
                                      "description": "Character used for indentation.\n",
                                      "enum": [
                                        "spaces",
                                        "tabs"
                                      ],
                                      "default": "spaces"
                                    },
                                    "indent_size": {
                                      "type": "integer",
                                      "description": "Number of indent characters per level.\n",
                                      "default": 2
                                    },
                                    "wrap_attributes": {
                                      "type": "boolean",
                                      "description": "Wrap HTML attributes onto separate lines (`force-expand-multiline` mode).\n",
                                      "default": false
                                    }
                                  }
                                },
                                "minify": {
                                  "type": "object",
                                  "description": "Options used when `type` is `\"minify\"`. Reduces file size by stripping whitespace and comments.\n",
                                  "properties": {
                                    "remove_line_breaks": {
                                      "type": "boolean",
                                      "description": "Remove all line breaks from the output.\n",
                                      "default": false
                                    },
                                    "line_length_limit": {
                                      "type": "integer",
                                      "description": "Maximum characters per line before inserting a line break.\n",
                                      "default": 500
                                    },
                                    "remove_indentations": {
                                      "type": "boolean",
                                      "description": "Remove leading whitespace indentation.\n",
                                      "default": true
                                    },
                                    "remove_html_comments": {
                                      "type": "string",
                                      "description": "HTML comment removal level. `\"0\"` keeps all comments, `\"1\"` removes non-conditional comments (preserves MSO conditionals like `<!--[if mso]>`), and `\"2\"` removes all comments including conditional.\n",
                                      "enum": [
                                        "0",
                                        "1",
                                        "2"
                                      ],
                                      "default": "0"
                                    },
                                    "remove_css_comments": {
                                      "type": "boolean",
                                      "description": "Remove CSS comments (`/* ... */`) from `<style>` blocks.\n",
                                      "default": true
                                    }
                                  }
                                }
                              }
                            },
                            "prevent_widows": {
                              "type": "object",
                              "description": "Replaces the last space in text blocks with a non-breaking space (`&nbsp;`) to prevent a single word from wrapping onto its own line (a “widow”). Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags (`{{ }} ` and `{% %}`).\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable widow word prevention.\n",
                                  "default": false
                                }
                              }
                            },
                            "encode_entities": {
                              "type": "object",
                              "description": "Encodes special characters (for example, `©`, `™`, and `—`) as their HTML entity equivalents. Improves rendering consistency across email clients with varying character encoding support. Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags and avoids double-encoding existing entities.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable HTML entity encoding.\n",
                                  "default": false
                                }
                              }
                            },
                            "remove_unused_css": {
                              "type": "object",
                              "description": "Scans the HTML and removes any CSS selectors from `<style>` tags that are not referenced in the document. Reduces file size and helps avoid Gmail’s 102 KB clipping limit. HTML and CSS comments are always preserved by this step (comment removal is handled separately by the formatter object).\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable unused CSS removal.\n",
                                  "default": false
                                },
                                "whitelist": {
                                  "type": "array",
                                  "description": "CSS selectors to always keep, even if they are not found in the HTML.\n  - .ReadMsgBody\n  - .ExternalClass\n  - .aBn\n  - .a6S\n  - .im\n  - .yshortcuts\n  - \"#outlook\"\n  - .MsoHyperlink\n  - .MsoHyperlinkFollowed                \n",
                                  "items": {
                                    "type": "string",
                                    "description": "A CSS selector to always keep.\n"
                                  }
                                },
                                "backend_markers": {
                                  "type": "array",
                                  "description": "Template syntax delimiters (e.g., Liquid, Handlebars) that the CSS parser should skip over to avoid treating template expressions as invalid CSS.\n",
                                  "default": [
                                    {
                                      "heads": "",
                                      "tails": ""
                                    },
                                    {
                                      "heads": "{%",
                                      "tails": "%}"
                                    }
                                  ],
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "heads": {
                                        "type": "string",
                                        "description": "Opening delimiter.\n"
                                      },
                                      "tails": {
                                        "type": "string",
                                        "description": "Closing delimiter.\n"
                                      }
                                    }
                                  }
                                },
                                "uglify": {
                                  "type": "boolean",
                                  "description": "Shorten (uglify) CSS class names to reduce file size.\n",
                                  "default": false
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Possible reasons:\n  - Missing or invalid name\n  - Missing content or any required content sub-field\n  - Unknown JSON field in content, envelope, or transformers\n  - from_id or reply_to_id does not reference an existing identity\n  - parent_folder_id is an empty string\n",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"string\"\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --url https://api.customer.io/v1/design_studio/emails \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"is_template\":false,\"parent_folder_id\":\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\",\"content\":{\"subject\":\"string\",\"preheader_text\":\"string\",\"html\":\"string\",\"amp\":\"string\",\"text\":\"string\"},\"envelope\":{\"from_id\":0,\"reply_to_id\":0,\"recipient\":\"string\",\"bcc\":\"string\",\"fake_bcc\":true,\"headers\":[{\"name\":\"string\",\"value\":\"string\"}]},\"transformers\":{\"url_parameters\":{\"enabled\":false,\"parameters\":[]},\"css_variables\":{\"enabled\":false,\"preserve\":false},\"css_inliner\":{\"enabled\":false,\"apply_style_tags\":true,\"preserve_important\":false,\"remove_style_tags\":true,\"preserve_font_faces\":true,\"preserve_media_queries\":true,\"preserve_keyframes\":true,\"preserve_pseudos\":true,\"inline_pseudo_elements\":false,\"apply_html_attributes\":{\"enabled\":true,\"apply_width_attributes\":true,\"apply_height_attributes\":true,\"apply_table_element_attributes\":true}},\"accessibility\":{\"enabled\":false,\"language\":\"\",\"add_lang_to_html\":true,\"add_dir_to_html\":true,\"add_lang_to_content\":true,\"add_dir_to_content\":true,\"add_role_to_tables\":true,\"add_vml_alt_text\":true,\"add_empty_alt_to_images\":true,\"add_title_to_head\":true,\"remove_button_role_from_links\":true,\"remove_zoom_meta_tag\":true},\"formatter\":{\"type\":\"none\",\"prettify\":{\"indent_character\":\"spaces\",\"indent_size\":2,\"wrap_attributes\":false},\"minify\":{\"remove_line_breaks\":false,\"line_length_limit\":500,\"remove_indentations\":true,\"remove_html_comments\":\"0\",\"remove_css_comments\":true}},\"prevent_widows\":{\"enabled\":false},\"encode_entities\":{\"enabled\":false},\"remove_unused_css\":{\"enabled\":false,\"whitelist\":[\"string\"],\"backend_markers\":[{\"heads\":\"\",\"tails\":\"\"},{\"heads\":\"{%\",\"tails\":\"%}\"}],\"uglify\":false}}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/emails\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  name: 'string',\n  is_template: false,\n  parent_folder_id: '26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec',\n  content: {\n    subject: 'string',\n    preheader_text: 'string',\n    html: 'string',\n    amp: 'string',\n    text: 'string'\n  },\n  envelope: {\n    from_id: 0,\n    reply_to_id: 0,\n    recipient: 'string',\n    bcc: 'string',\n    fake_bcc: true,\n    headers: [{name: 'string', value: 'string'}]\n  },\n  transformers: {\n    url_parameters: {enabled: false, parameters: []},\n    css_variables: {enabled: false, preserve: false},\n    css_inliner: {\n      enabled: false,\n      apply_style_tags: true,\n      preserve_important: false,\n      remove_style_tags: true,\n      preserve_font_faces: true,\n      preserve_media_queries: true,\n      preserve_keyframes: true,\n      preserve_pseudos: true,\n      inline_pseudo_elements: false,\n      apply_html_attributes: {\n        enabled: true,\n        apply_width_attributes: true,\n        apply_height_attributes: true,\n        apply_table_element_attributes: true\n      }\n    },\n    accessibility: {\n      enabled: false,\n      language: '',\n      add_lang_to_html: true,\n      add_dir_to_html: true,\n      add_lang_to_content: true,\n      add_dir_to_content: true,\n      add_role_to_tables: true,\n      add_vml_alt_text: true,\n      add_empty_alt_to_images: true,\n      add_title_to_head: true,\n      remove_button_role_from_links: true,\n      remove_zoom_meta_tag: true\n    },\n    formatter: {\n      type: 'none',\n      prettify: {indent_character: 'spaces', indent_size: 2, wrap_attributes: false},\n      minify: {\n        remove_line_breaks: false,\n        line_length_limit: 500,\n        remove_indentations: true,\n        remove_html_comments: '0',\n        remove_css_comments: true\n      }\n    },\n    prevent_widows: {enabled: false},\n    encode_entities: {enabled: false},\n    remove_unused_css: {\n      enabled: false,\n      whitelist: ['string'],\n      backend_markers: [{heads: '', tails: ''}, {heads: '{%', tails: '%}'}],\n      uglify: false\n    }\n  }\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/emails\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"is_template\\\":false,\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"is_template\\\":false,\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/design_studio/emails\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/emails\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"is_template\\\":false,\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/design_studio/emails/{id}": {
      "get": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Get an email",
        "description": "Returns a single email including content, envelope details, and transformers. This endpoint returns only default emails; see [Email translations](#tag/design-studio/createEmailTranslation) to access language variants.\n",
        "operationId": "getEmail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Unique identifier for the email."
                        },
                        "name": {
                          "type": "string",
                          "description": "Display name of the email."
                        },
                        "is_template": {
                          "type": "boolean",
                          "description": "Whether the email is a reusable template."
                        },
                        "is_linked": {
                          "type": "boolean",
                          "description": "Whether the email is currently linked to a workflow (campaign, broadcast, etc).\n"
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "format": "uuid",
                          "nullable": true,
                          "description": "UUID of the parent folder, or `null` if the email is in your root directory.\n"
                        },
                        "available_languages": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "List of [language codes](/journeys/localization-attribute/#supported-languages) that reflect the languages this default email has been translated to.",
                          "example": [
                            "en",
                            "es"
                          ]
                        },
                        "created": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp of when the email was created."
                        },
                        "updated": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp of the last update to the email."
                        },
                        "content": {
                          "type": "object",
                          "description": "The content of your email.",
                          "properties": {
                            "subject": {
                              "type": "string",
                              "description": "Email subject line."
                            },
                            "preheader_text": {
                              "type": "string",
                              "description": "Preview text."
                            },
                            "html": {
                              "type": "string",
                              "description": "HTML body."
                            },
                            "amp": {
                              "type": "string",
                              "description": "AMP HTML body."
                            },
                            "text": {
                              "type": "string",
                              "description": "Plain text body."
                            }
                          }
                        },
                        "envelope": {
                          "type": "object",
                          "properties": {
                            "from_id": {
                              "type": "integer",
                              "nullable": true,
                              "description": "Sender identity ID.\n"
                            },
                            "from": {
                              "type": "string",
                              "description": "The sender address associated with the from_id."
                            },
                            "reply_to_id": {
                              "type": "integer",
                              "nullable": true,
                              "description": "Reply-to identity ID. This matches one of the ids in *Workspace Settings > Email*.\n"
                            },
                            "reply_to": {
                              "type": "string",
                              "description": "The reply-to address associated with the reply_to_id."
                            },
                            "bcc": {
                              "type": "string",
                              "description": "BCC email address."
                            },
                            "fake_bcc": {
                              "type": "boolean",
                              "description": "Whether to use fake BCC. Defaults to true if not provided."
                            },
                            "headers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                }
                              },
                              "description": "Custom headers. Each item: { \"name\": \"string\", \"value\": \"string\" }.\n"
                            },
                            "recipient": {
                              "type": "string",
                              "description": "Recipient expression. Defaults to {{customer.email}} if not set."
                            }
                          }
                        },
                        "transformers": {
                          "type": "object",
                          "description": "Automate repetitive actions like removing white space and inlining CSS with [transformers](/journeys/code-editor-overview/#transformers).",
                          "properties": {
                            "url_parameters": {
                              "type": "object",
                              "description": "Appends query string parameters to all absolute URLs in `<a>` and VML elements. Useful for adding UTM tracking or other analytics parameters. Skips `mailto:`, `tel:`, and `sms:` links. Elements marked with `data-ignore-params` are excluded.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable URL parameter injection.\n",
                                  "default": false
                                },
                                "parameters": {
                                  "type": "array",
                                  "description": "List of parameters to append to URLs.\n",
                                  "default": [],
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string",
                                        "description": "Parameter name.\n"
                                      },
                                      "value": {
                                        "type": "string",
                                        "description": "Parameter value. May contain template variables.\n"
                                      },
                                      "url_encode": {
                                        "type": "boolean",
                                        "description": "URL-encode the value before appending it to the URL.\n"
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "css_variables": {
                              "type": "object",
                              "description": "Resolves CSS custom properties (`var(--name)`) into their computed values. Required for email clients that do not support CSS custom properties (most email clients). Variables declared in one `<style>` tag are available in subsequent `<style>` tags.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable CSS variable resolution.\n",
                                  "default": false
                                },
                                "preserve": {
                                  "type": "boolean",
                                  "description": "Keep original custom property declarations (`--name: value`) alongside the resolved values.\n",
                                  "default": false
                                }
                              }
                            },
                            "css_inliner": {
                              "type": "object",
                              "description": "Moves CSS from `<style>` tags into inline `style` attributes on each element. Essential for email clients with limited `<style>` support (for example, older Gmail and some Outlook versions). Uses the `juice` library. Elements in `<style>` tags marked with `data-ignore-inlining` are skipped.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable CSS inlining.\n",
                                  "default": false
                                },
                                "apply_style_tags": {
                                  "type": "boolean",
                                  "description": "Inline styles from `<style>` tags.\n",
                                  "default": true
                                },
                                "preserve_important": {
                                  "type": "boolean",
                                  "description": "Preserve `!important` declarations in inlined styles.\n",
                                  "default": false
                                },
                                "remove_style_tags": {
                                  "type": "boolean",
                                  "description": "Remove `<style>` tags after inlining their rules.\n",
                                  "default": true
                                },
                                "preserve_font_faces": {
                                  "type": "boolean",
                                  "description": "Keep `@font-face` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_media_queries": {
                                  "type": "boolean",
                                  "description": "Keep `@media` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_keyframes": {
                                  "type": "boolean",
                                  "description": "Keep `@keyframes` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_pseudos": {
                                  "type": "boolean",
                                  "description": "Keep pseudo-selector rules (for example, `:hover`) in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "inline_pseudo_elements": {
                                  "type": "boolean",
                                  "description": "Attempt to inline pseudo-element (`::before`, `::after`) styles.\n",
                                  "default": false
                                },
                                "apply_html_attributes": {
                                  "type": "object",
                                  "description": "Controls adding redundant HTML attributes alongside inlined CSS to different HTML elements.\n",
                                  "properties": {
                                    "enabled": {
                                      "type": "boolean",
                                      "description": "Enable adding redundant HTML attributes.\n",
                                      "default": true
                                    },
                                    "apply_width_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML `width` attributes alongside inlined CSS `width` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS width (for example, older Outlook).\n",
                                      "default": true
                                    },
                                    "apply_height_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML `height` attributes alongside inlined CSS `height` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS height.\n",
                                      "default": true
                                    },
                                    "apply_table_element_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML attributes on table elements (`<table>`, `<th>`, `<tr>`, `<td>`, `<caption>`, `<colgroup>`, `<col>`, `<thead>`, `<tbody>`, `<tfoot>`): `background-color` → `bgcolor`, `background-image` → `background`, `text-align` → `align`, `vertical-align` → `valign`.\n",
                                      "default": true
                                    }
                                  }
                                }
                              }
                            },
                            "accessibility": {
                              "type": "object",
                              "description": "Applies a set of accessibility improvements to the email HTML. When no `language` is set, this falls back to the `lang` attribute on the `<html>` tag, or `\"und\"` (undetermined). The `dir` attribute is automatically derived from the language using RTL detection.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable accessibility fixes.\n",
                                  "default": false
                                },
                                "language": {
                                  "type": "string",
                                  "description": "Language code (for example, `\"en\"`, `\"fr\"`, or `\"ar\"`) used for `lang` and `dir` attributes.\n",
                                  "default": ""
                                },
                                "add_lang_to_html": {
                                  "type": "boolean",
                                  "description": "Add `lang` attribute to the `<html>` element if not already present.\n",
                                  "default": true
                                },
                                "add_dir_to_html": {
                                  "type": "boolean",
                                  "description": "Add `dir` attribute (`ltr`, `rtl`, or `auto`) to the `<html>` element if not already present.\n",
                                  "default": true
                                },
                                "add_lang_to_content": {
                                  "type": "boolean",
                                  "description": "Add `lang` attribute to direct children of `<body>`.\n",
                                  "default": true
                                },
                                "add_dir_to_content": {
                                  "type": "boolean",
                                  "description": "Add `dir` attribute to direct children of `<body>`.\n",
                                  "default": true
                                },
                                "add_role_to_tables": {
                                  "type": "boolean",
                                  "description": "Add `role=\"presentation\"` to all `<table>` elements without an existing `role`, so screen readers skip table semantics for layout tables.\n",
                                  "default": true
                                },
                                "add_vml_alt_text": {
                                  "type": "boolean",
                                  "description": "Add `alt` attribute to VML elements (used by Outlook’s Word rendering engine), derived from the element’s text content.\n",
                                  "default": true
                                },
                                "add_empty_alt_to_images": {
                                  "type": "boolean",
                                  "description": "Add `alt=\"\"` to `<img>` elements missing an `alt` attribute, preventing screen readers from reading the file name.\n",
                                  "default": true
                                },
                                "add_title_to_head": {
                                  "type": "boolean",
                                  "description": "Add a `<title>` tag to `<head>` using the email subject line (creates or replaces if empty).\n",
                                  "default": true
                                },
                                "remove_button_role_from_links": {
                                  "type": "boolean",
                                  "description": "Remove `role=\"button\"` from `<a>` tags to restore proper link semantics for screen readers.\n",
                                  "default": true
                                },
                                "remove_zoom_meta_tag": {
                                  "type": "boolean",
                                  "description": "Remove viewport `<meta>` tags that restrict zoom (`user-scalable=0`, `user-scalable=no`, `maximum-scale=1`, or `maximum-scale=2`).\n",
                                  "default": true
                                }
                              }
                            },
                            "formatter": {
                              "type": "object",
                              "description": "Controls the output formatting of the final HTML. Only one mode (`prettify` or `minify`) can be active at a time. Set to `\"none\"` to skip formatting entirely.\n",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "description": "Formatting mode to apply.\n",
                                  "enum": [
                                    "none",
                                    "prettify",
                                    "minify"
                                  ],
                                  "default": "none"
                                },
                                "prettify": {
                                  "type": "object",
                                  "description": "Options used when `type` is `\"prettify\"`. Produces human-readable, indented HTML output.\n",
                                  "properties": {
                                    "indent_character": {
                                      "type": "string",
                                      "description": "Character used for indentation.\n",
                                      "enum": [
                                        "spaces",
                                        "tabs"
                                      ],
                                      "default": "spaces"
                                    },
                                    "indent_size": {
                                      "type": "integer",
                                      "description": "Number of indent characters per level.\n",
                                      "default": 2
                                    },
                                    "wrap_attributes": {
                                      "type": "boolean",
                                      "description": "Wrap HTML attributes onto separate lines (`force-expand-multiline` mode).\n",
                                      "default": false
                                    }
                                  }
                                },
                                "minify": {
                                  "type": "object",
                                  "description": "Options used when `type` is `\"minify\"`. Reduces file size by stripping whitespace and comments.\n",
                                  "properties": {
                                    "remove_line_breaks": {
                                      "type": "boolean",
                                      "description": "Remove all line breaks from the output.\n",
                                      "default": false
                                    },
                                    "line_length_limit": {
                                      "type": "integer",
                                      "description": "Maximum characters per line before inserting a line break.\n",
                                      "default": 500
                                    },
                                    "remove_indentations": {
                                      "type": "boolean",
                                      "description": "Remove leading whitespace indentation.\n",
                                      "default": true
                                    },
                                    "remove_html_comments": {
                                      "type": "string",
                                      "description": "HTML comment removal level. `\"0\"` keeps all comments, `\"1\"` removes non-conditional comments (preserves MSO conditionals like `<!--[if mso]>`), and `\"2\"` removes all comments including conditional.\n",
                                      "enum": [
                                        "0",
                                        "1",
                                        "2"
                                      ],
                                      "default": "0"
                                    },
                                    "remove_css_comments": {
                                      "type": "boolean",
                                      "description": "Remove CSS comments (`/* ... */`) from `<style>` blocks.\n",
                                      "default": true
                                    }
                                  }
                                }
                              }
                            },
                            "prevent_widows": {
                              "type": "object",
                              "description": "Replaces the last space in text blocks with a non-breaking space (`&nbsp;`) to prevent a single word from wrapping onto its own line (a “widow”). Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags (`{{ }} ` and `{% %}`).\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable widow word prevention.\n",
                                  "default": false
                                }
                              }
                            },
                            "encode_entities": {
                              "type": "object",
                              "description": "Encodes special characters (for example, `©`, `™`, and `—`) as their HTML entity equivalents. Improves rendering consistency across email clients with varying character encoding support. Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags and avoids double-encoding existing entities.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable HTML entity encoding.\n",
                                  "default": false
                                }
                              }
                            },
                            "remove_unused_css": {
                              "type": "object",
                              "description": "Scans the HTML and removes any CSS selectors from `<style>` tags that are not referenced in the document. Reduces file size and helps avoid Gmail’s 102 KB clipping limit. HTML and CSS comments are always preserved by this step (comment removal is handled separately by the formatter object).\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable unused CSS removal.\n",
                                  "default": false
                                },
                                "whitelist": {
                                  "type": "array",
                                  "description": "CSS selectors to always keep, even if they are not found in the HTML.\n  - .ReadMsgBody\n  - .ExternalClass\n  - .aBn\n  - .a6S\n  - .im\n  - .yshortcuts\n  - \"#outlook\"\n  - .MsoHyperlink\n  - .MsoHyperlinkFollowed                \n",
                                  "items": {
                                    "type": "string",
                                    "description": "A CSS selector to always keep.\n"
                                  }
                                },
                                "backend_markers": {
                                  "type": "array",
                                  "description": "Template syntax delimiters (e.g., Liquid, Handlebars) that the CSS parser should skip over to avoid treating template expressions as invalid CSS.\n",
                                  "default": [
                                    {
                                      "heads": "",
                                      "tails": ""
                                    },
                                    {
                                      "heads": "{%",
                                      "tails": "%}"
                                    }
                                  ],
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "heads": {
                                        "type": "string",
                                        "description": "Opening delimiter.\n"
                                      },
                                      "tails": {
                                        "type": "string",
                                        "description": "Closing delimiter.\n"
                                      }
                                    }
                                  }
                                },
                                "uglify": {
                                  "type": "boolean",
                                  "description": "Shorten (uglify) CSS class names to reduce file size.\n",
                                  "default": false
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url https://api.customer.io/v1/design_studio/emails/{id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/emails/%7Bid%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/emails/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/design_studio/emails/%7Bid%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/emails/%7Bid%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Update an email",
        "description": "Update an email's name, template status, folder, content, envelope, or transformers. Note, this does not publish your email; if the email is connected to a workflow like a campaign, you still need to click publish to make the changes live.\n",
        "operationId": "updateEmail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "You must provide a body with at least one of the following properties. Omitting a field leaves it unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Display name of the email."
                  },
                  "is_template": {
                    "type": "boolean",
                    "description": "Whether the email is a reusable template."
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "The UUID of the parent folder. \n\nOmit if you want no change to where the folder or file is located. Include `null` to move it to your root directory. Or add the UUID of another folder to move it there.\n",
                    "nullable": true
                  },
                  "content": {
                    "type": "object",
                    "description": "The content of your email.",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Email subject line."
                      },
                      "preheader_text": {
                        "type": "string",
                        "description": "Preview text."
                      },
                      "html": {
                        "type": "string",
                        "description": "HTML body."
                      },
                      "amp": {
                        "type": "string",
                        "description": "AMP HTML body."
                      },
                      "text": {
                        "type": "string",
                        "description": "Plain text body."
                      }
                    }
                  },
                  "envelope": {
                    "type": "object",
                    "description": "The envelope of your email, like from and to addresses.",
                    "properties": {
                      "from_id": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Sender identity ID. Must reference an existing identity. You can find this in *Workspace Settings > Email* under your From Addresses.\n"
                      },
                      "reply_to_id": {
                        "type": "integer",
                        "format": "int64",
                        "nullable": true,
                        "description": "Reply-to identity ID. Must reference an existing identity from *Workspace Settings > Email* under your From Addresses.\n"
                      },
                      "recipient": {
                        "type": "string",
                        "description": "Recipient email address. Defaults to `{{customer.email}}`` if not set.\n"
                      },
                      "bcc": {
                        "type": "string",
                        "description": "BCC email address."
                      },
                      "fake_bcc": {
                        "type": "boolean",
                        "description": "Whether to use fake BCC. Defaults to true if not provided."
                      },
                      "headers": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          }
                        },
                        "description": "Custom headers. Each item: { \"name\": \"string\", \"value\": \"string\" }.\n"
                      }
                    }
                  },
                  "transformers": {
                    "type": "object",
                    "description": "Automate repetitive actions like removing white space and inlining CSS with [transformers](/journeys/code-editor-overview/#transformers).",
                    "properties": {
                      "url_parameters": {
                        "type": "object",
                        "description": "Appends query string parameters to all absolute URLs in `<a>` and VML elements. Useful for adding UTM tracking or other analytics parameters. Skips `mailto:`, `tel:`, and `sms:` links. Elements marked with `data-ignore-params` are excluded.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable URL parameter injection.\n",
                            "default": false
                          },
                          "parameters": {
                            "type": "array",
                            "description": "List of parameters to append to URLs.\n",
                            "default": [],
                            "items": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Parameter name.\n"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Parameter value. May contain template variables.\n"
                                },
                                "url_encode": {
                                  "type": "boolean",
                                  "description": "URL-encode the value before appending it to the URL.\n"
                                }
                              }
                            }
                          }
                        }
                      },
                      "css_variables": {
                        "type": "object",
                        "description": "Resolves CSS custom properties (`var(--name)`) into their computed values. Required for email clients that do not support CSS custom properties (most email clients). Variables declared in one `<style>` tag are available in subsequent `<style>` tags.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable CSS variable resolution.\n",
                            "default": false
                          },
                          "preserve": {
                            "type": "boolean",
                            "description": "Keep original custom property declarations (`--name: value`) alongside the resolved values.\n",
                            "default": false
                          }
                        }
                      },
                      "css_inliner": {
                        "type": "object",
                        "description": "Moves CSS from `<style>` tags into inline `style` attributes on each element. Essential for email clients with limited `<style>` support (for example, older Gmail and some Outlook versions). Uses the `juice` library. Elements in `<style>` tags marked with `data-ignore-inlining` are skipped.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable CSS inlining.\n",
                            "default": false
                          },
                          "apply_style_tags": {
                            "type": "boolean",
                            "description": "Inline styles from `<style>` tags.\n",
                            "default": true
                          },
                          "preserve_important": {
                            "type": "boolean",
                            "description": "Preserve `!important` declarations in inlined styles.\n",
                            "default": false
                          },
                          "remove_style_tags": {
                            "type": "boolean",
                            "description": "Remove `<style>` tags after inlining their rules.\n",
                            "default": true
                          },
                          "preserve_font_faces": {
                            "type": "boolean",
                            "description": "Keep `@font-face` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_media_queries": {
                            "type": "boolean",
                            "description": "Keep `@media` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_keyframes": {
                            "type": "boolean",
                            "description": "Keep `@keyframes` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_pseudos": {
                            "type": "boolean",
                            "description": "Keep pseudo-selector rules (for example, `:hover`) in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "inline_pseudo_elements": {
                            "type": "boolean",
                            "description": "Attempt to inline pseudo-element (`::before`, `::after`) styles.\n",
                            "default": false
                          },
                          "apply_html_attributes": {
                            "type": "object",
                            "description": "Controls adding redundant HTML attributes alongside inlined CSS to different HTML elements.\n",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable adding redundant HTML attributes.\n",
                                "default": true
                              },
                              "apply_width_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML `width` attributes alongside inlined CSS `width` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS width (for example, older Outlook).\n",
                                "default": true
                              },
                              "apply_height_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML `height` attributes alongside inlined CSS `height` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS height.\n",
                                "default": true
                              },
                              "apply_table_element_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML attributes on table elements (`<table>`, `<th>`, `<tr>`, `<td>`, `<caption>`, `<colgroup>`, `<col>`, `<thead>`, `<tbody>`, `<tfoot>`): `background-color` → `bgcolor`, `background-image` → `background`, `text-align` → `align`, `vertical-align` → `valign`.\n",
                                "default": true
                              }
                            }
                          }
                        }
                      },
                      "accessibility": {
                        "type": "object",
                        "description": "Applies a set of accessibility improvements to the email HTML. When no `language` is set, this falls back to the `lang` attribute on the `<html>` tag, or `\"und\"` (undetermined). The `dir` attribute is automatically derived from the language using RTL detection.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable accessibility fixes.\n",
                            "default": false
                          },
                          "language": {
                            "type": "string",
                            "description": "Language code (for example, `\"en\"`, `\"fr\"`, or `\"ar\"`) used for `lang` and `dir` attributes.\n",
                            "default": ""
                          },
                          "add_lang_to_html": {
                            "type": "boolean",
                            "description": "Add `lang` attribute to the `<html>` element if not already present.\n",
                            "default": true
                          },
                          "add_dir_to_html": {
                            "type": "boolean",
                            "description": "Add `dir` attribute (`ltr`, `rtl`, or `auto`) to the `<html>` element if not already present.\n",
                            "default": true
                          },
                          "add_lang_to_content": {
                            "type": "boolean",
                            "description": "Add `lang` attribute to direct children of `<body>`.\n",
                            "default": true
                          },
                          "add_dir_to_content": {
                            "type": "boolean",
                            "description": "Add `dir` attribute to direct children of `<body>`.\n",
                            "default": true
                          },
                          "add_role_to_tables": {
                            "type": "boolean",
                            "description": "Add `role=\"presentation\"` to all `<table>` elements without an existing `role`, so screen readers skip table semantics for layout tables.\n",
                            "default": true
                          },
                          "add_vml_alt_text": {
                            "type": "boolean",
                            "description": "Add `alt` attribute to VML elements (used by Outlook’s Word rendering engine), derived from the element’s text content.\n",
                            "default": true
                          },
                          "add_empty_alt_to_images": {
                            "type": "boolean",
                            "description": "Add `alt=\"\"` to `<img>` elements missing an `alt` attribute, preventing screen readers from reading the file name.\n",
                            "default": true
                          },
                          "add_title_to_head": {
                            "type": "boolean",
                            "description": "Add a `<title>` tag to `<head>` using the email subject line (creates or replaces if empty).\n",
                            "default": true
                          },
                          "remove_button_role_from_links": {
                            "type": "boolean",
                            "description": "Remove `role=\"button\"` from `<a>` tags to restore proper link semantics for screen readers.\n",
                            "default": true
                          },
                          "remove_zoom_meta_tag": {
                            "type": "boolean",
                            "description": "Remove viewport `<meta>` tags that restrict zoom (`user-scalable=0`, `user-scalable=no`, `maximum-scale=1`, or `maximum-scale=2`).\n",
                            "default": true
                          }
                        }
                      },
                      "formatter": {
                        "type": "object",
                        "description": "Controls the output formatting of the final HTML. Only one mode (`prettify` or `minify`) can be active at a time. Set to `\"none\"` to skip formatting entirely.\n",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Formatting mode to apply.\n",
                            "enum": [
                              "none",
                              "prettify",
                              "minify"
                            ],
                            "default": "none"
                          },
                          "prettify": {
                            "type": "object",
                            "description": "Options used when `type` is `\"prettify\"`. Produces human-readable, indented HTML output.\n",
                            "properties": {
                              "indent_character": {
                                "type": "string",
                                "description": "Character used for indentation.\n",
                                "enum": [
                                  "spaces",
                                  "tabs"
                                ],
                                "default": "spaces"
                              },
                              "indent_size": {
                                "type": "integer",
                                "description": "Number of indent characters per level.\n",
                                "default": 2
                              },
                              "wrap_attributes": {
                                "type": "boolean",
                                "description": "Wrap HTML attributes onto separate lines (`force-expand-multiline` mode).\n",
                                "default": false
                              }
                            }
                          },
                          "minify": {
                            "type": "object",
                            "description": "Options used when `type` is `\"minify\"`. Reduces file size by stripping whitespace and comments.\n",
                            "properties": {
                              "remove_line_breaks": {
                                "type": "boolean",
                                "description": "Remove all line breaks from the output.\n",
                                "default": false
                              },
                              "line_length_limit": {
                                "type": "integer",
                                "description": "Maximum characters per line before inserting a line break.\n",
                                "default": 500
                              },
                              "remove_indentations": {
                                "type": "boolean",
                                "description": "Remove leading whitespace indentation.\n",
                                "default": true
                              },
                              "remove_html_comments": {
                                "type": "string",
                                "description": "HTML comment removal level. `\"0\"` keeps all comments, `\"1\"` removes non-conditional comments (preserves MSO conditionals like `<!--[if mso]>`), and `\"2\"` removes all comments including conditional.\n",
                                "enum": [
                                  "0",
                                  "1",
                                  "2"
                                ],
                                "default": "0"
                              },
                              "remove_css_comments": {
                                "type": "boolean",
                                "description": "Remove CSS comments (`/* ... */`) from `<style>` blocks.\n",
                                "default": true
                              }
                            }
                          }
                        }
                      },
                      "prevent_widows": {
                        "type": "object",
                        "description": "Replaces the last space in text blocks with a non-breaking space (`&nbsp;`) to prevent a single word from wrapping onto its own line (a “widow”). Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags (`{{ }} ` and `{% %}`).\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable widow word prevention.\n",
                            "default": false
                          }
                        }
                      },
                      "encode_entities": {
                        "type": "object",
                        "description": "Encodes special characters (for example, `©`, `™`, and `—`) as their HTML entity equivalents. Improves rendering consistency across email clients with varying character encoding support. Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags and avoids double-encoding existing entities.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable HTML entity encoding.\n",
                            "default": false
                          }
                        }
                      },
                      "remove_unused_css": {
                        "type": "object",
                        "description": "Scans the HTML and removes any CSS selectors from `<style>` tags that are not referenced in the document. Reduces file size and helps avoid Gmail’s 102 KB clipping limit. HTML and CSS comments are always preserved by this step (comment removal is handled separately by the formatter object).\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable unused CSS removal.\n",
                            "default": false
                          },
                          "whitelist": {
                            "type": "array",
                            "description": "CSS selectors to always keep, even if they are not found in the HTML.\n  - .ReadMsgBody\n  - .ExternalClass\n  - .aBn\n  - .a6S\n  - .im\n  - .yshortcuts\n  - \"#outlook\"\n  - .MsoHyperlink\n  - .MsoHyperlinkFollowed                \n",
                            "items": {
                              "type": "string",
                              "description": "A CSS selector to always keep.\n"
                            }
                          },
                          "backend_markers": {
                            "type": "array",
                            "description": "Template syntax delimiters (e.g., Liquid, Handlebars) that the CSS parser should skip over to avoid treating template expressions as invalid CSS.\n",
                            "default": [
                              {
                                "heads": "",
                                "tails": ""
                              },
                              {
                                "heads": "{%",
                                "tails": "%}"
                              }
                            ],
                            "items": {
                              "type": "object",
                              "properties": {
                                "heads": {
                                  "type": "string",
                                  "description": "Opening delimiter.\n"
                                },
                                "tails": {
                                  "type": "string",
                                  "description": "Closing delimiter.\n"
                                }
                              }
                            }
                          },
                          "uglify": {
                            "type": "boolean",
                            "description": "Shorten (uglify) CSS class names to reduce file size.\n",
                            "default": false
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Email updated, no content returned"
          },
          "400": {
            "description": "Bad request. Possible reasons:\n  - No fields provided\n  - Invalid name\n  - Unknown JSON field in content, envelope, or transformers\n  - from_id or reply_to_id does not reference an existing identity\n  - parent_folder_id is an empty string\n",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --url https://api.customer.io/v1/design_studio/emails/{id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"is_template\":true,\"parent_folder_id\":\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\",\"content\":{\"subject\":\"string\",\"preheader_text\":\"string\",\"html\":\"string\",\"amp\":\"string\",\"text\":\"string\"},\"envelope\":{\"from_id\":0,\"reply_to_id\":0,\"recipient\":\"string\",\"bcc\":\"string\",\"fake_bcc\":true,\"headers\":[{\"name\":\"string\",\"value\":\"string\"}]},\"transformers\":{\"url_parameters\":{\"enabled\":false,\"parameters\":[]},\"css_variables\":{\"enabled\":false,\"preserve\":false},\"css_inliner\":{\"enabled\":false,\"apply_style_tags\":true,\"preserve_important\":false,\"remove_style_tags\":true,\"preserve_font_faces\":true,\"preserve_media_queries\":true,\"preserve_keyframes\":true,\"preserve_pseudos\":true,\"inline_pseudo_elements\":false,\"apply_html_attributes\":{\"enabled\":true,\"apply_width_attributes\":true,\"apply_height_attributes\":true,\"apply_table_element_attributes\":true}},\"accessibility\":{\"enabled\":false,\"language\":\"\",\"add_lang_to_html\":true,\"add_dir_to_html\":true,\"add_lang_to_content\":true,\"add_dir_to_content\":true,\"add_role_to_tables\":true,\"add_vml_alt_text\":true,\"add_empty_alt_to_images\":true,\"add_title_to_head\":true,\"remove_button_role_from_links\":true,\"remove_zoom_meta_tag\":true},\"formatter\":{\"type\":\"none\",\"prettify\":{\"indent_character\":\"spaces\",\"indent_size\":2,\"wrap_attributes\":false},\"minify\":{\"remove_line_breaks\":false,\"line_length_limit\":500,\"remove_indentations\":true,\"remove_html_comments\":\"0\",\"remove_css_comments\":true}},\"prevent_widows\":{\"enabled\":false},\"encode_entities\":{\"enabled\":false},\"remove_unused_css\":{\"enabled\":false,\"whitelist\":[\"string\"],\"backend_markers\":[{\"heads\":\"\",\"tails\":\"\"},{\"heads\":\"{%\",\"tails\":\"%}\"}],\"uglify\":false}}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/emails/%7Bid%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  name: 'string',\n  is_template: true,\n  parent_folder_id: '26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec',\n  content: {\n    subject: 'string',\n    preheader_text: 'string',\n    html: 'string',\n    amp: 'string',\n    text: 'string'\n  },\n  envelope: {\n    from_id: 0,\n    reply_to_id: 0,\n    recipient: 'string',\n    bcc: 'string',\n    fake_bcc: true,\n    headers: [{name: 'string', value: 'string'}]\n  },\n  transformers: {\n    url_parameters: {enabled: false, parameters: []},\n    css_variables: {enabled: false, preserve: false},\n    css_inliner: {\n      enabled: false,\n      apply_style_tags: true,\n      preserve_important: false,\n      remove_style_tags: true,\n      preserve_font_faces: true,\n      preserve_media_queries: true,\n      preserve_keyframes: true,\n      preserve_pseudos: true,\n      inline_pseudo_elements: false,\n      apply_html_attributes: {\n        enabled: true,\n        apply_width_attributes: true,\n        apply_height_attributes: true,\n        apply_table_element_attributes: true\n      }\n    },\n    accessibility: {\n      enabled: false,\n      language: '',\n      add_lang_to_html: true,\n      add_dir_to_html: true,\n      add_lang_to_content: true,\n      add_dir_to_content: true,\n      add_role_to_tables: true,\n      add_vml_alt_text: true,\n      add_empty_alt_to_images: true,\n      add_title_to_head: true,\n      remove_button_role_from_links: true,\n      remove_zoom_meta_tag: true\n    },\n    formatter: {\n      type: 'none',\n      prettify: {indent_character: 'spaces', indent_size: 2, wrap_attributes: false},\n      minify: {\n        remove_line_breaks: false,\n        line_length_limit: 500,\n        remove_indentations: true,\n        remove_html_comments: '0',\n        remove_css_comments: true\n      }\n    },\n    prevent_widows: {enabled: false},\n    encode_entities: {enabled: false},\n    remove_unused_css: {\n      enabled: false,\n      whitelist: ['string'],\n      backend_markers: [{heads: '', tails: ''}, {heads: '{%', tails: '%}'}],\n      uglify: false\n    }\n  }\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/emails/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"is_template\\\":true,\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"is_template\\\":true,\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/design_studio/emails/%7Bid%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/emails/%7Bid%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"is_template\\\":true,\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "delete": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Delete an email",
        "description": "Delete an email. You cannot delete an email that is linked to a workflow (campaign, broadcast, etc). This deletes the email and all translations.\n",
        "operationId": "deleteEmail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Email deleted"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Email is linked to a journey and cannot be deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --url https://api.customer.io/v1/design_studio/emails/{id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/emails/%7Bid%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/emails/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/design_studio/emails/%7Bid%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/emails/%7Bid%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/design_studio/emails/{id}/languages": {
      "get": {
        "tags": [
          "Design Studio"
        ],
        "summary": "List email translations",
        "description": "Returns all translations for an email. Each translation contains the email's content, envelope, and transformers for a specific language.\n",
        "operationId": "listEmailTranslations",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "email_translations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "language_group_id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "ID of the parent email that groups all translations. Same as the id in the path parameter."
                          },
                          "language": {
                            "type": "string",
                            "description": "The [language code](/journeys/localization-attribute/#supported-languages) of the translation",
                            "example": "fr"
                          },
                          "is_template": {
                            "type": "boolean",
                            "description": "Whether the translation is a template"
                          },
                          "is_linked": {
                            "type": "boolean",
                            "description": "Whether the translation is linked to a workflow (campaign, broadcast, etc)"
                          },
                          "parent_folder_id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "UUID of the parent folder, or `null` if the email is in your root directory.",
                            "nullable": true
                          },
                          "available_languages": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "List of [language codes](/journeys/localization-attribute/#supported-languages) that reflect the languages this default email has been translated to.",
                            "example": [
                              "en",
                              "es"
                            ]
                          },
                          "created": {
                            "type": "integer",
                            "description": "Unix timestamp of when the translation was created."
                          },
                          "updated": {
                            "type": "integer",
                            "description": "Unix timestamp of the last update to the translation."
                          },
                          "content": {
                            "type": "object",
                            "description": "The content of your email.",
                            "properties": {
                              "subject": {
                                "type": "string",
                                "description": "Email subject line."
                              },
                              "preheader_text": {
                                "type": "string",
                                "description": "Preview text."
                              },
                              "html": {
                                "type": "string",
                                "description": "HTML body."
                              },
                              "amp": {
                                "type": "string",
                                "description": "AMP HTML body."
                              },
                              "text": {
                                "type": "string",
                                "description": "Plain text body."
                              }
                            }
                          },
                          "envelope": {
                            "type": "object",
                            "properties": {
                              "from_id": {
                                "type": "integer",
                                "nullable": true,
                                "description": "Sender identity ID.\n"
                              },
                              "from": {
                                "type": "string",
                                "description": "The sender address associated with the from_id."
                              },
                              "reply_to_id": {
                                "type": "integer",
                                "nullable": true,
                                "description": "Reply-to identity ID. This matches one of the ids in *Workspace Settings > Email*.\n"
                              },
                              "reply_to": {
                                "type": "string",
                                "description": "The reply-to address associated with the reply_to_id."
                              },
                              "bcc": {
                                "type": "string",
                                "description": "BCC email address."
                              },
                              "fake_bcc": {
                                "type": "boolean",
                                "description": "Whether to use fake BCC. Defaults to true if not provided."
                              },
                              "headers": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "description": "Custom headers. Each item: { \"name\": \"string\", \"value\": \"string\" }.\n"
                              },
                              "recipient": {
                                "type": "string",
                                "description": "Recipient expression. Defaults to {{customer.email}} if not set."
                              }
                            }
                          },
                          "transformers": {
                            "type": "object",
                            "description": "Automate repetitive actions like removing white space and inlining CSS with [transformers](/journeys/code-editor-overview/#transformers).",
                            "properties": {
                              "url_parameters": {
                                "type": "object",
                                "description": "Appends query string parameters to all absolute URLs in `<a>` and VML elements. Useful for adding UTM tracking or other analytics parameters. Skips `mailto:`, `tel:`, and `sms:` links. Elements marked with `data-ignore-params` are excluded.\n",
                                "properties": {
                                  "enabled": {
                                    "type": "boolean",
                                    "description": "Enable URL parameter injection.\n",
                                    "default": false
                                  },
                                  "parameters": {
                                    "type": "array",
                                    "description": "List of parameters to append to URLs.\n",
                                    "default": [],
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "description": "Parameter name.\n"
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "Parameter value. May contain template variables.\n"
                                        },
                                        "url_encode": {
                                          "type": "boolean",
                                          "description": "URL-encode the value before appending it to the URL.\n"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "css_variables": {
                                "type": "object",
                                "description": "Resolves CSS custom properties (`var(--name)`) into their computed values. Required for email clients that do not support CSS custom properties (most email clients). Variables declared in one `<style>` tag are available in subsequent `<style>` tags.\n",
                                "properties": {
                                  "enabled": {
                                    "type": "boolean",
                                    "description": "Enable CSS variable resolution.\n",
                                    "default": false
                                  },
                                  "preserve": {
                                    "type": "boolean",
                                    "description": "Keep original custom property declarations (`--name: value`) alongside the resolved values.\n",
                                    "default": false
                                  }
                                }
                              },
                              "css_inliner": {
                                "type": "object",
                                "description": "Moves CSS from `<style>` tags into inline `style` attributes on each element. Essential for email clients with limited `<style>` support (for example, older Gmail and some Outlook versions). Uses the `juice` library. Elements in `<style>` tags marked with `data-ignore-inlining` are skipped.\n",
                                "properties": {
                                  "enabled": {
                                    "type": "boolean",
                                    "description": "Enable CSS inlining.\n",
                                    "default": false
                                  },
                                  "apply_style_tags": {
                                    "type": "boolean",
                                    "description": "Inline styles from `<style>` tags.\n",
                                    "default": true
                                  },
                                  "preserve_important": {
                                    "type": "boolean",
                                    "description": "Preserve `!important` declarations in inlined styles.\n",
                                    "default": false
                                  },
                                  "remove_style_tags": {
                                    "type": "boolean",
                                    "description": "Remove `<style>` tags after inlining their rules.\n",
                                    "default": true
                                  },
                                  "preserve_font_faces": {
                                    "type": "boolean",
                                    "description": "Keep `@font-face` rules in `<style>` (cannot be inlined).\n",
                                    "default": true
                                  },
                                  "preserve_media_queries": {
                                    "type": "boolean",
                                    "description": "Keep `@media` rules in `<style>` (cannot be inlined).\n",
                                    "default": true
                                  },
                                  "preserve_keyframes": {
                                    "type": "boolean",
                                    "description": "Keep `@keyframes` rules in `<style>` (cannot be inlined).\n",
                                    "default": true
                                  },
                                  "preserve_pseudos": {
                                    "type": "boolean",
                                    "description": "Keep pseudo-selector rules (for example, `:hover`) in `<style>` (cannot be inlined).\n",
                                    "default": true
                                  },
                                  "inline_pseudo_elements": {
                                    "type": "boolean",
                                    "description": "Attempt to inline pseudo-element (`::before`, `::after`) styles.\n",
                                    "default": false
                                  },
                                  "apply_html_attributes": {
                                    "type": "object",
                                    "description": "Controls adding redundant HTML attributes alongside inlined CSS to different HTML elements.\n",
                                    "properties": {
                                      "enabled": {
                                        "type": "boolean",
                                        "description": "Enable adding redundant HTML attributes.\n",
                                        "default": true
                                      },
                                      "apply_width_attributes": {
                                        "type": "boolean",
                                        "description": "Add redundant HTML `width` attributes alongside inlined CSS `width` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS width (for example, older Outlook).\n",
                                        "default": true
                                      },
                                      "apply_height_attributes": {
                                        "type": "boolean",
                                        "description": "Add redundant HTML `height` attributes alongside inlined CSS `height` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS height.\n",
                                        "default": true
                                      },
                                      "apply_table_element_attributes": {
                                        "type": "boolean",
                                        "description": "Add redundant HTML attributes on table elements (`<table>`, `<th>`, `<tr>`, `<td>`, `<caption>`, `<colgroup>`, `<col>`, `<thead>`, `<tbody>`, `<tfoot>`): `background-color` → `bgcolor`, `background-image` → `background`, `text-align` → `align`, `vertical-align` → `valign`.\n",
                                        "default": true
                                      }
                                    }
                                  }
                                }
                              },
                              "accessibility": {
                                "type": "object",
                                "description": "Applies a set of accessibility improvements to the email HTML. When no `language` is set, this falls back to the `lang` attribute on the `<html>` tag, or `\"und\"` (undetermined). The `dir` attribute is automatically derived from the language using RTL detection.\n",
                                "properties": {
                                  "enabled": {
                                    "type": "boolean",
                                    "description": "Enable accessibility fixes.\n",
                                    "default": false
                                  },
                                  "language": {
                                    "type": "string",
                                    "description": "Language code (for example, `\"en\"`, `\"fr\"`, or `\"ar\"`) used for `lang` and `dir` attributes.\n",
                                    "default": ""
                                  },
                                  "add_lang_to_html": {
                                    "type": "boolean",
                                    "description": "Add `lang` attribute to the `<html>` element if not already present.\n",
                                    "default": true
                                  },
                                  "add_dir_to_html": {
                                    "type": "boolean",
                                    "description": "Add `dir` attribute (`ltr`, `rtl`, or `auto`) to the `<html>` element if not already present.\n",
                                    "default": true
                                  },
                                  "add_lang_to_content": {
                                    "type": "boolean",
                                    "description": "Add `lang` attribute to direct children of `<body>`.\n",
                                    "default": true
                                  },
                                  "add_dir_to_content": {
                                    "type": "boolean",
                                    "description": "Add `dir` attribute to direct children of `<body>`.\n",
                                    "default": true
                                  },
                                  "add_role_to_tables": {
                                    "type": "boolean",
                                    "description": "Add `role=\"presentation\"` to all `<table>` elements without an existing `role`, so screen readers skip table semantics for layout tables.\n",
                                    "default": true
                                  },
                                  "add_vml_alt_text": {
                                    "type": "boolean",
                                    "description": "Add `alt` attribute to VML elements (used by Outlook’s Word rendering engine), derived from the element’s text content.\n",
                                    "default": true
                                  },
                                  "add_empty_alt_to_images": {
                                    "type": "boolean",
                                    "description": "Add `alt=\"\"` to `<img>` elements missing an `alt` attribute, preventing screen readers from reading the file name.\n",
                                    "default": true
                                  },
                                  "add_title_to_head": {
                                    "type": "boolean",
                                    "description": "Add a `<title>` tag to `<head>` using the email subject line (creates or replaces if empty).\n",
                                    "default": true
                                  },
                                  "remove_button_role_from_links": {
                                    "type": "boolean",
                                    "description": "Remove `role=\"button\"` from `<a>` tags to restore proper link semantics for screen readers.\n",
                                    "default": true
                                  },
                                  "remove_zoom_meta_tag": {
                                    "type": "boolean",
                                    "description": "Remove viewport `<meta>` tags that restrict zoom (`user-scalable=0`, `user-scalable=no`, `maximum-scale=1`, or `maximum-scale=2`).\n",
                                    "default": true
                                  }
                                }
                              },
                              "formatter": {
                                "type": "object",
                                "description": "Controls the output formatting of the final HTML. Only one mode (`prettify` or `minify`) can be active at a time. Set to `\"none\"` to skip formatting entirely.\n",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "description": "Formatting mode to apply.\n",
                                    "enum": [
                                      "none",
                                      "prettify",
                                      "minify"
                                    ],
                                    "default": "none"
                                  },
                                  "prettify": {
                                    "type": "object",
                                    "description": "Options used when `type` is `\"prettify\"`. Produces human-readable, indented HTML output.\n",
                                    "properties": {
                                      "indent_character": {
                                        "type": "string",
                                        "description": "Character used for indentation.\n",
                                        "enum": [
                                          "spaces",
                                          "tabs"
                                        ],
                                        "default": "spaces"
                                      },
                                      "indent_size": {
                                        "type": "integer",
                                        "description": "Number of indent characters per level.\n",
                                        "default": 2
                                      },
                                      "wrap_attributes": {
                                        "type": "boolean",
                                        "description": "Wrap HTML attributes onto separate lines (`force-expand-multiline` mode).\n",
                                        "default": false
                                      }
                                    }
                                  },
                                  "minify": {
                                    "type": "object",
                                    "description": "Options used when `type` is `\"minify\"`. Reduces file size by stripping whitespace and comments.\n",
                                    "properties": {
                                      "remove_line_breaks": {
                                        "type": "boolean",
                                        "description": "Remove all line breaks from the output.\n",
                                        "default": false
                                      },
                                      "line_length_limit": {
                                        "type": "integer",
                                        "description": "Maximum characters per line before inserting a line break.\n",
                                        "default": 500
                                      },
                                      "remove_indentations": {
                                        "type": "boolean",
                                        "description": "Remove leading whitespace indentation.\n",
                                        "default": true
                                      },
                                      "remove_html_comments": {
                                        "type": "string",
                                        "description": "HTML comment removal level. `\"0\"` keeps all comments, `\"1\"` removes non-conditional comments (preserves MSO conditionals like `<!--[if mso]>`), and `\"2\"` removes all comments including conditional.\n",
                                        "enum": [
                                          "0",
                                          "1",
                                          "2"
                                        ],
                                        "default": "0"
                                      },
                                      "remove_css_comments": {
                                        "type": "boolean",
                                        "description": "Remove CSS comments (`/* ... */`) from `<style>` blocks.\n",
                                        "default": true
                                      }
                                    }
                                  }
                                }
                              },
                              "prevent_widows": {
                                "type": "object",
                                "description": "Replaces the last space in text blocks with a non-breaking space (`&nbsp;`) to prevent a single word from wrapping onto its own line (a “widow”). Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags (`{{ }} ` and `{% %}`).\n",
                                "properties": {
                                  "enabled": {
                                    "type": "boolean",
                                    "description": "Enable widow word prevention.\n",
                                    "default": false
                                  }
                                }
                              },
                              "encode_entities": {
                                "type": "object",
                                "description": "Encodes special characters (for example, `©`, `™`, and `—`) as their HTML entity equivalents. Improves rendering consistency across email clients with varying character encoding support. Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags and avoids double-encoding existing entities.\n",
                                "properties": {
                                  "enabled": {
                                    "type": "boolean",
                                    "description": "Enable HTML entity encoding.\n",
                                    "default": false
                                  }
                                }
                              },
                              "remove_unused_css": {
                                "type": "object",
                                "description": "Scans the HTML and removes any CSS selectors from `<style>` tags that are not referenced in the document. Reduces file size and helps avoid Gmail’s 102 KB clipping limit. HTML and CSS comments are always preserved by this step (comment removal is handled separately by the formatter object).\n",
                                "properties": {
                                  "enabled": {
                                    "type": "boolean",
                                    "description": "Enable unused CSS removal.\n",
                                    "default": false
                                  },
                                  "whitelist": {
                                    "type": "array",
                                    "description": "CSS selectors to always keep, even if they are not found in the HTML.\n  - .ReadMsgBody\n  - .ExternalClass\n  - .aBn\n  - .a6S\n  - .im\n  - .yshortcuts\n  - \"#outlook\"\n  - .MsoHyperlink\n  - .MsoHyperlinkFollowed                \n",
                                    "items": {
                                      "type": "string",
                                      "description": "A CSS selector to always keep.\n"
                                    }
                                  },
                                  "backend_markers": {
                                    "type": "array",
                                    "description": "Template syntax delimiters (e.g., Liquid, Handlebars) that the CSS parser should skip over to avoid treating template expressions as invalid CSS.\n",
                                    "default": [
                                      {
                                        "heads": "",
                                        "tails": ""
                                      },
                                      {
                                        "heads": "{%",
                                        "tails": "%}"
                                      }
                                    ],
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "heads": {
                                          "type": "string",
                                          "description": "Opening delimiter.\n"
                                        },
                                        "tails": {
                                          "type": "string",
                                          "description": "Closing delimiter.\n"
                                        }
                                      }
                                    }
                                  },
                                  "uglify": {
                                    "type": "boolean",
                                    "description": "Shorten (uglify) CSS class names to reduce file size.\n",
                                    "default": false
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url https://api.customer.io/v1/design_studio/emails/{id}/languages"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/emails/%7Bid%7D/languages\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/emails/%7Bid%7D/languages\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/design_studio/emails/%7Bid%7D/languages\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/emails/%7Bid%7D/languages\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "post": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Create an email translation",
        "description": "Creates a new translation for an email. If content, envelope, and/or transformers are omitted, the values are copied from the default (parent) email.\n",
        "operationId": "createEmailTranslation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "How content is inherited from the default, parent email:\n  - If both `content` and `envelope` are omitted: envelope (including subject and preheader) is copied verbatim from the parent email\n  - If `content` is provided but `envelope` is omitted: the envelope is reconstructed from the parent’s envelope settings, using the new subject and preheader\n  - If `envelope` is provided but `content` is omitted: the provided envelope is used with the parent’s subject and preheader\n  - HTML, AMP, and text body fields are always copied from parent if `content` is omitted\n",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "language"
                ],
                "properties": {
                  "language": {
                    "type": "string",
                    "description": "A [language code](/journeys/localization-attribute/#supported-languages) that corresponds to the language of the translation",
                    "example": "es"
                  },
                  "content": {
                    "type": "object",
                    "description": "The content of your email.",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Email subject line."
                      },
                      "preheader_text": {
                        "type": "string",
                        "description": "Preview text."
                      },
                      "html": {
                        "type": "string",
                        "description": "HTML body."
                      },
                      "amp": {
                        "type": "string",
                        "description": "AMP HTML body."
                      },
                      "text": {
                        "type": "string",
                        "description": "Plain text body."
                      }
                    }
                  },
                  "envelope": {
                    "type": "object",
                    "description": "The envelope of your email, like from and to addresses.",
                    "properties": {
                      "from_id": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Sender identity ID. Must reference an existing identity. You can find this in *Workspace Settings > Email* under your From Addresses.\n"
                      },
                      "reply_to_id": {
                        "type": "integer",
                        "format": "int64",
                        "nullable": true,
                        "description": "Reply-to identity ID. Must reference an existing identity from *Workspace Settings > Email* under your From Addresses.\n"
                      },
                      "recipient": {
                        "type": "string",
                        "description": "Recipient email address. Defaults to `{{customer.email}}`` if not set.\n"
                      },
                      "bcc": {
                        "type": "string",
                        "description": "BCC email address."
                      },
                      "fake_bcc": {
                        "type": "boolean",
                        "description": "Whether to use fake BCC. Defaults to true if not provided."
                      },
                      "headers": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          }
                        },
                        "description": "Custom headers. Each item: { \"name\": \"string\", \"value\": \"string\" }.\n"
                      }
                    }
                  },
                  "transformers": {
                    "type": "object",
                    "description": "Automate repetitive actions like removing white space and inlining CSS with [transformers](/journeys/code-editor-overview/#transformers).",
                    "properties": {
                      "url_parameters": {
                        "type": "object",
                        "description": "Appends query string parameters to all absolute URLs in `<a>` and VML elements. Useful for adding UTM tracking or other analytics parameters. Skips `mailto:`, `tel:`, and `sms:` links. Elements marked with `data-ignore-params` are excluded.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable URL parameter injection.\n",
                            "default": false
                          },
                          "parameters": {
                            "type": "array",
                            "description": "List of parameters to append to URLs.\n",
                            "default": [],
                            "items": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Parameter name.\n"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Parameter value. May contain template variables.\n"
                                },
                                "url_encode": {
                                  "type": "boolean",
                                  "description": "URL-encode the value before appending it to the URL.\n"
                                }
                              }
                            }
                          }
                        }
                      },
                      "css_variables": {
                        "type": "object",
                        "description": "Resolves CSS custom properties (`var(--name)`) into their computed values. Required for email clients that do not support CSS custom properties (most email clients). Variables declared in one `<style>` tag are available in subsequent `<style>` tags.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable CSS variable resolution.\n",
                            "default": false
                          },
                          "preserve": {
                            "type": "boolean",
                            "description": "Keep original custom property declarations (`--name: value`) alongside the resolved values.\n",
                            "default": false
                          }
                        }
                      },
                      "css_inliner": {
                        "type": "object",
                        "description": "Moves CSS from `<style>` tags into inline `style` attributes on each element. Essential for email clients with limited `<style>` support (for example, older Gmail and some Outlook versions). Uses the `juice` library. Elements in `<style>` tags marked with `data-ignore-inlining` are skipped.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable CSS inlining.\n",
                            "default": false
                          },
                          "apply_style_tags": {
                            "type": "boolean",
                            "description": "Inline styles from `<style>` tags.\n",
                            "default": true
                          },
                          "preserve_important": {
                            "type": "boolean",
                            "description": "Preserve `!important` declarations in inlined styles.\n",
                            "default": false
                          },
                          "remove_style_tags": {
                            "type": "boolean",
                            "description": "Remove `<style>` tags after inlining their rules.\n",
                            "default": true
                          },
                          "preserve_font_faces": {
                            "type": "boolean",
                            "description": "Keep `@font-face` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_media_queries": {
                            "type": "boolean",
                            "description": "Keep `@media` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_keyframes": {
                            "type": "boolean",
                            "description": "Keep `@keyframes` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_pseudos": {
                            "type": "boolean",
                            "description": "Keep pseudo-selector rules (for example, `:hover`) in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "inline_pseudo_elements": {
                            "type": "boolean",
                            "description": "Attempt to inline pseudo-element (`::before`, `::after`) styles.\n",
                            "default": false
                          },
                          "apply_html_attributes": {
                            "type": "object",
                            "description": "Controls adding redundant HTML attributes alongside inlined CSS to different HTML elements.\n",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable adding redundant HTML attributes.\n",
                                "default": true
                              },
                              "apply_width_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML `width` attributes alongside inlined CSS `width` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS width (for example, older Outlook).\n",
                                "default": true
                              },
                              "apply_height_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML `height` attributes alongside inlined CSS `height` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS height.\n",
                                "default": true
                              },
                              "apply_table_element_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML attributes on table elements (`<table>`, `<th>`, `<tr>`, `<td>`, `<caption>`, `<colgroup>`, `<col>`, `<thead>`, `<tbody>`, `<tfoot>`): `background-color` → `bgcolor`, `background-image` → `background`, `text-align` → `align`, `vertical-align` → `valign`.\n",
                                "default": true
                              }
                            }
                          }
                        }
                      },
                      "accessibility": {
                        "type": "object",
                        "description": "Applies a set of accessibility improvements to the email HTML. When no `language` is set, this falls back to the `lang` attribute on the `<html>` tag, or `\"und\"` (undetermined). The `dir` attribute is automatically derived from the language using RTL detection.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable accessibility fixes.\n",
                            "default": false
                          },
                          "language": {
                            "type": "string",
                            "description": "Language code (for example, `\"en\"`, `\"fr\"`, or `\"ar\"`) used for `lang` and `dir` attributes.\n",
                            "default": ""
                          },
                          "add_lang_to_html": {
                            "type": "boolean",
                            "description": "Add `lang` attribute to the `<html>` element if not already present.\n",
                            "default": true
                          },
                          "add_dir_to_html": {
                            "type": "boolean",
                            "description": "Add `dir` attribute (`ltr`, `rtl`, or `auto`) to the `<html>` element if not already present.\n",
                            "default": true
                          },
                          "add_lang_to_content": {
                            "type": "boolean",
                            "description": "Add `lang` attribute to direct children of `<body>`.\n",
                            "default": true
                          },
                          "add_dir_to_content": {
                            "type": "boolean",
                            "description": "Add `dir` attribute to direct children of `<body>`.\n",
                            "default": true
                          },
                          "add_role_to_tables": {
                            "type": "boolean",
                            "description": "Add `role=\"presentation\"` to all `<table>` elements without an existing `role`, so screen readers skip table semantics for layout tables.\n",
                            "default": true
                          },
                          "add_vml_alt_text": {
                            "type": "boolean",
                            "description": "Add `alt` attribute to VML elements (used by Outlook’s Word rendering engine), derived from the element’s text content.\n",
                            "default": true
                          },
                          "add_empty_alt_to_images": {
                            "type": "boolean",
                            "description": "Add `alt=\"\"` to `<img>` elements missing an `alt` attribute, preventing screen readers from reading the file name.\n",
                            "default": true
                          },
                          "add_title_to_head": {
                            "type": "boolean",
                            "description": "Add a `<title>` tag to `<head>` using the email subject line (creates or replaces if empty).\n",
                            "default": true
                          },
                          "remove_button_role_from_links": {
                            "type": "boolean",
                            "description": "Remove `role=\"button\"` from `<a>` tags to restore proper link semantics for screen readers.\n",
                            "default": true
                          },
                          "remove_zoom_meta_tag": {
                            "type": "boolean",
                            "description": "Remove viewport `<meta>` tags that restrict zoom (`user-scalable=0`, `user-scalable=no`, `maximum-scale=1`, or `maximum-scale=2`).\n",
                            "default": true
                          }
                        }
                      },
                      "formatter": {
                        "type": "object",
                        "description": "Controls the output formatting of the final HTML. Only one mode (`prettify` or `minify`) can be active at a time. Set to `\"none\"` to skip formatting entirely.\n",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Formatting mode to apply.\n",
                            "enum": [
                              "none",
                              "prettify",
                              "minify"
                            ],
                            "default": "none"
                          },
                          "prettify": {
                            "type": "object",
                            "description": "Options used when `type` is `\"prettify\"`. Produces human-readable, indented HTML output.\n",
                            "properties": {
                              "indent_character": {
                                "type": "string",
                                "description": "Character used for indentation.\n",
                                "enum": [
                                  "spaces",
                                  "tabs"
                                ],
                                "default": "spaces"
                              },
                              "indent_size": {
                                "type": "integer",
                                "description": "Number of indent characters per level.\n",
                                "default": 2
                              },
                              "wrap_attributes": {
                                "type": "boolean",
                                "description": "Wrap HTML attributes onto separate lines (`force-expand-multiline` mode).\n",
                                "default": false
                              }
                            }
                          },
                          "minify": {
                            "type": "object",
                            "description": "Options used when `type` is `\"minify\"`. Reduces file size by stripping whitespace and comments.\n",
                            "properties": {
                              "remove_line_breaks": {
                                "type": "boolean",
                                "description": "Remove all line breaks from the output.\n",
                                "default": false
                              },
                              "line_length_limit": {
                                "type": "integer",
                                "description": "Maximum characters per line before inserting a line break.\n",
                                "default": 500
                              },
                              "remove_indentations": {
                                "type": "boolean",
                                "description": "Remove leading whitespace indentation.\n",
                                "default": true
                              },
                              "remove_html_comments": {
                                "type": "string",
                                "description": "HTML comment removal level. `\"0\"` keeps all comments, `\"1\"` removes non-conditional comments (preserves MSO conditionals like `<!--[if mso]>`), and `\"2\"` removes all comments including conditional.\n",
                                "enum": [
                                  "0",
                                  "1",
                                  "2"
                                ],
                                "default": "0"
                              },
                              "remove_css_comments": {
                                "type": "boolean",
                                "description": "Remove CSS comments (`/* ... */`) from `<style>` blocks.\n",
                                "default": true
                              }
                            }
                          }
                        }
                      },
                      "prevent_widows": {
                        "type": "object",
                        "description": "Replaces the last space in text blocks with a non-breaking space (`&nbsp;`) to prevent a single word from wrapping onto its own line (a “widow”). Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags (`{{ }} ` and `{% %}`).\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable widow word prevention.\n",
                            "default": false
                          }
                        }
                      },
                      "encode_entities": {
                        "type": "object",
                        "description": "Encodes special characters (for example, `©`, `™`, and `—`) as their HTML entity equivalents. Improves rendering consistency across email clients with varying character encoding support. Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags and avoids double-encoding existing entities.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable HTML entity encoding.\n",
                            "default": false
                          }
                        }
                      },
                      "remove_unused_css": {
                        "type": "object",
                        "description": "Scans the HTML and removes any CSS selectors from `<style>` tags that are not referenced in the document. Reduces file size and helps avoid Gmail’s 102 KB clipping limit. HTML and CSS comments are always preserved by this step (comment removal is handled separately by the formatter object).\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable unused CSS removal.\n",
                            "default": false
                          },
                          "whitelist": {
                            "type": "array",
                            "description": "CSS selectors to always keep, even if they are not found in the HTML.\n  - .ReadMsgBody\n  - .ExternalClass\n  - .aBn\n  - .a6S\n  - .im\n  - .yshortcuts\n  - \"#outlook\"\n  - .MsoHyperlink\n  - .MsoHyperlinkFollowed                \n",
                            "items": {
                              "type": "string",
                              "description": "A CSS selector to always keep.\n"
                            }
                          },
                          "backend_markers": {
                            "type": "array",
                            "description": "Template syntax delimiters (e.g., Liquid, Handlebars) that the CSS parser should skip over to avoid treating template expressions as invalid CSS.\n",
                            "default": [
                              {
                                "heads": "",
                                "tails": ""
                              },
                              {
                                "heads": "{%",
                                "tails": "%}"
                              }
                            ],
                            "items": {
                              "type": "object",
                              "properties": {
                                "heads": {
                                  "type": "string",
                                  "description": "Opening delimiter.\n"
                                },
                                "tails": {
                                  "type": "string",
                                  "description": "Closing delimiter.\n"
                                }
                              }
                            }
                          },
                          "uglify": {
                            "type": "boolean",
                            "description": "Shorten (uglify) CSS class names to reduce file size.\n",
                            "default": false
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Translation created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "email_translation": {
                      "type": "object",
                      "properties": {
                        "language_group_id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "ID of the parent email that groups all translations. Same as the id in the path parameter."
                        },
                        "language": {
                          "type": "string",
                          "description": "The [language code](/journeys/localization-attribute/#supported-languages) of the translation",
                          "example": "fr"
                        },
                        "is_template": {
                          "type": "boolean",
                          "description": "Whether the translation is a template"
                        },
                        "is_linked": {
                          "type": "boolean",
                          "description": "Whether the translation is linked to a workflow (campaign, broadcast, etc)"
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID of the parent folder, or `null` if the email is in your root directory.",
                          "nullable": true
                        },
                        "available_languages": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "List of [language codes](/journeys/localization-attribute/#supported-languages) that reflect the languages this default email has been translated to.",
                          "example": [
                            "en",
                            "es"
                          ]
                        },
                        "created": {
                          "type": "integer",
                          "description": "Unix timestamp of when the translation was created."
                        },
                        "updated": {
                          "type": "integer",
                          "description": "Unix timestamp of the last update to the translation."
                        },
                        "content": {
                          "type": "object",
                          "description": "The content of your email.",
                          "properties": {
                            "subject": {
                              "type": "string",
                              "description": "Email subject line."
                            },
                            "preheader_text": {
                              "type": "string",
                              "description": "Preview text."
                            },
                            "html": {
                              "type": "string",
                              "description": "HTML body."
                            },
                            "amp": {
                              "type": "string",
                              "description": "AMP HTML body."
                            },
                            "text": {
                              "type": "string",
                              "description": "Plain text body."
                            }
                          }
                        },
                        "envelope": {
                          "type": "object",
                          "properties": {
                            "from_id": {
                              "type": "integer",
                              "nullable": true,
                              "description": "Sender identity ID.\n"
                            },
                            "from": {
                              "type": "string",
                              "description": "The sender address associated with the from_id."
                            },
                            "reply_to_id": {
                              "type": "integer",
                              "nullable": true,
                              "description": "Reply-to identity ID. This matches one of the ids in *Workspace Settings > Email*.\n"
                            },
                            "reply_to": {
                              "type": "string",
                              "description": "The reply-to address associated with the reply_to_id."
                            },
                            "bcc": {
                              "type": "string",
                              "description": "BCC email address."
                            },
                            "fake_bcc": {
                              "type": "boolean",
                              "description": "Whether to use fake BCC. Defaults to true if not provided."
                            },
                            "headers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                }
                              },
                              "description": "Custom headers. Each item: { \"name\": \"string\", \"value\": \"string\" }.\n"
                            },
                            "recipient": {
                              "type": "string",
                              "description": "Recipient expression. Defaults to {{customer.email}} if not set."
                            }
                          }
                        },
                        "transformers": {
                          "type": "object",
                          "description": "Automate repetitive actions like removing white space and inlining CSS with [transformers](/journeys/code-editor-overview/#transformers).",
                          "properties": {
                            "url_parameters": {
                              "type": "object",
                              "description": "Appends query string parameters to all absolute URLs in `<a>` and VML elements. Useful for adding UTM tracking or other analytics parameters. Skips `mailto:`, `tel:`, and `sms:` links. Elements marked with `data-ignore-params` are excluded.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable URL parameter injection.\n",
                                  "default": false
                                },
                                "parameters": {
                                  "type": "array",
                                  "description": "List of parameters to append to URLs.\n",
                                  "default": [],
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string",
                                        "description": "Parameter name.\n"
                                      },
                                      "value": {
                                        "type": "string",
                                        "description": "Parameter value. May contain template variables.\n"
                                      },
                                      "url_encode": {
                                        "type": "boolean",
                                        "description": "URL-encode the value before appending it to the URL.\n"
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "css_variables": {
                              "type": "object",
                              "description": "Resolves CSS custom properties (`var(--name)`) into their computed values. Required for email clients that do not support CSS custom properties (most email clients). Variables declared in one `<style>` tag are available in subsequent `<style>` tags.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable CSS variable resolution.\n",
                                  "default": false
                                },
                                "preserve": {
                                  "type": "boolean",
                                  "description": "Keep original custom property declarations (`--name: value`) alongside the resolved values.\n",
                                  "default": false
                                }
                              }
                            },
                            "css_inliner": {
                              "type": "object",
                              "description": "Moves CSS from `<style>` tags into inline `style` attributes on each element. Essential for email clients with limited `<style>` support (for example, older Gmail and some Outlook versions). Uses the `juice` library. Elements in `<style>` tags marked with `data-ignore-inlining` are skipped.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable CSS inlining.\n",
                                  "default": false
                                },
                                "apply_style_tags": {
                                  "type": "boolean",
                                  "description": "Inline styles from `<style>` tags.\n",
                                  "default": true
                                },
                                "preserve_important": {
                                  "type": "boolean",
                                  "description": "Preserve `!important` declarations in inlined styles.\n",
                                  "default": false
                                },
                                "remove_style_tags": {
                                  "type": "boolean",
                                  "description": "Remove `<style>` tags after inlining their rules.\n",
                                  "default": true
                                },
                                "preserve_font_faces": {
                                  "type": "boolean",
                                  "description": "Keep `@font-face` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_media_queries": {
                                  "type": "boolean",
                                  "description": "Keep `@media` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_keyframes": {
                                  "type": "boolean",
                                  "description": "Keep `@keyframes` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_pseudos": {
                                  "type": "boolean",
                                  "description": "Keep pseudo-selector rules (for example, `:hover`) in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "inline_pseudo_elements": {
                                  "type": "boolean",
                                  "description": "Attempt to inline pseudo-element (`::before`, `::after`) styles.\n",
                                  "default": false
                                },
                                "apply_html_attributes": {
                                  "type": "object",
                                  "description": "Controls adding redundant HTML attributes alongside inlined CSS to different HTML elements.\n",
                                  "properties": {
                                    "enabled": {
                                      "type": "boolean",
                                      "description": "Enable adding redundant HTML attributes.\n",
                                      "default": true
                                    },
                                    "apply_width_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML `width` attributes alongside inlined CSS `width` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS width (for example, older Outlook).\n",
                                      "default": true
                                    },
                                    "apply_height_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML `height` attributes alongside inlined CSS `height` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS height.\n",
                                      "default": true
                                    },
                                    "apply_table_element_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML attributes on table elements (`<table>`, `<th>`, `<tr>`, `<td>`, `<caption>`, `<colgroup>`, `<col>`, `<thead>`, `<tbody>`, `<tfoot>`): `background-color` → `bgcolor`, `background-image` → `background`, `text-align` → `align`, `vertical-align` → `valign`.\n",
                                      "default": true
                                    }
                                  }
                                }
                              }
                            },
                            "accessibility": {
                              "type": "object",
                              "description": "Applies a set of accessibility improvements to the email HTML. When no `language` is set, this falls back to the `lang` attribute on the `<html>` tag, or `\"und\"` (undetermined). The `dir` attribute is automatically derived from the language using RTL detection.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable accessibility fixes.\n",
                                  "default": false
                                },
                                "language": {
                                  "type": "string",
                                  "description": "Language code (for example, `\"en\"`, `\"fr\"`, or `\"ar\"`) used for `lang` and `dir` attributes.\n",
                                  "default": ""
                                },
                                "add_lang_to_html": {
                                  "type": "boolean",
                                  "description": "Add `lang` attribute to the `<html>` element if not already present.\n",
                                  "default": true
                                },
                                "add_dir_to_html": {
                                  "type": "boolean",
                                  "description": "Add `dir` attribute (`ltr`, `rtl`, or `auto`) to the `<html>` element if not already present.\n",
                                  "default": true
                                },
                                "add_lang_to_content": {
                                  "type": "boolean",
                                  "description": "Add `lang` attribute to direct children of `<body>`.\n",
                                  "default": true
                                },
                                "add_dir_to_content": {
                                  "type": "boolean",
                                  "description": "Add `dir` attribute to direct children of `<body>`.\n",
                                  "default": true
                                },
                                "add_role_to_tables": {
                                  "type": "boolean",
                                  "description": "Add `role=\"presentation\"` to all `<table>` elements without an existing `role`, so screen readers skip table semantics for layout tables.\n",
                                  "default": true
                                },
                                "add_vml_alt_text": {
                                  "type": "boolean",
                                  "description": "Add `alt` attribute to VML elements (used by Outlook’s Word rendering engine), derived from the element’s text content.\n",
                                  "default": true
                                },
                                "add_empty_alt_to_images": {
                                  "type": "boolean",
                                  "description": "Add `alt=\"\"` to `<img>` elements missing an `alt` attribute, preventing screen readers from reading the file name.\n",
                                  "default": true
                                },
                                "add_title_to_head": {
                                  "type": "boolean",
                                  "description": "Add a `<title>` tag to `<head>` using the email subject line (creates or replaces if empty).\n",
                                  "default": true
                                },
                                "remove_button_role_from_links": {
                                  "type": "boolean",
                                  "description": "Remove `role=\"button\"` from `<a>` tags to restore proper link semantics for screen readers.\n",
                                  "default": true
                                },
                                "remove_zoom_meta_tag": {
                                  "type": "boolean",
                                  "description": "Remove viewport `<meta>` tags that restrict zoom (`user-scalable=0`, `user-scalable=no`, `maximum-scale=1`, or `maximum-scale=2`).\n",
                                  "default": true
                                }
                              }
                            },
                            "formatter": {
                              "type": "object",
                              "description": "Controls the output formatting of the final HTML. Only one mode (`prettify` or `minify`) can be active at a time. Set to `\"none\"` to skip formatting entirely.\n",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "description": "Formatting mode to apply.\n",
                                  "enum": [
                                    "none",
                                    "prettify",
                                    "minify"
                                  ],
                                  "default": "none"
                                },
                                "prettify": {
                                  "type": "object",
                                  "description": "Options used when `type` is `\"prettify\"`. Produces human-readable, indented HTML output.\n",
                                  "properties": {
                                    "indent_character": {
                                      "type": "string",
                                      "description": "Character used for indentation.\n",
                                      "enum": [
                                        "spaces",
                                        "tabs"
                                      ],
                                      "default": "spaces"
                                    },
                                    "indent_size": {
                                      "type": "integer",
                                      "description": "Number of indent characters per level.\n",
                                      "default": 2
                                    },
                                    "wrap_attributes": {
                                      "type": "boolean",
                                      "description": "Wrap HTML attributes onto separate lines (`force-expand-multiline` mode).\n",
                                      "default": false
                                    }
                                  }
                                },
                                "minify": {
                                  "type": "object",
                                  "description": "Options used when `type` is `\"minify\"`. Reduces file size by stripping whitespace and comments.\n",
                                  "properties": {
                                    "remove_line_breaks": {
                                      "type": "boolean",
                                      "description": "Remove all line breaks from the output.\n",
                                      "default": false
                                    },
                                    "line_length_limit": {
                                      "type": "integer",
                                      "description": "Maximum characters per line before inserting a line break.\n",
                                      "default": 500
                                    },
                                    "remove_indentations": {
                                      "type": "boolean",
                                      "description": "Remove leading whitespace indentation.\n",
                                      "default": true
                                    },
                                    "remove_html_comments": {
                                      "type": "string",
                                      "description": "HTML comment removal level. `\"0\"` keeps all comments, `\"1\"` removes non-conditional comments (preserves MSO conditionals like `<!--[if mso]>`), and `\"2\"` removes all comments including conditional.\n",
                                      "enum": [
                                        "0",
                                        "1",
                                        "2"
                                      ],
                                      "default": "0"
                                    },
                                    "remove_css_comments": {
                                      "type": "boolean",
                                      "description": "Remove CSS comments (`/* ... */`) from `<style>` blocks.\n",
                                      "default": true
                                    }
                                  }
                                }
                              }
                            },
                            "prevent_widows": {
                              "type": "object",
                              "description": "Replaces the last space in text blocks with a non-breaking space (`&nbsp;`) to prevent a single word from wrapping onto its own line (a “widow”). Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags (`{{ }} ` and `{% %}`).\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable widow word prevention.\n",
                                  "default": false
                                }
                              }
                            },
                            "encode_entities": {
                              "type": "object",
                              "description": "Encodes special characters (for example, `©`, `™`, and `—`) as their HTML entity equivalents. Improves rendering consistency across email clients with varying character encoding support. Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags and avoids double-encoding existing entities.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable HTML entity encoding.\n",
                                  "default": false
                                }
                              }
                            },
                            "remove_unused_css": {
                              "type": "object",
                              "description": "Scans the HTML and removes any CSS selectors from `<style>` tags that are not referenced in the document. Reduces file size and helps avoid Gmail’s 102 KB clipping limit. HTML and CSS comments are always preserved by this step (comment removal is handled separately by the formatter object).\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable unused CSS removal.\n",
                                  "default": false
                                },
                                "whitelist": {
                                  "type": "array",
                                  "description": "CSS selectors to always keep, even if they are not found in the HTML.\n  - .ReadMsgBody\n  - .ExternalClass\n  - .aBn\n  - .a6S\n  - .im\n  - .yshortcuts\n  - \"#outlook\"\n  - .MsoHyperlink\n  - .MsoHyperlinkFollowed                \n",
                                  "items": {
                                    "type": "string",
                                    "description": "A CSS selector to always keep.\n"
                                  }
                                },
                                "backend_markers": {
                                  "type": "array",
                                  "description": "Template syntax delimiters (e.g., Liquid, Handlebars) that the CSS parser should skip over to avoid treating template expressions as invalid CSS.\n",
                                  "default": [
                                    {
                                      "heads": "",
                                      "tails": ""
                                    },
                                    {
                                      "heads": "{%",
                                      "tails": "%}"
                                    }
                                  ],
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "heads": {
                                        "type": "string",
                                        "description": "Opening delimiter.\n"
                                      },
                                      "tails": {
                                        "type": "string",
                                        "description": "Closing delimiter.\n"
                                      }
                                    }
                                  }
                                },
                                "uglify": {
                                  "type": "boolean",
                                  "description": "Shorten (uglify) CSS class names to reduce file size.\n",
                                  "default": false
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Possible reasons:\n  - Missing language\n  - Invalid language code\n  - Missing required content sub-field when content is provided\n  - Unknown JSON field in content, envelope, or transformers\n  - from_id or reply_to_id does not reference an existing identity\n",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"language\": \"es\"\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --url https://api.customer.io/v1/design_studio/emails/{id}/languages \\\n  --header 'content-type: application/json' \\\n  --data '{\"language\":\"es\",\"content\":{\"subject\":\"string\",\"preheader_text\":\"string\",\"html\":\"string\",\"amp\":\"string\",\"text\":\"string\"},\"envelope\":{\"from_id\":0,\"reply_to_id\":0,\"recipient\":\"string\",\"bcc\":\"string\",\"fake_bcc\":true,\"headers\":[{\"name\":\"string\",\"value\":\"string\"}]},\"transformers\":{\"url_parameters\":{\"enabled\":false,\"parameters\":[]},\"css_variables\":{\"enabled\":false,\"preserve\":false},\"css_inliner\":{\"enabled\":false,\"apply_style_tags\":true,\"preserve_important\":false,\"remove_style_tags\":true,\"preserve_font_faces\":true,\"preserve_media_queries\":true,\"preserve_keyframes\":true,\"preserve_pseudos\":true,\"inline_pseudo_elements\":false,\"apply_html_attributes\":{\"enabled\":true,\"apply_width_attributes\":true,\"apply_height_attributes\":true,\"apply_table_element_attributes\":true}},\"accessibility\":{\"enabled\":false,\"language\":\"\",\"add_lang_to_html\":true,\"add_dir_to_html\":true,\"add_lang_to_content\":true,\"add_dir_to_content\":true,\"add_role_to_tables\":true,\"add_vml_alt_text\":true,\"add_empty_alt_to_images\":true,\"add_title_to_head\":true,\"remove_button_role_from_links\":true,\"remove_zoom_meta_tag\":true},\"formatter\":{\"type\":\"none\",\"prettify\":{\"indent_character\":\"spaces\",\"indent_size\":2,\"wrap_attributes\":false},\"minify\":{\"remove_line_breaks\":false,\"line_length_limit\":500,\"remove_indentations\":true,\"remove_html_comments\":\"0\",\"remove_css_comments\":true}},\"prevent_widows\":{\"enabled\":false},\"encode_entities\":{\"enabled\":false},\"remove_unused_css\":{\"enabled\":false,\"whitelist\":[\"string\"],\"backend_markers\":[{\"heads\":\"\",\"tails\":\"\"},{\"heads\":\"{%\",\"tails\":\"%}\"}],\"uglify\":false}}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/emails/%7Bid%7D/languages\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  language: 'es',\n  content: {\n    subject: 'string',\n    preheader_text: 'string',\n    html: 'string',\n    amp: 'string',\n    text: 'string'\n  },\n  envelope: {\n    from_id: 0,\n    reply_to_id: 0,\n    recipient: 'string',\n    bcc: 'string',\n    fake_bcc: true,\n    headers: [{name: 'string', value: 'string'}]\n  },\n  transformers: {\n    url_parameters: {enabled: false, parameters: []},\n    css_variables: {enabled: false, preserve: false},\n    css_inliner: {\n      enabled: false,\n      apply_style_tags: true,\n      preserve_important: false,\n      remove_style_tags: true,\n      preserve_font_faces: true,\n      preserve_media_queries: true,\n      preserve_keyframes: true,\n      preserve_pseudos: true,\n      inline_pseudo_elements: false,\n      apply_html_attributes: {\n        enabled: true,\n        apply_width_attributes: true,\n        apply_height_attributes: true,\n        apply_table_element_attributes: true\n      }\n    },\n    accessibility: {\n      enabled: false,\n      language: '',\n      add_lang_to_html: true,\n      add_dir_to_html: true,\n      add_lang_to_content: true,\n      add_dir_to_content: true,\n      add_role_to_tables: true,\n      add_vml_alt_text: true,\n      add_empty_alt_to_images: true,\n      add_title_to_head: true,\n      remove_button_role_from_links: true,\n      remove_zoom_meta_tag: true\n    },\n    formatter: {\n      type: 'none',\n      prettify: {indent_character: 'spaces', indent_size: 2, wrap_attributes: false},\n      minify: {\n        remove_line_breaks: false,\n        line_length_limit: 500,\n        remove_indentations: true,\n        remove_html_comments: '0',\n        remove_css_comments: true\n      }\n    },\n    prevent_widows: {enabled: false},\n    encode_entities: {enabled: false},\n    remove_unused_css: {\n      enabled: false,\n      whitelist: ['string'],\n      backend_markers: [{heads: '', tails: ''}, {heads: '{%', tails: '%}'}],\n      uglify: false\n    }\n  }\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/emails/%7Bid%7D/languages\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"language\\\":\\\"es\\\",\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"language\\\":\\\"es\\\",\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/design_studio/emails/%7Bid%7D/languages\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/emails/%7Bid%7D/languages\"\n\n\tpayload := strings.NewReader(\"{\\\"language\\\":\\\"es\\\",\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/design_studio/emails/{id}/languages/{language}": {
      "get": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Get an email translation",
        "description": "Returns a single email translation by language code, including content, envelope, and transformers.\n",
        "operationId": "getEmailTranslation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "language",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "A [language code](/journeys/localization-attribute/#supported-languages) that indicates the language of your translated email"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "email_translation": {
                      "type": "object",
                      "properties": {
                        "language_group_id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "ID of the parent email that groups all translations. Same as the id in the path parameter."
                        },
                        "language": {
                          "type": "string",
                          "description": "The [language code](/journeys/localization-attribute/#supported-languages) of the translation",
                          "example": "fr"
                        },
                        "is_template": {
                          "type": "boolean",
                          "description": "Whether the translation is a template"
                        },
                        "is_linked": {
                          "type": "boolean",
                          "description": "Whether the translation is linked to a workflow (campaign, broadcast, etc)"
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID of the parent folder, or `null` if the email is in your root directory.",
                          "nullable": true
                        },
                        "available_languages": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "List of [language codes](/journeys/localization-attribute/#supported-languages) that reflect the languages this default email has been translated to.",
                          "example": [
                            "en",
                            "es"
                          ]
                        },
                        "created": {
                          "type": "integer",
                          "description": "Unix timestamp of when the translation was created."
                        },
                        "updated": {
                          "type": "integer",
                          "description": "Unix timestamp of the last update to the translation."
                        },
                        "content": {
                          "type": "object",
                          "description": "The content of your email.",
                          "properties": {
                            "subject": {
                              "type": "string",
                              "description": "Email subject line."
                            },
                            "preheader_text": {
                              "type": "string",
                              "description": "Preview text."
                            },
                            "html": {
                              "type": "string",
                              "description": "HTML body."
                            },
                            "amp": {
                              "type": "string",
                              "description": "AMP HTML body."
                            },
                            "text": {
                              "type": "string",
                              "description": "Plain text body."
                            }
                          }
                        },
                        "envelope": {
                          "type": "object",
                          "properties": {
                            "from_id": {
                              "type": "integer",
                              "nullable": true,
                              "description": "Sender identity ID.\n"
                            },
                            "from": {
                              "type": "string",
                              "description": "The sender address associated with the from_id."
                            },
                            "reply_to_id": {
                              "type": "integer",
                              "nullable": true,
                              "description": "Reply-to identity ID. This matches one of the ids in *Workspace Settings > Email*.\n"
                            },
                            "reply_to": {
                              "type": "string",
                              "description": "The reply-to address associated with the reply_to_id."
                            },
                            "bcc": {
                              "type": "string",
                              "description": "BCC email address."
                            },
                            "fake_bcc": {
                              "type": "boolean",
                              "description": "Whether to use fake BCC. Defaults to true if not provided."
                            },
                            "headers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                }
                              },
                              "description": "Custom headers. Each item: { \"name\": \"string\", \"value\": \"string\" }.\n"
                            },
                            "recipient": {
                              "type": "string",
                              "description": "Recipient expression. Defaults to {{customer.email}} if not set."
                            }
                          }
                        },
                        "transformers": {
                          "type": "object",
                          "description": "Automate repetitive actions like removing white space and inlining CSS with [transformers](/journeys/code-editor-overview/#transformers).",
                          "properties": {
                            "url_parameters": {
                              "type": "object",
                              "description": "Appends query string parameters to all absolute URLs in `<a>` and VML elements. Useful for adding UTM tracking or other analytics parameters. Skips `mailto:`, `tel:`, and `sms:` links. Elements marked with `data-ignore-params` are excluded.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable URL parameter injection.\n",
                                  "default": false
                                },
                                "parameters": {
                                  "type": "array",
                                  "description": "List of parameters to append to URLs.\n",
                                  "default": [],
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string",
                                        "description": "Parameter name.\n"
                                      },
                                      "value": {
                                        "type": "string",
                                        "description": "Parameter value. May contain template variables.\n"
                                      },
                                      "url_encode": {
                                        "type": "boolean",
                                        "description": "URL-encode the value before appending it to the URL.\n"
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "css_variables": {
                              "type": "object",
                              "description": "Resolves CSS custom properties (`var(--name)`) into their computed values. Required for email clients that do not support CSS custom properties (most email clients). Variables declared in one `<style>` tag are available in subsequent `<style>` tags.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable CSS variable resolution.\n",
                                  "default": false
                                },
                                "preserve": {
                                  "type": "boolean",
                                  "description": "Keep original custom property declarations (`--name: value`) alongside the resolved values.\n",
                                  "default": false
                                }
                              }
                            },
                            "css_inliner": {
                              "type": "object",
                              "description": "Moves CSS from `<style>` tags into inline `style` attributes on each element. Essential for email clients with limited `<style>` support (for example, older Gmail and some Outlook versions). Uses the `juice` library. Elements in `<style>` tags marked with `data-ignore-inlining` are skipped.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable CSS inlining.\n",
                                  "default": false
                                },
                                "apply_style_tags": {
                                  "type": "boolean",
                                  "description": "Inline styles from `<style>` tags.\n",
                                  "default": true
                                },
                                "preserve_important": {
                                  "type": "boolean",
                                  "description": "Preserve `!important` declarations in inlined styles.\n",
                                  "default": false
                                },
                                "remove_style_tags": {
                                  "type": "boolean",
                                  "description": "Remove `<style>` tags after inlining their rules.\n",
                                  "default": true
                                },
                                "preserve_font_faces": {
                                  "type": "boolean",
                                  "description": "Keep `@font-face` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_media_queries": {
                                  "type": "boolean",
                                  "description": "Keep `@media` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_keyframes": {
                                  "type": "boolean",
                                  "description": "Keep `@keyframes` rules in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "preserve_pseudos": {
                                  "type": "boolean",
                                  "description": "Keep pseudo-selector rules (for example, `:hover`) in `<style>` (cannot be inlined).\n",
                                  "default": true
                                },
                                "inline_pseudo_elements": {
                                  "type": "boolean",
                                  "description": "Attempt to inline pseudo-element (`::before`, `::after`) styles.\n",
                                  "default": false
                                },
                                "apply_html_attributes": {
                                  "type": "object",
                                  "description": "Controls adding redundant HTML attributes alongside inlined CSS to different HTML elements.\n",
                                  "properties": {
                                    "enabled": {
                                      "type": "boolean",
                                      "description": "Enable adding redundant HTML attributes.\n",
                                      "default": true
                                    },
                                    "apply_width_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML `width` attributes alongside inlined CSS `width` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS width (for example, older Outlook).\n",
                                      "default": true
                                    },
                                    "apply_height_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML `height` attributes alongside inlined CSS `height` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS height.\n",
                                      "default": true
                                    },
                                    "apply_table_element_attributes": {
                                      "type": "boolean",
                                      "description": "Add redundant HTML attributes on table elements (`<table>`, `<th>`, `<tr>`, `<td>`, `<caption>`, `<colgroup>`, `<col>`, `<thead>`, `<tbody>`, `<tfoot>`): `background-color` → `bgcolor`, `background-image` → `background`, `text-align` → `align`, `vertical-align` → `valign`.\n",
                                      "default": true
                                    }
                                  }
                                }
                              }
                            },
                            "accessibility": {
                              "type": "object",
                              "description": "Applies a set of accessibility improvements to the email HTML. When no `language` is set, this falls back to the `lang` attribute on the `<html>` tag, or `\"und\"` (undetermined). The `dir` attribute is automatically derived from the language using RTL detection.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable accessibility fixes.\n",
                                  "default": false
                                },
                                "language": {
                                  "type": "string",
                                  "description": "Language code (for example, `\"en\"`, `\"fr\"`, or `\"ar\"`) used for `lang` and `dir` attributes.\n",
                                  "default": ""
                                },
                                "add_lang_to_html": {
                                  "type": "boolean",
                                  "description": "Add `lang` attribute to the `<html>` element if not already present.\n",
                                  "default": true
                                },
                                "add_dir_to_html": {
                                  "type": "boolean",
                                  "description": "Add `dir` attribute (`ltr`, `rtl`, or `auto`) to the `<html>` element if not already present.\n",
                                  "default": true
                                },
                                "add_lang_to_content": {
                                  "type": "boolean",
                                  "description": "Add `lang` attribute to direct children of `<body>`.\n",
                                  "default": true
                                },
                                "add_dir_to_content": {
                                  "type": "boolean",
                                  "description": "Add `dir` attribute to direct children of `<body>`.\n",
                                  "default": true
                                },
                                "add_role_to_tables": {
                                  "type": "boolean",
                                  "description": "Add `role=\"presentation\"` to all `<table>` elements without an existing `role`, so screen readers skip table semantics for layout tables.\n",
                                  "default": true
                                },
                                "add_vml_alt_text": {
                                  "type": "boolean",
                                  "description": "Add `alt` attribute to VML elements (used by Outlook’s Word rendering engine), derived from the element’s text content.\n",
                                  "default": true
                                },
                                "add_empty_alt_to_images": {
                                  "type": "boolean",
                                  "description": "Add `alt=\"\"` to `<img>` elements missing an `alt` attribute, preventing screen readers from reading the file name.\n",
                                  "default": true
                                },
                                "add_title_to_head": {
                                  "type": "boolean",
                                  "description": "Add a `<title>` tag to `<head>` using the email subject line (creates or replaces if empty).\n",
                                  "default": true
                                },
                                "remove_button_role_from_links": {
                                  "type": "boolean",
                                  "description": "Remove `role=\"button\"` from `<a>` tags to restore proper link semantics for screen readers.\n",
                                  "default": true
                                },
                                "remove_zoom_meta_tag": {
                                  "type": "boolean",
                                  "description": "Remove viewport `<meta>` tags that restrict zoom (`user-scalable=0`, `user-scalable=no`, `maximum-scale=1`, or `maximum-scale=2`).\n",
                                  "default": true
                                }
                              }
                            },
                            "formatter": {
                              "type": "object",
                              "description": "Controls the output formatting of the final HTML. Only one mode (`prettify` or `minify`) can be active at a time. Set to `\"none\"` to skip formatting entirely.\n",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "description": "Formatting mode to apply.\n",
                                  "enum": [
                                    "none",
                                    "prettify",
                                    "minify"
                                  ],
                                  "default": "none"
                                },
                                "prettify": {
                                  "type": "object",
                                  "description": "Options used when `type` is `\"prettify\"`. Produces human-readable, indented HTML output.\n",
                                  "properties": {
                                    "indent_character": {
                                      "type": "string",
                                      "description": "Character used for indentation.\n",
                                      "enum": [
                                        "spaces",
                                        "tabs"
                                      ],
                                      "default": "spaces"
                                    },
                                    "indent_size": {
                                      "type": "integer",
                                      "description": "Number of indent characters per level.\n",
                                      "default": 2
                                    },
                                    "wrap_attributes": {
                                      "type": "boolean",
                                      "description": "Wrap HTML attributes onto separate lines (`force-expand-multiline` mode).\n",
                                      "default": false
                                    }
                                  }
                                },
                                "minify": {
                                  "type": "object",
                                  "description": "Options used when `type` is `\"minify\"`. Reduces file size by stripping whitespace and comments.\n",
                                  "properties": {
                                    "remove_line_breaks": {
                                      "type": "boolean",
                                      "description": "Remove all line breaks from the output.\n",
                                      "default": false
                                    },
                                    "line_length_limit": {
                                      "type": "integer",
                                      "description": "Maximum characters per line before inserting a line break.\n",
                                      "default": 500
                                    },
                                    "remove_indentations": {
                                      "type": "boolean",
                                      "description": "Remove leading whitespace indentation.\n",
                                      "default": true
                                    },
                                    "remove_html_comments": {
                                      "type": "string",
                                      "description": "HTML comment removal level. `\"0\"` keeps all comments, `\"1\"` removes non-conditional comments (preserves MSO conditionals like `<!--[if mso]>`), and `\"2\"` removes all comments including conditional.\n",
                                      "enum": [
                                        "0",
                                        "1",
                                        "2"
                                      ],
                                      "default": "0"
                                    },
                                    "remove_css_comments": {
                                      "type": "boolean",
                                      "description": "Remove CSS comments (`/* ... */`) from `<style>` blocks.\n",
                                      "default": true
                                    }
                                  }
                                }
                              }
                            },
                            "prevent_widows": {
                              "type": "object",
                              "description": "Replaces the last space in text blocks with a non-breaking space (`&nbsp;`) to prevent a single word from wrapping onto its own line (a “widow”). Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags (`{{ }} ` and `{% %}`).\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable widow word prevention.\n",
                                  "default": false
                                }
                              }
                            },
                            "encode_entities": {
                              "type": "object",
                              "description": "Encodes special characters (for example, `©`, `™`, and `—`) as their HTML entity equivalents. Improves rendering consistency across email clients with varying character encoding support. Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags and avoids double-encoding existing entities.\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable HTML entity encoding.\n",
                                  "default": false
                                }
                              }
                            },
                            "remove_unused_css": {
                              "type": "object",
                              "description": "Scans the HTML and removes any CSS selectors from `<style>` tags that are not referenced in the document. Reduces file size and helps avoid Gmail’s 102 KB clipping limit. HTML and CSS comments are always preserved by this step (comment removal is handled separately by the formatter object).\n",
                              "properties": {
                                "enabled": {
                                  "type": "boolean",
                                  "description": "Enable unused CSS removal.\n",
                                  "default": false
                                },
                                "whitelist": {
                                  "type": "array",
                                  "description": "CSS selectors to always keep, even if they are not found in the HTML.\n  - .ReadMsgBody\n  - .ExternalClass\n  - .aBn\n  - .a6S\n  - .im\n  - .yshortcuts\n  - \"#outlook\"\n  - .MsoHyperlink\n  - .MsoHyperlinkFollowed                \n",
                                  "items": {
                                    "type": "string",
                                    "description": "A CSS selector to always keep.\n"
                                  }
                                },
                                "backend_markers": {
                                  "type": "array",
                                  "description": "Template syntax delimiters (e.g., Liquid, Handlebars) that the CSS parser should skip over to avoid treating template expressions as invalid CSS.\n",
                                  "default": [
                                    {
                                      "heads": "",
                                      "tails": ""
                                    },
                                    {
                                      "heads": "{%",
                                      "tails": "%}"
                                    }
                                  ],
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "heads": {
                                        "type": "string",
                                        "description": "Opening delimiter.\n"
                                      },
                                      "tails": {
                                        "type": "string",
                                        "description": "Closing delimiter.\n"
                                      }
                                    }
                                  }
                                },
                                "uglify": {
                                  "type": "boolean",
                                  "description": "Shorten (uglify) CSS class names to reduce file size.\n",
                                  "default": false
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url https://api.customer.io/v1/design_studio/emails/{id}/languages/{language}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Update an email translation",
        "description": "Update the content, envelope, or transformers for a specific email translation. Note, this does not publish your email; if the email is connected to a workflow like a campaign, you still need to click publish to make the changes live.\n",
        "operationId": "updateEmailTranslation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "language",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "A [language code](/journeys/localization-attribute/#supported-languages) that indicates the language of your translated email"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "You must provide a body with at least one of the following properties. Omitting a field leaves it unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "content": {
                    "type": "object",
                    "description": "The content of your email.",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Email subject line."
                      },
                      "preheader_text": {
                        "type": "string",
                        "description": "Preview text."
                      },
                      "html": {
                        "type": "string",
                        "description": "HTML body."
                      },
                      "amp": {
                        "type": "string",
                        "description": "AMP HTML body."
                      },
                      "text": {
                        "type": "string",
                        "description": "Plain text body."
                      }
                    }
                  },
                  "envelope": {
                    "type": "object",
                    "description": "The envelope of your email, like from and to addresses.",
                    "properties": {
                      "from_id": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Sender identity ID. Must reference an existing identity. You can find this in *Workspace Settings > Email* under your From Addresses.\n"
                      },
                      "reply_to_id": {
                        "type": "integer",
                        "format": "int64",
                        "nullable": true,
                        "description": "Reply-to identity ID. Must reference an existing identity from *Workspace Settings > Email* under your From Addresses.\n"
                      },
                      "recipient": {
                        "type": "string",
                        "description": "Recipient email address. Defaults to `{{customer.email}}`` if not set.\n"
                      },
                      "bcc": {
                        "type": "string",
                        "description": "BCC email address."
                      },
                      "fake_bcc": {
                        "type": "boolean",
                        "description": "Whether to use fake BCC. Defaults to true if not provided."
                      },
                      "headers": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          }
                        },
                        "description": "Custom headers. Each item: { \"name\": \"string\", \"value\": \"string\" }.\n"
                      }
                    }
                  },
                  "transformers": {
                    "type": "object",
                    "description": "Automate repetitive actions like removing white space and inlining CSS with [transformers](/journeys/code-editor-overview/#transformers).",
                    "properties": {
                      "url_parameters": {
                        "type": "object",
                        "description": "Appends query string parameters to all absolute URLs in `<a>` and VML elements. Useful for adding UTM tracking or other analytics parameters. Skips `mailto:`, `tel:`, and `sms:` links. Elements marked with `data-ignore-params` are excluded.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable URL parameter injection.\n",
                            "default": false
                          },
                          "parameters": {
                            "type": "array",
                            "description": "List of parameters to append to URLs.\n",
                            "default": [],
                            "items": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Parameter name.\n"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Parameter value. May contain template variables.\n"
                                },
                                "url_encode": {
                                  "type": "boolean",
                                  "description": "URL-encode the value before appending it to the URL.\n"
                                }
                              }
                            }
                          }
                        }
                      },
                      "css_variables": {
                        "type": "object",
                        "description": "Resolves CSS custom properties (`var(--name)`) into their computed values. Required for email clients that do not support CSS custom properties (most email clients). Variables declared in one `<style>` tag are available in subsequent `<style>` tags.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable CSS variable resolution.\n",
                            "default": false
                          },
                          "preserve": {
                            "type": "boolean",
                            "description": "Keep original custom property declarations (`--name: value`) alongside the resolved values.\n",
                            "default": false
                          }
                        }
                      },
                      "css_inliner": {
                        "type": "object",
                        "description": "Moves CSS from `<style>` tags into inline `style` attributes on each element. Essential for email clients with limited `<style>` support (for example, older Gmail and some Outlook versions). Uses the `juice` library. Elements in `<style>` tags marked with `data-ignore-inlining` are skipped.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable CSS inlining.\n",
                            "default": false
                          },
                          "apply_style_tags": {
                            "type": "boolean",
                            "description": "Inline styles from `<style>` tags.\n",
                            "default": true
                          },
                          "preserve_important": {
                            "type": "boolean",
                            "description": "Preserve `!important` declarations in inlined styles.\n",
                            "default": false
                          },
                          "remove_style_tags": {
                            "type": "boolean",
                            "description": "Remove `<style>` tags after inlining their rules.\n",
                            "default": true
                          },
                          "preserve_font_faces": {
                            "type": "boolean",
                            "description": "Keep `@font-face` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_media_queries": {
                            "type": "boolean",
                            "description": "Keep `@media` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_keyframes": {
                            "type": "boolean",
                            "description": "Keep `@keyframes` rules in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "preserve_pseudos": {
                            "type": "boolean",
                            "description": "Keep pseudo-selector rules (for example, `:hover`) in `<style>` (cannot be inlined).\n",
                            "default": true
                          },
                          "inline_pseudo_elements": {
                            "type": "boolean",
                            "description": "Attempt to inline pseudo-element (`::before`, `::after`) styles.\n",
                            "default": false
                          },
                          "apply_html_attributes": {
                            "type": "object",
                            "description": "Controls adding redundant HTML attributes alongside inlined CSS to different HTML elements.\n",
                            "properties": {
                              "enabled": {
                                "type": "boolean",
                                "description": "Enable adding redundant HTML attributes.\n",
                                "default": true
                              },
                              "apply_width_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML `width` attributes alongside inlined CSS `width` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS width (for example, older Outlook).\n",
                                "default": true
                              },
                              "apply_height_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML `height` attributes alongside inlined CSS `height` on `<table>`, `<td>`, `<th>`, and `<img>` elements. Only applies to `px` values (and `%` on table elements). Needed for email clients that ignore CSS height.\n",
                                "default": true
                              },
                              "apply_table_element_attributes": {
                                "type": "boolean",
                                "description": "Add redundant HTML attributes on table elements (`<table>`, `<th>`, `<tr>`, `<td>`, `<caption>`, `<colgroup>`, `<col>`, `<thead>`, `<tbody>`, `<tfoot>`): `background-color` → `bgcolor`, `background-image` → `background`, `text-align` → `align`, `vertical-align` → `valign`.\n",
                                "default": true
                              }
                            }
                          }
                        }
                      },
                      "accessibility": {
                        "type": "object",
                        "description": "Applies a set of accessibility improvements to the email HTML. When no `language` is set, this falls back to the `lang` attribute on the `<html>` tag, or `\"und\"` (undetermined). The `dir` attribute is automatically derived from the language using RTL detection.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable accessibility fixes.\n",
                            "default": false
                          },
                          "language": {
                            "type": "string",
                            "description": "Language code (for example, `\"en\"`, `\"fr\"`, or `\"ar\"`) used for `lang` and `dir` attributes.\n",
                            "default": ""
                          },
                          "add_lang_to_html": {
                            "type": "boolean",
                            "description": "Add `lang` attribute to the `<html>` element if not already present.\n",
                            "default": true
                          },
                          "add_dir_to_html": {
                            "type": "boolean",
                            "description": "Add `dir` attribute (`ltr`, `rtl`, or `auto`) to the `<html>` element if not already present.\n",
                            "default": true
                          },
                          "add_lang_to_content": {
                            "type": "boolean",
                            "description": "Add `lang` attribute to direct children of `<body>`.\n",
                            "default": true
                          },
                          "add_dir_to_content": {
                            "type": "boolean",
                            "description": "Add `dir` attribute to direct children of `<body>`.\n",
                            "default": true
                          },
                          "add_role_to_tables": {
                            "type": "boolean",
                            "description": "Add `role=\"presentation\"` to all `<table>` elements without an existing `role`, so screen readers skip table semantics for layout tables.\n",
                            "default": true
                          },
                          "add_vml_alt_text": {
                            "type": "boolean",
                            "description": "Add `alt` attribute to VML elements (used by Outlook’s Word rendering engine), derived from the element’s text content.\n",
                            "default": true
                          },
                          "add_empty_alt_to_images": {
                            "type": "boolean",
                            "description": "Add `alt=\"\"` to `<img>` elements missing an `alt` attribute, preventing screen readers from reading the file name.\n",
                            "default": true
                          },
                          "add_title_to_head": {
                            "type": "boolean",
                            "description": "Add a `<title>` tag to `<head>` using the email subject line (creates or replaces if empty).\n",
                            "default": true
                          },
                          "remove_button_role_from_links": {
                            "type": "boolean",
                            "description": "Remove `role=\"button\"` from `<a>` tags to restore proper link semantics for screen readers.\n",
                            "default": true
                          },
                          "remove_zoom_meta_tag": {
                            "type": "boolean",
                            "description": "Remove viewport `<meta>` tags that restrict zoom (`user-scalable=0`, `user-scalable=no`, `maximum-scale=1`, or `maximum-scale=2`).\n",
                            "default": true
                          }
                        }
                      },
                      "formatter": {
                        "type": "object",
                        "description": "Controls the output formatting of the final HTML. Only one mode (`prettify` or `minify`) can be active at a time. Set to `\"none\"` to skip formatting entirely.\n",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Formatting mode to apply.\n",
                            "enum": [
                              "none",
                              "prettify",
                              "minify"
                            ],
                            "default": "none"
                          },
                          "prettify": {
                            "type": "object",
                            "description": "Options used when `type` is `\"prettify\"`. Produces human-readable, indented HTML output.\n",
                            "properties": {
                              "indent_character": {
                                "type": "string",
                                "description": "Character used for indentation.\n",
                                "enum": [
                                  "spaces",
                                  "tabs"
                                ],
                                "default": "spaces"
                              },
                              "indent_size": {
                                "type": "integer",
                                "description": "Number of indent characters per level.\n",
                                "default": 2
                              },
                              "wrap_attributes": {
                                "type": "boolean",
                                "description": "Wrap HTML attributes onto separate lines (`force-expand-multiline` mode).\n",
                                "default": false
                              }
                            }
                          },
                          "minify": {
                            "type": "object",
                            "description": "Options used when `type` is `\"minify\"`. Reduces file size by stripping whitespace and comments.\n",
                            "properties": {
                              "remove_line_breaks": {
                                "type": "boolean",
                                "description": "Remove all line breaks from the output.\n",
                                "default": false
                              },
                              "line_length_limit": {
                                "type": "integer",
                                "description": "Maximum characters per line before inserting a line break.\n",
                                "default": 500
                              },
                              "remove_indentations": {
                                "type": "boolean",
                                "description": "Remove leading whitespace indentation.\n",
                                "default": true
                              },
                              "remove_html_comments": {
                                "type": "string",
                                "description": "HTML comment removal level. `\"0\"` keeps all comments, `\"1\"` removes non-conditional comments (preserves MSO conditionals like `<!--[if mso]>`), and `\"2\"` removes all comments including conditional.\n",
                                "enum": [
                                  "0",
                                  "1",
                                  "2"
                                ],
                                "default": "0"
                              },
                              "remove_css_comments": {
                                "type": "boolean",
                                "description": "Remove CSS comments (`/* ... */`) from `<style>` blocks.\n",
                                "default": true
                              }
                            }
                          }
                        }
                      },
                      "prevent_widows": {
                        "type": "object",
                        "description": "Replaces the last space in text blocks with a non-breaking space (`&nbsp;`) to prevent a single word from wrapping onto its own line (a “widow”). Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags (`{{ }} ` and `{% %}`).\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable widow word prevention.\n",
                            "default": false
                          }
                        }
                      },
                      "encode_entities": {
                        "type": "object",
                        "description": "Encodes special characters (for example, `©`, `™`, and `—`) as their HTML entity equivalents. Improves rendering consistency across email clients with varying character encoding support. Only processes text nodes in the `<body>` and skips `<script>`, `<style>`, `<noscript>`, `<svg>`, and `<head>` elements. Preserves Liquid template tags and avoids double-encoding existing entities.\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable HTML entity encoding.\n",
                            "default": false
                          }
                        }
                      },
                      "remove_unused_css": {
                        "type": "object",
                        "description": "Scans the HTML and removes any CSS selectors from `<style>` tags that are not referenced in the document. Reduces file size and helps avoid Gmail’s 102 KB clipping limit. HTML and CSS comments are always preserved by this step (comment removal is handled separately by the formatter object).\n",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Enable unused CSS removal.\n",
                            "default": false
                          },
                          "whitelist": {
                            "type": "array",
                            "description": "CSS selectors to always keep, even if they are not found in the HTML.\n  - .ReadMsgBody\n  - .ExternalClass\n  - .aBn\n  - .a6S\n  - .im\n  - .yshortcuts\n  - \"#outlook\"\n  - .MsoHyperlink\n  - .MsoHyperlinkFollowed                \n",
                            "items": {
                              "type": "string",
                              "description": "A CSS selector to always keep.\n"
                            }
                          },
                          "backend_markers": {
                            "type": "array",
                            "description": "Template syntax delimiters (e.g., Liquid, Handlebars) that the CSS parser should skip over to avoid treating template expressions as invalid CSS.\n",
                            "default": [
                              {
                                "heads": "",
                                "tails": ""
                              },
                              {
                                "heads": "{%",
                                "tails": "%}"
                              }
                            ],
                            "items": {
                              "type": "object",
                              "properties": {
                                "heads": {
                                  "type": "string",
                                  "description": "Opening delimiter.\n"
                                },
                                "tails": {
                                  "type": "string",
                                  "description": "Closing delimiter.\n"
                                }
                              }
                            }
                          },
                          "uglify": {
                            "type": "boolean",
                            "description": "Shorten (uglify) CSS class names to reduce file size.\n",
                            "default": false
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Translation updated"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --url https://api.customer.io/v1/design_studio/emails/{id}/languages/{language} \\\n  --header 'content-type: application/json' \\\n  --data '{\"content\":{\"subject\":\"string\",\"preheader_text\":\"string\",\"html\":\"string\",\"amp\":\"string\",\"text\":\"string\"},\"envelope\":{\"from_id\":0,\"reply_to_id\":0,\"recipient\":\"string\",\"bcc\":\"string\",\"fake_bcc\":true,\"headers\":[{\"name\":\"string\",\"value\":\"string\"}]},\"transformers\":{\"url_parameters\":{\"enabled\":false,\"parameters\":[]},\"css_variables\":{\"enabled\":false,\"preserve\":false},\"css_inliner\":{\"enabled\":false,\"apply_style_tags\":true,\"preserve_important\":false,\"remove_style_tags\":true,\"preserve_font_faces\":true,\"preserve_media_queries\":true,\"preserve_keyframes\":true,\"preserve_pseudos\":true,\"inline_pseudo_elements\":false,\"apply_html_attributes\":{\"enabled\":true,\"apply_width_attributes\":true,\"apply_height_attributes\":true,\"apply_table_element_attributes\":true}},\"accessibility\":{\"enabled\":false,\"language\":\"\",\"add_lang_to_html\":true,\"add_dir_to_html\":true,\"add_lang_to_content\":true,\"add_dir_to_content\":true,\"add_role_to_tables\":true,\"add_vml_alt_text\":true,\"add_empty_alt_to_images\":true,\"add_title_to_head\":true,\"remove_button_role_from_links\":true,\"remove_zoom_meta_tag\":true},\"formatter\":{\"type\":\"none\",\"prettify\":{\"indent_character\":\"spaces\",\"indent_size\":2,\"wrap_attributes\":false},\"minify\":{\"remove_line_breaks\":false,\"line_length_limit\":500,\"remove_indentations\":true,\"remove_html_comments\":\"0\",\"remove_css_comments\":true}},\"prevent_widows\":{\"enabled\":false},\"encode_entities\":{\"enabled\":false},\"remove_unused_css\":{\"enabled\":false,\"whitelist\":[\"string\"],\"backend_markers\":[{\"heads\":\"\",\"tails\":\"\"},{\"heads\":\"{%\",\"tails\":\"%}\"}],\"uglify\":false}}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  content: {\n    subject: 'string',\n    preheader_text: 'string',\n    html: 'string',\n    amp: 'string',\n    text: 'string'\n  },\n  envelope: {\n    from_id: 0,\n    reply_to_id: 0,\n    recipient: 'string',\n    bcc: 'string',\n    fake_bcc: true,\n    headers: [{name: 'string', value: 'string'}]\n  },\n  transformers: {\n    url_parameters: {enabled: false, parameters: []},\n    css_variables: {enabled: false, preserve: false},\n    css_inliner: {\n      enabled: false,\n      apply_style_tags: true,\n      preserve_important: false,\n      remove_style_tags: true,\n      preserve_font_faces: true,\n      preserve_media_queries: true,\n      preserve_keyframes: true,\n      preserve_pseudos: true,\n      inline_pseudo_elements: false,\n      apply_html_attributes: {\n        enabled: true,\n        apply_width_attributes: true,\n        apply_height_attributes: true,\n        apply_table_element_attributes: true\n      }\n    },\n    accessibility: {\n      enabled: false,\n      language: '',\n      add_lang_to_html: true,\n      add_dir_to_html: true,\n      add_lang_to_content: true,\n      add_dir_to_content: true,\n      add_role_to_tables: true,\n      add_vml_alt_text: true,\n      add_empty_alt_to_images: true,\n      add_title_to_head: true,\n      remove_button_role_from_links: true,\n      remove_zoom_meta_tag: true\n    },\n    formatter: {\n      type: 'none',\n      prettify: {indent_character: 'spaces', indent_size: 2, wrap_attributes: false},\n      minify: {\n        remove_line_breaks: false,\n        line_length_limit: 500,\n        remove_indentations: true,\n        remove_html_comments: '0',\n        remove_css_comments: true\n      }\n    },\n    prevent_widows: {enabled: false},\n    encode_entities: {enabled: false},\n    remove_unused_css: {\n      enabled: false,\n      whitelist: ['string'],\n      backend_markers: [{heads: '', tails: ''}, {heads: '{%', tails: '%}'}],\n      uglify: false\n    }\n  }\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"content\\\":{\\\"subject\\\":\\\"string\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"html\\\":\\\"string\\\",\\\"amp\\\":\\\"string\\\",\\\"text\\\":\\\"string\\\"},\\\"envelope\\\":{\\\"from_id\\\":0,\\\"reply_to_id\\\":0,\\\"recipient\\\":\\\"string\\\",\\\"bcc\\\":\\\"string\\\",\\\"fake_bcc\\\":true,\\\"headers\\\":[{\\\"name\\\":\\\"string\\\",\\\"value\\\":\\\"string\\\"}]},\\\"transformers\\\":{\\\"url_parameters\\\":{\\\"enabled\\\":false,\\\"parameters\\\":[]},\\\"css_variables\\\":{\\\"enabled\\\":false,\\\"preserve\\\":false},\\\"css_inliner\\\":{\\\"enabled\\\":false,\\\"apply_style_tags\\\":true,\\\"preserve_important\\\":false,\\\"remove_style_tags\\\":true,\\\"preserve_font_faces\\\":true,\\\"preserve_media_queries\\\":true,\\\"preserve_keyframes\\\":true,\\\"preserve_pseudos\\\":true,\\\"inline_pseudo_elements\\\":false,\\\"apply_html_attributes\\\":{\\\"enabled\\\":true,\\\"apply_width_attributes\\\":true,\\\"apply_height_attributes\\\":true,\\\"apply_table_element_attributes\\\":true}},\\\"accessibility\\\":{\\\"enabled\\\":false,\\\"language\\\":\\\"\\\",\\\"add_lang_to_html\\\":true,\\\"add_dir_to_html\\\":true,\\\"add_lang_to_content\\\":true,\\\"add_dir_to_content\\\":true,\\\"add_role_to_tables\\\":true,\\\"add_vml_alt_text\\\":true,\\\"add_empty_alt_to_images\\\":true,\\\"add_title_to_head\\\":true,\\\"remove_button_role_from_links\\\":true,\\\"remove_zoom_meta_tag\\\":true},\\\"formatter\\\":{\\\"type\\\":\\\"none\\\",\\\"prettify\\\":{\\\"indent_character\\\":\\\"spaces\\\",\\\"indent_size\\\":2,\\\"wrap_attributes\\\":false},\\\"minify\\\":{\\\"remove_line_breaks\\\":false,\\\"line_length_limit\\\":500,\\\"remove_indentations\\\":true,\\\"remove_html_comments\\\":\\\"0\\\",\\\"remove_css_comments\\\":true}},\\\"prevent_widows\\\":{\\\"enabled\\\":false},\\\"encode_entities\\\":{\\\"enabled\\\":false},\\\"remove_unused_css\\\":{\\\"enabled\\\":false,\\\"whitelist\\\":[\\\"string\\\"],\\\"backend_markers\\\":[{\\\"heads\\\":\\\"\\\",\\\"tails\\\":\\\"\\\"},{\\\"heads\\\":\\\"{%\\\",\\\"tails\\\":\\\"%}\\\"}],\\\"uglify\\\":false}}}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "delete": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Delete an email translation",
        "description": "Delete a specific language translation from an email. This fails if the email is linked to a workflow (campaign, broadcast, etc).\n",
        "operationId": "deleteEmailTranslation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the email.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "language",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "A [language code](/journeys/localization-attribute/#supported-languages) that indicates the language of your translated email"
          }
        ],
        "responses": {
          "204": {
            "description": "Translation deleted"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --url https://api.customer.io/v1/design_studio/emails/{id}/languages/{language}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/emails/%7Bid%7D/languages/%7Blanguage%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/design_studio/components": {
      "get": {
        "tags": [
          "Design Studio"
        ],
        "summary": "List components",
        "description": "Returns a paginated list of components and any folders in the result set.",
        "operationId": "listComponents",
        "parameters": [
          {
            "name": "tag",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Filter by component tag name. This is the name of the tag inserted into your emails."
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page number of results you want to display. Use with `limit`.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the number of results per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 1000
            }
          },
          {
            "name": "parent_folder_id",
            "in": "query",
            "description": "Filter by parent folder. Must reference an existing folder.",
            "schema": {
              "type": "string",
              "minimum": 0,
              "format": "uuid"
            }
          },
          {
            "name": "direct_descendants_only",
            "in": "query",
            "description": "If true, this returns only children of the parent folder.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "created",
                "updated",
                "name"
              ],
              "default": "created"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "asc"
            }
          },
          {
            "name": "created_before",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records created before this time."
          },
          {
            "name": "created_after",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records created after this time."
          },
          {
            "name": "updated_before",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records updated before this time."
          },
          {
            "name": "updated_after",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "Unix timestamp"
            },
            "description": "Return records updated after this time."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "components": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "ID of the component"
                          },
                          "name": {
                            "type": "string",
                            "description": "Display name of the component. You see this on your Design Studio dashboard. This may be different from the component tag name."
                          },
                          "tag": {
                            "type": "string",
                            "description": "The component tag name, used to reference your component in an email."
                          },
                          "parent_folder_id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "ID of the parent folder, or `null` if the component is in your root directory.",
                            "nullable": true
                          },
                          "created": {
                            "type": "integer",
                            "format": "int64",
                            "description": "Unix timestamp of when the component was created."
                          },
                          "updated": {
                            "type": "integer",
                            "format": "int64",
                            "description": "Unix timestamp of the last update to the component."
                          }
                        }
                      }
                    },
                    "folders": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID of folder",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the folder."
                          },
                          "parent_folder_id": {
                            "type": "string",
                            "nullable": true,
                            "description": "The ID of the parent folder. Returns `null` if there is no parent, which means the folder is in the root directory.",
                            "format": "uuid"
                          },
                          "created": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "Timestamp of when the folder was created."
                          },
                          "updated": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "Timestamp of last update to the folder."
                          }
                        },
                        "example": {
                          "id": "123e4567-e89b-12d3-a456-426614174000",
                          "name": "Product Announcements",
                          "parent_folder_id": null,
                          "created": 1714732800,
                          "updated": 1714732800
                        }
                      }
                    },
                    "meta": {
                      "type": "object",
                      "description": "Metadata about the paginated response including pagination details and applied filters.",
                      "properties": {
                        "pagination": {
                          "type": "object",
                          "description": "Pagination details for the current result set.",
                          "properties": {
                            "page": {
                              "type": "integer",
                              "description": "The page number of results you're on."
                            },
                            "limit": {
                              "type": "integer",
                              "description": "The number of results per page."
                            },
                            "total": {
                              "type": "integer",
                              "description": "The total number of folders."
                            }
                          }
                        },
                        "filters": {
                          "type": "object",
                          "description": "The filters applied in your request.",
                          "properties": {
                            "parent_folder_id": {
                              "type": "string",
                              "nullable": true,
                              "description": "The parent folder ID filter that was applied, or null if not filtering by parent."
                            },
                            "direct_descendants_only": {
                              "type": "boolean",
                              "description": "Whether the results were limited to direct descendants only."
                            }
                          },
                          "example": {
                            "parent_folder_id": "123e4567-e89b-12d3-a456-426614174000",
                            "direct_descendants_only": true,
                            "sort_by": "created",
                            "sort_order": "desc",
                            "created_before": 1714732800,
                            "created_after": null,
                            "updated_before": null,
                            "updated_after": null
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url 'https://api.customer.io/v1/design_studio/components?tag=SOME_STRING_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/components?tag=SOME_STRING_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/components?tag=SOME_STRING_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/design_studio/components?tag=SOME_STRING_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/components?tag=SOME_STRING_VALUE&page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&parent_folder_id=SOME_STRING_VALUE&direct_descendants_only=SOME_BOOLEAN_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE&created_before=SOME_INTEGER_VALUE&created_after=SOME_INTEGER_VALUE&updated_before=SOME_INTEGER_VALUE&updated_after=SOME_INTEGER_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "post": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Create a component",
        "description": "Creates a custom component.",
        "operationId": "createComponent",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "tag",
                  "content"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Display name of the component. You see this on your Design Studio dashboard. This may be different from the component tag name.",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "tag": {
                    "type": "string",
                    "description": "The component tag name, used to reference your component in an email. [Learn what characters you can use](/journeys/code-custom-component/#component-tag-name-validation)."
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "UUID of the parent folder. Omit or pass `null` to create in the root directory.",
                    "nullable": true
                  },
                  "content": {
                    "type": "string",
                    "description": "HTML content"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Component created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "component": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "ID of the component"
                        },
                        "name": {
                          "type": "string",
                          "description": "Display name of the component. You see this on your Design Studio dashboard. This may be different from the component tag name."
                        },
                        "tag": {
                          "type": "string",
                          "description": "The component tag name, used to reference your component in an email."
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "format": "uuid",
                          "nullable": true,
                          "description": "ID of the parent folder, or `null` if the component is in your root directory."
                        },
                        "created": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp of when the component was created."
                        },
                        "updated": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp of the last update to the component."
                        },
                        "content": {
                          "type": "string",
                          "description": "HTML content"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Possible reasons:\n  - Missing or invalid name\n  - Missing or invalid tag\n  - parent_folder_id is an empty string\n  - Unknown JSON field in request body\n",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"string\",\n  \"tag\": \"string\",\n  \"content\": \"string\"\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --url https://api.customer.io/v1/design_studio/components \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"tag\":\"string\",\"parent_folder_id\":\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\",\"content\":\"string\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/components\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  name: 'string',\n  tag: 'string',\n  parent_folder_id: '26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec',\n  content: 'string'\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/components\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"tag\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":\\\"string\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"tag\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":\\\"string\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/design_studio/components\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/components\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"tag\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":\\\"string\\\"}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/design_studio/components/{id}": {
      "get": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Get a component",
        "description": "Returns a single component with its full content.",
        "operationId": "getComponent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the component.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "component": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "ID of the component"
                        },
                        "name": {
                          "type": "string",
                          "description": "Display name of the component. You see this on your Design Studio dashboard. This may be different from the component tag name."
                        },
                        "tag": {
                          "type": "string",
                          "description": "The component tag name, used to reference your component in an email."
                        },
                        "parent_folder_id": {
                          "type": "string",
                          "format": "uuid",
                          "nullable": true,
                          "description": "ID of the parent folder, or `null` if the component is in your root directory."
                        },
                        "created": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp of when the component was created."
                        },
                        "updated": {
                          "type": "integer",
                          "format": "int64",
                          "description": "Unix timestamp of the last update to the component."
                        },
                        "content": {
                          "type": "string",
                          "description": "HTML content"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url https://api.customer.io/v1/design_studio/components/{id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/components/%7Bid%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/components/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/design_studio/components/%7Bid%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/components/%7Bid%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Update a component",
        "description": "Update a component's name, tag, folder, or content.",
        "operationId": "updateComponent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the component.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "You must provide a body with at least one of the following properties. Omitting a field leaves it unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Display name of the component. You see this on your Design Studio dashboard. This may be different from the component tag name."
                  },
                  "tag": {
                    "type": "string",
                    "description": "The component tag name, used to reference your component in an email. Learn what [characters](/journeys/code-custom-component/#component-tag-name-validation) you can use."
                  },
                  "parent_folder_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "The UUID of the parent folder. \n\nOmit if you want no change to where the folder or file is located. Include `null` to move it to your root directory. Or add the UUID of another folder to move it there.\n",
                    "nullable": true
                  },
                  "content": {
                    "type": "string",
                    "description": "HTML content"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Component updated"
          },
          "400": {
            "description": "Bad request. Possible reasons:\n  - No fields provided\n  - Invalid name\n  - Invalid tag\n  - parent_folder_id is an empty string\n  - Unknown JSON field in request body\n",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Conflict - duplicate name, linked resource, or other constraint violation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "an entity with this name already exists in the specified folder",
                      "status": 409
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --url https://api.customer.io/v1/design_studio/components/{id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"tag\":\"string\",\"parent_folder_id\":\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\",\"content\":\"string\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/components/%7Bid%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  name: 'string',\n  tag: 'string',\n  parent_folder_id: '26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec',\n  content: 'string'\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/components/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"tag\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":\\\"string\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"tag\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":\\\"string\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/design_studio/components/%7Bid%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/components/%7Bid%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"tag\\\":\\\"string\\\",\\\"parent_folder_id\\\":\\\"26caaf35-00f1-4c8f-a2ac-cb04b9b9a6ec\\\",\\\"content\\\":\\\"string\\\"}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "delete": {
        "tags": [
          "Design Studio"
        ],
        "summary": "Delete a component",
        "description": "Delete a component. Note, this deletes any component. If you delete a component in use, the emails that reference it could fail to send.",
        "operationId": "deleteComponent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The UUID of the component.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Component deleted"
          },
          "401": {
            "description": "Unauthorized - missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "unauthorized",
                      "status": 401
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "An error response containing one or more error details.",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "A list of errors that occurred while processing the request.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Reason for error"
                          },
                          "status": {
                            "type": "integer",
                            "description": "Response code"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "errors": [
                    {
                      "detail": "resource not found",
                      "status": 404
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --url https://api.customer.io/v1/design_studio/components/{id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/design_studio/components/%7Bid%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/design_studio/components/%7Bid%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/design_studio/components/%7Bid%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/design_studio/components/%7Bid%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/esp/search_suppression/{email_address}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "email_address",
          "in": "path",
          "required": true,
          "description": "The email address of the person you want to look up.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Look up an ESP-suppressed address",
        "operationId": "getSuppression",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Look up an email address to learn if, and why, it was suppressed by the email service provider (ESP).",
        "tags": [
          "ESP Suppression"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of suppressed email addresses.",
            "content": {
              "application/json": {
                "schema": {
                  "x-scalar-ignore": true,
                  "type": "object",
                  "properties": {
                    "category": {
                      "type": "string",
                      "description": "The reason the addresses are suppressed.",
                      "enum": [
                        "bounces",
                        "spam"
                      ],
                      "example": "bounces"
                    },
                    "suppressions": {
                      "type": "array",
                      "description": "The addresses suppressed in this category.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "created": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "The timestamp (in seconds), when the ESP suppressed the address.",
                            "example": 1650895738
                          },
                          "email": {
                            "type": "string",
                            "description": "The email address that the ESP suppressed.",
                            "example": "bounced.person@example.com"
                          },
                          "reason": {
                            "type": "string",
                            "description": "The reason for the suppression, as [recorded by Mailgun](https://documentation.mailgun.com/en/latest/api-suppressions.html).",
                            "example": "Uploaded manually via api.customer.io"
                          },
                          "status": {
                            "type": "string",
                            "description": "The status code for the suppression, as [recorded by mailgun](https://documentation.mailgun.com/en/latest/api-suppressions.html). This is normally `550`.",
                            "example": "550"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/esp/search_suppression/{email_address}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/esp/search_suppression/%7Bemail_address%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/esp/search_suppression/%7Bemail_address%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/esp/search_suppression/%7Bemail_address%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/esp/search_suppression/%7Bemail_address%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/esp/suppression/{suppression_type}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "suppression_type",
          "description": "The reason a person's email address was suppressed by the email service provider (ESP).",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "enum": [
              "bounces",
              "spam_reports"
            ]
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer",
            "default": 100,
            "maximum": 1000
          }
        },
        {
          "name": "offset",
          "in": "query",
          "required": false,
          "description": "The number of records to skip before retrieving results.",
          "schema": {
            "type": "integer",
            "default": 0
          }
        },
        {
          "name": "domain",
          "in": "query",
          "required": false,
          "description": "Filter by sending domain.",
          "schema": {
            "type": "string",
            "example": "mail.example.com"
          }
        }
      ],
      "get": {
        "summary": "Get ESP-suppressed emails by type",
        "operationId": "getSuppressionByType",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Find addresses suppressed by the Email Service Provider (ESP) for a particular reason—bounces, blocks, spam reports, or invalid email addresses.\n\nYou can get up to 1000 addresses per request. Use the `offset` parameter to get addresses beyond the first 1000.\n\nIf you have multiple sending domains, we recommend querying for each domain separately, as an email address may be suppressed on multiple domains.\n",
        "tags": [
          "ESP Suppression"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of suppressed email addresses.",
            "content": {
              "application/json": {
                "schema": {
                  "x-scalar-ignore": true,
                  "type": "object",
                  "properties": {
                    "category": {
                      "type": "string",
                      "description": "The reason the addresses are suppressed.",
                      "enum": [
                        "bounces",
                        "spam"
                      ],
                      "example": "bounces"
                    },
                    "suppressions": {
                      "type": "array",
                      "description": "The addresses suppressed in this category.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "created": {
                            "type": "integer",
                            "format": "Unix timestamp",
                            "description": "The timestamp (in seconds), when the ESP suppressed the address.",
                            "example": 1650895738
                          },
                          "email": {
                            "type": "string",
                            "description": "The email address that the ESP suppressed.",
                            "example": "bounced.person@example.com"
                          },
                          "reason": {
                            "type": "string",
                            "description": "The reason for the suppression, as [recorded by Mailgun](https://documentation.mailgun.com/en/latest/api-suppressions.html).",
                            "example": "Uploaded manually via api.customer.io"
                          },
                          "status": {
                            "type": "string",
                            "description": "The status code for the suppression, as [recorded by mailgun](https://documentation.mailgun.com/en/latest/api-suppressions.html). This is normally `550`.",
                            "example": "550"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/esp/suppression/{suppression_type}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/esp/suppression/%7Bsuppression_type%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/esp/suppression/%7Bsuppression_type%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/esp/suppression/%7Bsuppression_type%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/esp/suppression/%7Bsuppression_type%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/esp/suppression/{suppression_type}/{email_address}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "suppression_type",
          "description": "The reason a person's email address was suppressed by the email service provider (ESP).",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "enum": [
              "bounces",
              "spam_reports"
            ]
          }
        },
        {
          "name": "email_address",
          "in": "path",
          "required": true,
          "description": "The email address of the person you want to look up.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "summary": "Un-suppress an ESP-suppressed address",
        "operationId": "deleteSuppression",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Remove an address from the ESP's suppression list.",
        "tags": [
          "ESP Suppression"
        ],
        "responses": {
          "204": {
            "description": "A successful request produces no content."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/esp/suppression/{suppression_type}/{email_address}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/esp/suppression/%7Bsuppression_type%7D/%7Bemail_address%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/esp/suppression/%7Bsuppression_type%7D/%7Bemail_address%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/esp/suppression/%7Bsuppression_type%7D/%7Bemail_address%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/esp/suppression/%7Bsuppression_type%7D/%7Bemail_address%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "post": {
        "summary": "Suppress an email at the ESP",
        "operationId": "postSuppression",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Suppress an email address at the email service provider (ESP). Addresses suppressed this way are only suppressed through the ESP; these adresses are _not_ suppressed in Customer.io, so the person can remain in your workspace (though emails to the address would be blocked at the ESP).",
        "tags": [
          "ESP Suppression"
        ],
        "responses": {
          "200": {
            "description": "A successful request produces an empty response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/esp/suppression/{suppression_type}/{email_address}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/esp/suppression/%7Bsuppression_type%7D/%7Bemail_address%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/esp/suppression/%7Bsuppression_type%7D/%7Bemail_address%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"POST\", \"/v1/esp/suppression/%7Bsuppression_type%7D/%7Bemail_address%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/esp/suppression/%7Bsuppression_type%7D/%7Bemail_address%7D\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/exports": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "summary": "List exports",
        "operationId": "listExports",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return a list of your exports. Exports are point-in-time people or campaign metrics.",
        "tags": [
          "Exports"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of exports.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "exports": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "description": "Metadata about an export.",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for the export.",
                            "example": 110
                          },
                          "user_id": {
                            "type": "integer",
                            "description": "The user who created the export."
                          },
                          "user_email": {
                            "type": "string",
                            "description": "The email of the user who created the export."
                          },
                          "total": {
                            "type": "integer",
                            "description": "The number of entries in the export. Exports report 0 until done."
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "type": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The type of information contained in the export.",
                            "enum": [
                              "customers",
                              "deliveries"
                            ],
                            "example": "customers"
                          },
                          "failed": {
                            "x-scalar-ignore": true,
                            "type": "boolean",
                            "description": "If true, the export was unsuccessful.",
                            "example": false
                          },
                          "description": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A description of the export.",
                            "example": "Customers with segment filters—in Purchased Flowers"
                          },
                          "downloads": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "Counts the total number of times the export has been downloaded.",
                            "example": 2
                          },
                          "created_at": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated_at": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "done",
                              "pending",
                              "failed"
                            ],
                            "description": "The state of your export where `done` indicates an export that you can download, `pending`, indicates that your export is not ready to download, and `failed` indicates an export that has failed and will not be downloadable."
                          }
                        },
                        "example": {
                          "id": 110,
                          "user_id": 0,
                          "user_email": "person@email.com",
                          "total": 1234,
                          "deduplicate_id": "110:1530296738",
                          "type": "customers",
                          "failed": false,
                          "status": "done",
                          "description": "Customers with segment filters—in \\Purchased Flowers\\",
                          "downloads": 2,
                          "created_at": 1530296738,
                          "updated_at": 1530296738
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/exports"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/exports\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/exports\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/exports\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/exports\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/exports/{export_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "export_id",
          "in": "path",
          "required": true,
          "description": "The export_id you want to access.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "Get an export",
        "operationId": "getExport",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return information about a specific export.",
        "tags": [
          "Exports"
        ],
        "responses": {
          "200": {
            "description": "Returns an export.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "export": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "description": "Metadata about an export.",
                      "properties": {
                        "id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The identifier for the export.",
                          "example": 110
                        },
                        "user_id": {
                          "type": "integer",
                          "description": "The user who created the export."
                        },
                        "user_email": {
                          "type": "string",
                          "description": "The email of the user who created the export."
                        },
                        "total": {
                          "type": "integer",
                          "description": "The number of entries in the export. Exports report 0 until done."
                        },
                        "deduplicate_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "readOnly": true,
                          "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                          "example": "15:1492548073"
                        },
                        "type": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The type of information contained in the export.",
                          "enum": [
                            "customers",
                            "deliveries"
                          ],
                          "example": "customers"
                        },
                        "failed": {
                          "x-scalar-ignore": true,
                          "type": "boolean",
                          "description": "If true, the export was unsuccessful.",
                          "example": false
                        },
                        "description": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "A description of the export.",
                          "example": "Customers with segment filters—in Purchased Flowers"
                        },
                        "downloads": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "Counts the total number of times the export has been downloaded.",
                          "example": 2
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "done",
                            "pending",
                            "failed"
                          ],
                          "description": "The state of your export where `done` indicates an export that you can download, `pending`, indicates that your export is not ready to download, and `failed` indicates an export that has failed and will not be downloadable."
                        }
                      },
                      "example": {
                        "id": 110,
                        "user_id": 0,
                        "user_email": "person@email.com",
                        "total": 1234,
                        "deduplicate_id": "110:1530296738",
                        "type": "customers",
                        "failed": false,
                        "status": "done",
                        "description": "Customers with segment filters—in \\Purchased Flowers\\",
                        "downloads": 2,
                        "created_at": 1530296738,
                        "updated_at": 1530296738
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The export ID does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/exports/{export_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/exports/%7Bexport_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/exports/%7Bexport_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/exports/%7Bexport_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/exports/%7Bexport_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/exports/{export_id}/download": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "export_id",
          "in": "path",
          "required": true,
          "description": "The export_id you want to access.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "Download an export",
        "operationId": "downloadExport",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "This endpoint returns a signed link to download an export. The link expires after 15 minutes.",
        "tags": [
          "Exports"
        ],
        "responses": {
          "200": {
            "description": "Returns a link to an export.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "format": "url",
                      "description": "A link to download your export. Expires after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The export ID does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/exports/{export_id}/download"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/exports/%7Bexport_id%7D/download\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/exports/%7Bexport_id%7D/download\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/exports/%7Bexport_id%7D/download\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/exports/%7Bexport_id%7D/download\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/exports/customers": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "summary": "Export customer data",
        "operationId": "exportPeopleData",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Provide filters and attributes describing the customers you want to export. This endpoint returns export metadata; use the `/exports/{export_id}/endpoint` to download your export.",
        "tags": [
          "Exports"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "filters"
                ],
                "properties": {
                  "filters": {
                    "x-scalar-ignore": true,
                    "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",
                    "oneOf": [
                      {
                        "x-scalar-ignore": true,
                        "title": "and",
                        "type": "object",
                        "properties": {
                          "and": {
                            "type": "array",
                            "description": "Match *all* conditions to return results.",
                            "items": {
                              "type": "object",
                              "properties": {
                                "or": {
                                  "type": "array",
                                  "description": "Returns results matching *any* conditions.",
                                  "items": {
                                    "x-scalar-ignore": true,
                                    "anyOf": [
                                      {
                                        "title": "segment",
                                        "description": "Filter for people who belong to a segment.",
                                        "type": "object",
                                        "properties": {
                                          "segment": {
                                            "x-scalar-ignore": true,
                                            "title": "segment",
                                            "type": "object",
                                            "description": "Provide the `id` of a segment containing people you want to search for.",
                                            "properties": {
                                              "id": {
                                                "type": "integer",
                                                "description": "The ID of the segment you want to return people from.",
                                                "example": 4
                                              }
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "title": "audience",
                                        "type": "object",
                                        "description": "filter for people who have an attribute or an attribute value.",
                                        "properties": {
                                          "attribute": {
                                            "x-scalar-ignore": true,
                                            "title": "attribute",
                                            "description": "Filter your audience by attribute.",
                                            "type": "object",
                                            "required": [
                                              "field",
                                              "operator"
                                            ],
                                            "properties": {
                                              "field": {
                                                "type": "string",
                                                "description": "The name of the attribute you want to filter against.",
                                                "example": "first_name"
                                              },
                                              "operator": {
                                                "type": "string",
                                                "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                "enum": [
                                                  "eq",
                                                  "exists"
                                                ]
                                              },
                                              "value": {
                                                "type": "string",
                                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                              }
                                            },
                                            "example": {
                                              "field": "unsubscribed",
                                              "operator": "eq",
                                              "value": true
                                            }
                                          }
                                        }
                                      }
                                    ]
                                  }
                                },
                                "not": {
                                  "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                  "oneOf": [
                                    {
                                      "title": "and",
                                      "type": "object",
                                      "properties": {
                                        "and": {
                                          "type": "array",
                                          "description": "Match *all* conditions to return results.",
                                          "items": {
                                            "x-scalar-ignore": true,
                                            "anyOf": [
                                              {
                                                "title": "segment",
                                                "description": "Filter for people who belong to a segment.",
                                                "type": "object",
                                                "properties": {
                                                  "segment": {
                                                    "x-scalar-ignore": true,
                                                    "title": "segment",
                                                    "type": "object",
                                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                                    "properties": {
                                                      "id": {
                                                        "type": "integer",
                                                        "description": "The ID of the segment you want to return people from.",
                                                        "example": 4
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              {
                                                "title": "audience",
                                                "type": "object",
                                                "description": "filter for people who have an attribute or an attribute value.",
                                                "properties": {
                                                  "attribute": {
                                                    "x-scalar-ignore": true,
                                                    "title": "attribute",
                                                    "description": "Filter your audience by attribute.",
                                                    "type": "object",
                                                    "required": [
                                                      "field",
                                                      "operator"
                                                    ],
                                                    "properties": {
                                                      "field": {
                                                        "type": "string",
                                                        "description": "The name of the attribute you want to filter against.",
                                                        "example": "first_name"
                                                      },
                                                      "operator": {
                                                        "type": "string",
                                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                        "enum": [
                                                          "eq",
                                                          "exists"
                                                        ]
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                      }
                                                    },
                                                    "example": {
                                                      "field": "unsubscribed",
                                                      "operator": "eq",
                                                      "value": true
                                                    }
                                                  }
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "or",
                                      "type": "object",
                                      "properties": {
                                        "or": {
                                          "type": "array",
                                          "description": "Match *any* condition to return results.",
                                          "items": {
                                            "x-scalar-ignore": true,
                                            "anyOf": [
                                              {
                                                "title": "segment",
                                                "description": "Filter for people who belong to a segment.",
                                                "type": "object",
                                                "properties": {
                                                  "segment": {
                                                    "x-scalar-ignore": true,
                                                    "title": "segment",
                                                    "type": "object",
                                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                                    "properties": {
                                                      "id": {
                                                        "type": "integer",
                                                        "description": "The ID of the segment you want to return people from.",
                                                        "example": 4
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              {
                                                "title": "audience",
                                                "type": "object",
                                                "description": "filter for people who have an attribute or an attribute value.",
                                                "properties": {
                                                  "attribute": {
                                                    "x-scalar-ignore": true,
                                                    "title": "attribute",
                                                    "description": "Filter your audience by attribute.",
                                                    "type": "object",
                                                    "required": [
                                                      "field",
                                                      "operator"
                                                    ],
                                                    "properties": {
                                                      "field": {
                                                        "type": "string",
                                                        "description": "The name of the attribute you want to filter against.",
                                                        "example": "first_name"
                                                      },
                                                      "operator": {
                                                        "type": "string",
                                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                        "enum": [
                                                          "eq",
                                                          "exists"
                                                        ]
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                      }
                                                    },
                                                    "example": {
                                                      "field": "unsubscribed",
                                                      "operator": "eq",
                                                      "value": true
                                                    }
                                                  }
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "segment",
                                      "type": "object",
                                      "properties": {
                                        "segment": {
                                          "x-scalar-ignore": true,
                                          "title": "segment",
                                          "type": "object",
                                          "description": "Provide the `id` of a segment containing people you want to search for.",
                                          "properties": {
                                            "id": {
                                              "type": "integer",
                                              "description": "The ID of the segment you want to return people from.",
                                              "example": 4
                                            }
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "attribute",
                                      "type": "object",
                                      "properties": {
                                        "attribute": {
                                          "x-scalar-ignore": true,
                                          "title": "attribute",
                                          "description": "Filter your audience by attribute.",
                                          "type": "object",
                                          "required": [
                                            "field",
                                            "operator"
                                          ],
                                          "properties": {
                                            "field": {
                                              "type": "string",
                                              "description": "The name of the attribute you want to filter against.",
                                              "example": "first_name"
                                            },
                                            "operator": {
                                              "type": "string",
                                              "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                              "enum": [
                                                "eq",
                                                "exists"
                                              ]
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                            }
                                          },
                                          "example": {
                                            "field": "unsubscribed",
                                            "operator": "eq",
                                            "value": true
                                          }
                                        }
                                      }
                                    }
                                  ]
                                },
                                "segment": {
                                  "x-scalar-ignore": true,
                                  "title": "segment",
                                  "type": "object",
                                  "description": "Provide the `id` of a segment containing people you want to search for.",
                                  "properties": {
                                    "id": {
                                      "type": "integer",
                                      "description": "The ID of the segment you want to return people from.",
                                      "example": 4
                                    }
                                  }
                                },
                                "attribute": {
                                  "x-scalar-ignore": true,
                                  "title": "attribute",
                                  "description": "Filter your audience by attribute.",
                                  "type": "object",
                                  "required": [
                                    "field",
                                    "operator"
                                  ],
                                  "properties": {
                                    "field": {
                                      "type": "string",
                                      "description": "The name of the attribute you want to filter against.",
                                      "example": "first_name"
                                    },
                                    "operator": {
                                      "type": "string",
                                      "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                      "enum": [
                                        "eq",
                                        "exists"
                                      ]
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                    }
                                  },
                                  "example": {
                                    "field": "unsubscribed",
                                    "operator": "eq",
                                    "value": true
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "title": "or",
                        "type": "object",
                        "properties": {
                          "or": {
                            "type": "array",
                            "description": "Match *any* condition to return results.",
                            "items": {
                              "type": "object",
                              "properties": {
                                "and": {
                                  "type": "array",
                                  "description": "Returns results matching *all* conditions.",
                                  "items": {
                                    "x-scalar-ignore": true,
                                    "anyOf": [
                                      {
                                        "title": "segment",
                                        "description": "Filter for people who belong to a segment.",
                                        "type": "object",
                                        "properties": {
                                          "segment": {
                                            "x-scalar-ignore": true,
                                            "title": "segment",
                                            "type": "object",
                                            "description": "Provide the `id` of a segment containing people you want to search for.",
                                            "properties": {
                                              "id": {
                                                "type": "integer",
                                                "description": "The ID of the segment you want to return people from.",
                                                "example": 4
                                              }
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "title": "audience",
                                        "type": "object",
                                        "description": "filter for people who have an attribute or an attribute value.",
                                        "properties": {
                                          "attribute": {
                                            "x-scalar-ignore": true,
                                            "title": "attribute",
                                            "description": "Filter your audience by attribute.",
                                            "type": "object",
                                            "required": [
                                              "field",
                                              "operator"
                                            ],
                                            "properties": {
                                              "field": {
                                                "type": "string",
                                                "description": "The name of the attribute you want to filter against.",
                                                "example": "first_name"
                                              },
                                              "operator": {
                                                "type": "string",
                                                "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                "enum": [
                                                  "eq",
                                                  "exists"
                                                ]
                                              },
                                              "value": {
                                                "type": "string",
                                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                              }
                                            },
                                            "example": {
                                              "field": "unsubscribed",
                                              "operator": "eq",
                                              "value": true
                                            }
                                          }
                                        }
                                      }
                                    ]
                                  }
                                },
                                "not": {
                                  "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                  "oneOf": [
                                    {
                                      "title": "and",
                                      "type": "object",
                                      "properties": {
                                        "and": {
                                          "type": "array",
                                          "description": "Match *all* conditions to return results.",
                                          "items": {
                                            "x-scalar-ignore": true,
                                            "anyOf": [
                                              {
                                                "title": "segment",
                                                "description": "Filter for people who belong to a segment.",
                                                "type": "object",
                                                "properties": {
                                                  "segment": {
                                                    "x-scalar-ignore": true,
                                                    "title": "segment",
                                                    "type": "object",
                                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                                    "properties": {
                                                      "id": {
                                                        "type": "integer",
                                                        "description": "The ID of the segment you want to return people from.",
                                                        "example": 4
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              {
                                                "title": "audience",
                                                "type": "object",
                                                "description": "filter for people who have an attribute or an attribute value.",
                                                "properties": {
                                                  "attribute": {
                                                    "x-scalar-ignore": true,
                                                    "title": "attribute",
                                                    "description": "Filter your audience by attribute.",
                                                    "type": "object",
                                                    "required": [
                                                      "field",
                                                      "operator"
                                                    ],
                                                    "properties": {
                                                      "field": {
                                                        "type": "string",
                                                        "description": "The name of the attribute you want to filter against.",
                                                        "example": "first_name"
                                                      },
                                                      "operator": {
                                                        "type": "string",
                                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                        "enum": [
                                                          "eq",
                                                          "exists"
                                                        ]
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                      }
                                                    },
                                                    "example": {
                                                      "field": "unsubscribed",
                                                      "operator": "eq",
                                                      "value": true
                                                    }
                                                  }
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "or",
                                      "type": "object",
                                      "properties": {
                                        "or": {
                                          "type": "array",
                                          "description": "Match *any* condition to return results.",
                                          "items": {
                                            "x-scalar-ignore": true,
                                            "anyOf": [
                                              {
                                                "title": "segment",
                                                "description": "Filter for people who belong to a segment.",
                                                "type": "object",
                                                "properties": {
                                                  "segment": {
                                                    "x-scalar-ignore": true,
                                                    "title": "segment",
                                                    "type": "object",
                                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                                    "properties": {
                                                      "id": {
                                                        "type": "integer",
                                                        "description": "The ID of the segment you want to return people from.",
                                                        "example": 4
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              {
                                                "title": "audience",
                                                "type": "object",
                                                "description": "filter for people who have an attribute or an attribute value.",
                                                "properties": {
                                                  "attribute": {
                                                    "x-scalar-ignore": true,
                                                    "title": "attribute",
                                                    "description": "Filter your audience by attribute.",
                                                    "type": "object",
                                                    "required": [
                                                      "field",
                                                      "operator"
                                                    ],
                                                    "properties": {
                                                      "field": {
                                                        "type": "string",
                                                        "description": "The name of the attribute you want to filter against.",
                                                        "example": "first_name"
                                                      },
                                                      "operator": {
                                                        "type": "string",
                                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                        "enum": [
                                                          "eq",
                                                          "exists"
                                                        ]
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                      }
                                                    },
                                                    "example": {
                                                      "field": "unsubscribed",
                                                      "operator": "eq",
                                                      "value": true
                                                    }
                                                  }
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "segment",
                                      "type": "object",
                                      "properties": {
                                        "segment": {
                                          "x-scalar-ignore": true,
                                          "title": "segment",
                                          "type": "object",
                                          "description": "Provide the `id` of a segment containing people you want to search for.",
                                          "properties": {
                                            "id": {
                                              "type": "integer",
                                              "description": "The ID of the segment you want to return people from.",
                                              "example": 4
                                            }
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "attribute",
                                      "type": "object",
                                      "properties": {
                                        "attribute": {
                                          "x-scalar-ignore": true,
                                          "title": "attribute",
                                          "description": "Filter your audience by attribute.",
                                          "type": "object",
                                          "required": [
                                            "field",
                                            "operator"
                                          ],
                                          "properties": {
                                            "field": {
                                              "type": "string",
                                              "description": "The name of the attribute you want to filter against.",
                                              "example": "first_name"
                                            },
                                            "operator": {
                                              "type": "string",
                                              "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                              "enum": [
                                                "eq",
                                                "exists"
                                              ]
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                            }
                                          },
                                          "example": {
                                            "field": "unsubscribed",
                                            "operator": "eq",
                                            "value": true
                                          }
                                        }
                                      }
                                    }
                                  ]
                                },
                                "segment": {
                                  "x-scalar-ignore": true,
                                  "title": "segment",
                                  "type": "object",
                                  "description": "Provide the `id` of a segment containing people you want to search for.",
                                  "properties": {
                                    "id": {
                                      "type": "integer",
                                      "description": "The ID of the segment you want to return people from.",
                                      "example": 4
                                    }
                                  }
                                },
                                "attribute": {
                                  "x-scalar-ignore": true,
                                  "title": "attribute",
                                  "description": "Filter your audience by attribute.",
                                  "type": "object",
                                  "required": [
                                    "field",
                                    "operator"
                                  ],
                                  "properties": {
                                    "field": {
                                      "type": "string",
                                      "description": "The name of the attribute you want to filter against.",
                                      "example": "first_name"
                                    },
                                    "operator": {
                                      "type": "string",
                                      "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                      "enum": [
                                        "eq",
                                        "exists"
                                      ]
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                    }
                                  },
                                  "example": {
                                    "field": "unsubscribed",
                                    "operator": "eq",
                                    "value": true
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "title": "not",
                        "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                        "oneOf": [
                          {
                            "title": "and",
                            "type": "object",
                            "properties": {
                              "and": {
                                "type": "array",
                                "description": "Match *all* conditions to return results.",
                                "items": {
                                  "x-scalar-ignore": true,
                                  "title": "People Filter",
                                  "type": "object",
                                  "description": "When filtering for people, you can use `and` and `or` arrays to determine the logic for a group of filter conditions. `not` reverses the filter condition and matches when the condition is false. `segment` and `attribute` represent the individual conditions you can filter a group of people for.",
                                  "properties": {
                                    "and": {
                                      "type": "array",
                                      "description": "Returns results matching *all* conditions.",
                                      "items": {
                                        "x-scalar-ignore": true,
                                        "anyOf": [
                                          {
                                            "title": "segment",
                                            "description": "Filter for people who belong to a segment.",
                                            "type": "object",
                                            "properties": {
                                              "segment": {
                                                "x-scalar-ignore": true,
                                                "title": "segment",
                                                "type": "object",
                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                "properties": {
                                                  "id": {
                                                    "type": "integer",
                                                    "description": "The ID of the segment you want to return people from.",
                                                    "example": 4
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          {
                                            "title": "audience",
                                            "type": "object",
                                            "description": "filter for people who have an attribute or an attribute value.",
                                            "properties": {
                                              "attribute": {
                                                "x-scalar-ignore": true,
                                                "title": "attribute",
                                                "description": "Filter your audience by attribute.",
                                                "type": "object",
                                                "required": [
                                                  "field",
                                                  "operator"
                                                ],
                                                "properties": {
                                                  "field": {
                                                    "type": "string",
                                                    "description": "The name of the attribute you want to filter against.",
                                                    "example": "first_name"
                                                  },
                                                  "operator": {
                                                    "type": "string",
                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                    "enum": [
                                                      "eq",
                                                      "exists"
                                                    ]
                                                  },
                                                  "value": {
                                                    "type": "string",
                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                  }
                                                },
                                                "example": {
                                                  "field": "unsubscribed",
                                                  "operator": "eq",
                                                  "value": true
                                                }
                                              }
                                            }
                                          }
                                        ]
                                      }
                                    },
                                    "or": {
                                      "type": "array",
                                      "description": "Returns results matching *any* conditions.",
                                      "items": {
                                        "x-scalar-ignore": true,
                                        "anyOf": [
                                          {
                                            "title": "segment",
                                            "description": "Filter for people who belong to a segment.",
                                            "type": "object",
                                            "properties": {
                                              "segment": {
                                                "x-scalar-ignore": true,
                                                "title": "segment",
                                                "type": "object",
                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                "properties": {
                                                  "id": {
                                                    "type": "integer",
                                                    "description": "The ID of the segment you want to return people from.",
                                                    "example": 4
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          {
                                            "title": "audience",
                                            "type": "object",
                                            "description": "filter for people who have an attribute or an attribute value.",
                                            "properties": {
                                              "attribute": {
                                                "x-scalar-ignore": true,
                                                "title": "attribute",
                                                "description": "Filter your audience by attribute.",
                                                "type": "object",
                                                "required": [
                                                  "field",
                                                  "operator"
                                                ],
                                                "properties": {
                                                  "field": {
                                                    "type": "string",
                                                    "description": "The name of the attribute you want to filter against.",
                                                    "example": "first_name"
                                                  },
                                                  "operator": {
                                                    "type": "string",
                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                    "enum": [
                                                      "eq",
                                                      "exists"
                                                    ]
                                                  },
                                                  "value": {
                                                    "type": "string",
                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                  }
                                                },
                                                "example": {
                                                  "field": "unsubscribed",
                                                  "operator": "eq",
                                                  "value": true
                                                }
                                              }
                                            }
                                          }
                                        ]
                                      }
                                    },
                                    "not": {
                                      "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                      "oneOf": [
                                        {
                                          "title": "and",
                                          "type": "object",
                                          "properties": {
                                            "and": {
                                              "type": "array",
                                              "description": "Match *all* conditions to return results.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "or",
                                          "type": "object",
                                          "properties": {
                                            "or": {
                                              "type": "array",
                                              "description": "Match *any* condition to return results.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "segment",
                                          "type": "object",
                                          "properties": {
                                            "segment": {
                                              "x-scalar-ignore": true,
                                              "title": "segment",
                                              "type": "object",
                                              "description": "Provide the `id` of a segment containing people you want to search for.",
                                              "properties": {
                                                "id": {
                                                  "type": "integer",
                                                  "description": "The ID of the segment you want to return people from.",
                                                  "example": 4
                                                }
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "attribute",
                                          "type": "object",
                                          "properties": {
                                            "attribute": {
                                              "x-scalar-ignore": true,
                                              "title": "attribute",
                                              "description": "Filter your audience by attribute.",
                                              "type": "object",
                                              "required": [
                                                "field",
                                                "operator"
                                              ],
                                              "properties": {
                                                "field": {
                                                  "type": "string",
                                                  "description": "The name of the attribute you want to filter against.",
                                                  "example": "first_name"
                                                },
                                                "operator": {
                                                  "type": "string",
                                                  "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                  "enum": [
                                                    "eq",
                                                    "exists"
                                                  ]
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                }
                                              },
                                              "example": {
                                                "field": "unsubscribed",
                                                "operator": "eq",
                                                "value": true
                                              }
                                            }
                                          }
                                        }
                                      ]
                                    },
                                    "segment": {
                                      "x-scalar-ignore": true,
                                      "title": "segment",
                                      "type": "object",
                                      "description": "Provide the `id` of a segment containing people you want to search for.",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "description": "The ID of the segment you want to return people from.",
                                          "example": 4
                                        }
                                      }
                                    },
                                    "attribute": {
                                      "x-scalar-ignore": true,
                                      "title": "attribute",
                                      "description": "Filter your audience by attribute.",
                                      "type": "object",
                                      "required": [
                                        "field",
                                        "operator"
                                      ],
                                      "properties": {
                                        "field": {
                                          "type": "string",
                                          "description": "The name of the attribute you want to filter against.",
                                          "example": "first_name"
                                        },
                                        "operator": {
                                          "type": "string",
                                          "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                          "enum": [
                                            "eq",
                                            "exists"
                                          ]
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                        }
                                      },
                                      "example": {
                                        "field": "unsubscribed",
                                        "operator": "eq",
                                        "value": true
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          {
                            "title": "or",
                            "type": "object",
                            "properties": {
                              "or": {
                                "type": "array",
                                "description": "Match *any* condition to return results.",
                                "items": {
                                  "x-scalar-ignore": true,
                                  "title": "People Filter",
                                  "type": "object",
                                  "description": "When filtering for people, you can use `and` and `or` arrays to determine the logic for a group of filter conditions. `not` reverses the filter condition and matches when the condition is false. `segment` and `attribute` represent the individual conditions you can filter a group of people for.",
                                  "properties": {
                                    "and": {
                                      "type": "array",
                                      "description": "Returns results matching *all* conditions.",
                                      "items": {
                                        "x-scalar-ignore": true,
                                        "anyOf": [
                                          {
                                            "title": "segment",
                                            "description": "Filter for people who belong to a segment.",
                                            "type": "object",
                                            "properties": {
                                              "segment": {
                                                "x-scalar-ignore": true,
                                                "title": "segment",
                                                "type": "object",
                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                "properties": {
                                                  "id": {
                                                    "type": "integer",
                                                    "description": "The ID of the segment you want to return people from.",
                                                    "example": 4
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          {
                                            "title": "audience",
                                            "type": "object",
                                            "description": "filter for people who have an attribute or an attribute value.",
                                            "properties": {
                                              "attribute": {
                                                "x-scalar-ignore": true,
                                                "title": "attribute",
                                                "description": "Filter your audience by attribute.",
                                                "type": "object",
                                                "required": [
                                                  "field",
                                                  "operator"
                                                ],
                                                "properties": {
                                                  "field": {
                                                    "type": "string",
                                                    "description": "The name of the attribute you want to filter against.",
                                                    "example": "first_name"
                                                  },
                                                  "operator": {
                                                    "type": "string",
                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                    "enum": [
                                                      "eq",
                                                      "exists"
                                                    ]
                                                  },
                                                  "value": {
                                                    "type": "string",
                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                  }
                                                },
                                                "example": {
                                                  "field": "unsubscribed",
                                                  "operator": "eq",
                                                  "value": true
                                                }
                                              }
                                            }
                                          }
                                        ]
                                      }
                                    },
                                    "or": {
                                      "type": "array",
                                      "description": "Returns results matching *any* conditions.",
                                      "items": {
                                        "x-scalar-ignore": true,
                                        "anyOf": [
                                          {
                                            "title": "segment",
                                            "description": "Filter for people who belong to a segment.",
                                            "type": "object",
                                            "properties": {
                                              "segment": {
                                                "x-scalar-ignore": true,
                                                "title": "segment",
                                                "type": "object",
                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                "properties": {
                                                  "id": {
                                                    "type": "integer",
                                                    "description": "The ID of the segment you want to return people from.",
                                                    "example": 4
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          {
                                            "title": "audience",
                                            "type": "object",
                                            "description": "filter for people who have an attribute or an attribute value.",
                                            "properties": {
                                              "attribute": {
                                                "x-scalar-ignore": true,
                                                "title": "attribute",
                                                "description": "Filter your audience by attribute.",
                                                "type": "object",
                                                "required": [
                                                  "field",
                                                  "operator"
                                                ],
                                                "properties": {
                                                  "field": {
                                                    "type": "string",
                                                    "description": "The name of the attribute you want to filter against.",
                                                    "example": "first_name"
                                                  },
                                                  "operator": {
                                                    "type": "string",
                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                    "enum": [
                                                      "eq",
                                                      "exists"
                                                    ]
                                                  },
                                                  "value": {
                                                    "type": "string",
                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                  }
                                                },
                                                "example": {
                                                  "field": "unsubscribed",
                                                  "operator": "eq",
                                                  "value": true
                                                }
                                              }
                                            }
                                          }
                                        ]
                                      }
                                    },
                                    "not": {
                                      "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                      "oneOf": [
                                        {
                                          "title": "and",
                                          "type": "object",
                                          "properties": {
                                            "and": {
                                              "type": "array",
                                              "description": "Match *all* conditions to return results.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "or",
                                          "type": "object",
                                          "properties": {
                                            "or": {
                                              "type": "array",
                                              "description": "Match *any* condition to return results.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "segment",
                                          "type": "object",
                                          "properties": {
                                            "segment": {
                                              "x-scalar-ignore": true,
                                              "title": "segment",
                                              "type": "object",
                                              "description": "Provide the `id` of a segment containing people you want to search for.",
                                              "properties": {
                                                "id": {
                                                  "type": "integer",
                                                  "description": "The ID of the segment you want to return people from.",
                                                  "example": 4
                                                }
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "attribute",
                                          "type": "object",
                                          "properties": {
                                            "attribute": {
                                              "x-scalar-ignore": true,
                                              "title": "attribute",
                                              "description": "Filter your audience by attribute.",
                                              "type": "object",
                                              "required": [
                                                "field",
                                                "operator"
                                              ],
                                              "properties": {
                                                "field": {
                                                  "type": "string",
                                                  "description": "The name of the attribute you want to filter against.",
                                                  "example": "first_name"
                                                },
                                                "operator": {
                                                  "type": "string",
                                                  "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                  "enum": [
                                                    "eq",
                                                    "exists"
                                                  ]
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                }
                                              },
                                              "example": {
                                                "field": "unsubscribed",
                                                "operator": "eq",
                                                "value": true
                                              }
                                            }
                                          }
                                        }
                                      ]
                                    },
                                    "segment": {
                                      "x-scalar-ignore": true,
                                      "title": "segment",
                                      "type": "object",
                                      "description": "Provide the `id` of a segment containing people you want to search for.",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "description": "The ID of the segment you want to return people from.",
                                          "example": 4
                                        }
                                      }
                                    },
                                    "attribute": {
                                      "x-scalar-ignore": true,
                                      "title": "attribute",
                                      "description": "Filter your audience by attribute.",
                                      "type": "object",
                                      "required": [
                                        "field",
                                        "operator"
                                      ],
                                      "properties": {
                                        "field": {
                                          "type": "string",
                                          "description": "The name of the attribute you want to filter against.",
                                          "example": "first_name"
                                        },
                                        "operator": {
                                          "type": "string",
                                          "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                          "enum": [
                                            "eq",
                                            "exists"
                                          ]
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                        }
                                      },
                                      "example": {
                                        "field": "unsubscribed",
                                        "operator": "eq",
                                        "value": true
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          {
                            "title": "segment",
                            "type": "object",
                            "properties": {
                              "segment": {
                                "x-scalar-ignore": true,
                                "title": "segment",
                                "type": "object",
                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                "properties": {
                                  "id": {
                                    "type": "integer",
                                    "description": "The ID of the segment you want to return people from.",
                                    "example": 4
                                  }
                                }
                              }
                            }
                          },
                          {
                            "title": "attribute",
                            "type": "object",
                            "properties": {
                              "attribute": {
                                "x-scalar-ignore": true,
                                "title": "attribute",
                                "description": "Filter your audience by attribute.",
                                "type": "object",
                                "required": [
                                  "field",
                                  "operator"
                                ],
                                "properties": {
                                  "field": {
                                    "type": "string",
                                    "description": "The name of the attribute you want to filter against.",
                                    "example": "first_name"
                                  },
                                  "operator": {
                                    "type": "string",
                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                    "enum": [
                                      "eq",
                                      "exists"
                                    ]
                                  },
                                  "value": {
                                    "type": "string",
                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                  }
                                },
                                "example": {
                                  "field": "unsubscribed",
                                  "operator": "eq",
                                  "value": true
                                }
                              }
                            }
                          }
                        ]
                      },
                      {
                        "title": "segment",
                        "description": "Filter for people who belong to a segment.",
                        "type": "object",
                        "properties": {
                          "segment": {
                            "x-scalar-ignore": true,
                            "title": "segment",
                            "type": "object",
                            "description": "Provide the `id` of a segment containing people you want to search for.",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The ID of the segment you want to return people from.",
                                "example": 4
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "audience",
                        "type": "object",
                        "description": "filter for people who have an attribute or an attribute value.",
                        "properties": {
                          "attribute": {
                            "x-scalar-ignore": true,
                            "title": "attribute",
                            "description": "Filter your audience by attribute.",
                            "type": "object",
                            "required": [
                              "field",
                              "operator"
                            ],
                            "properties": {
                              "field": {
                                "type": "string",
                                "description": "The name of the attribute you want to filter against.",
                                "example": "first_name"
                              },
                              "operator": {
                                "type": "string",
                                "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                "enum": [
                                  "eq",
                                  "exists"
                                ]
                              },
                              "value": {
                                "type": "string",
                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                              }
                            },
                            "example": {
                              "field": "unsubscribed",
                              "operator": "eq",
                              "value": true
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "example": {
                "filters": {
                  "and": [
                    {
                      "segment": {
                        "id": 3
                      }
                    },
                    {
                      "or": [
                        {
                          "attribute": {
                            "field": "interest",
                            "operator": "eq",
                            "value": "roadrunners"
                          }
                        },
                        {
                          "attribute": {
                            "field": "state",
                            "operator": "eq",
                            "value": "NM"
                          }
                        },
                        {
                          "not": {
                            "attribute": {
                              "field": "species",
                              "operator": "eq",
                              "value": "roadrunners"
                            }
                          }
                        }
                      ]
                    }
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an export.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "export": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "description": "Metadata about an export.",
                      "properties": {
                        "id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The identifier for the export.",
                          "example": 110
                        },
                        "user_id": {
                          "type": "integer",
                          "description": "The user who created the export."
                        },
                        "user_email": {
                          "type": "string",
                          "description": "The email of the user who created the export."
                        },
                        "total": {
                          "type": "integer",
                          "description": "The number of entries in the export. Exports report 0 until done."
                        },
                        "deduplicate_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "readOnly": true,
                          "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                          "example": "15:1492548073"
                        },
                        "type": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The type of information contained in the export.",
                          "enum": [
                            "customers",
                            "deliveries"
                          ],
                          "example": "customers"
                        },
                        "failed": {
                          "x-scalar-ignore": true,
                          "type": "boolean",
                          "description": "If true, the export was unsuccessful.",
                          "example": false
                        },
                        "description": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "A description of the export.",
                          "example": "Customers with segment filters—in Purchased Flowers"
                        },
                        "downloads": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "Counts the total number of times the export has been downloaded.",
                          "example": 2
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "done",
                            "pending",
                            "failed"
                          ],
                          "description": "The state of your export where `done` indicates an export that you can download, `pending`, indicates that your export is not ready to download, and `failed` indicates an export that has failed and will not be downloadable."
                        }
                      },
                      "example": {
                        "id": 110,
                        "user_id": 0,
                        "user_email": "person@email.com",
                        "total": 1234,
                        "deduplicate_id": "110:1530296738",
                        "type": "customers",
                        "failed": false,
                        "status": "done",
                        "description": "Customers with segment filters—in \\Purchased Flowers\\",
                        "downloads": 2,
                        "created_at": 1530296738,
                        "updated_at": 1530296738
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is malformed."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"filters\": {\n    \"and\": [\n      {\n        \"segment\": {\n          \"id\": 3\n        }\n      },\n      {\n        \"or\": [\n          {\n            \"attribute\": {\n              \"field\": \"interest\",\n              \"operator\": \"eq\",\n              \"value\": \"roadrunners\"\n            }\n          },\n          {\n            \"attribute\": {\n              \"field\": \"state\",\n              \"operator\": \"eq\",\n              \"value\": \"NM\"\n            }\n          },\n          {\n            \"not\": {\n              \"attribute\": {\n                \"field\": \"species\",\n                \"operator\": \"eq\",\n                \"value\": \"roadrunners\"\n              }\n            }\n          }\n        ]\n      }\n    ]\n  }\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/exports/customers \\\n  --header 'content-type: application/json' \\\n  --data '{\"filters\":{\"and\":[{\"or\":[{\"segment\":{\"id\":4}}],\"not\":{\"and\":[{\"segment\":{\"id\":4}}]},\"segment\":{\"id\":4},\"attribute\":{\"field\":\"unsubscribed\",\"operator\":\"eq\",\"value\":true}}]}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/exports/customers\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  filters: {\n    and: [\n      {\n        or: [{segment: {id: 4}}],\n        not: {and: [{segment: {id: 4}}]},\n        segment: {id: 4},\n        attribute: {field: 'unsubscribed', operator: 'eq', value: true}\n      }\n    ]\n  }\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/exports/customers\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"filters\\\":{\\\"and\\\":[{\\\"or\\\":[{\\\"segment\\\":{\\\"id\\\":4}}],\\\"not\\\":{\\\"and\\\":[{\\\"segment\\\":{\\\"id\\\":4}}]},\\\"segment\\\":{\\\"id\\\":4},\\\"attribute\\\":{\\\"field\\\":\\\"unsubscribed\\\",\\\"operator\\\":\\\"eq\\\",\\\"value\\\":true}}]}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"filters\\\":{\\\"and\\\":[{\\\"or\\\":[{\\\"segment\\\":{\\\"id\\\":4}}],\\\"not\\\":{\\\"and\\\":[{\\\"segment\\\":{\\\"id\\\":4}}]},\\\"segment\\\":{\\\"id\\\":4},\\\"attribute\\\":{\\\"field\\\":\\\"unsubscribed\\\",\\\"operator\\\":\\\"eq\\\",\\\"value\\\":true}}]}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/exports/customers\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/exports/customers\"\n\n\tpayload := strings.NewReader(\"{\\\"filters\\\":{\\\"and\\\":[{\\\"or\\\":[{\\\"segment\\\":{\\\"id\\\":4}}],\\\"not\\\":{\\\"and\\\":[{\\\"segment\\\":{\\\"id\\\":4}}]},\\\"segment\\\":{\\\"id\\\":4},\\\"attribute\\\":{\\\"field\\\":\\\"unsubscribed\\\",\\\"operator\\\":\\\"eq\\\",\\\"value\\\":true}}]}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/exports/deliveries": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "summary": "Export information about deliveries",
        "operationId": "exportDeliveriesData",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Provide filters for the newsletter, campaign, or action you want to return delivery information from. This endpoint starts an export, but you cannot download your export from this endpoint. Use the `/exports/{export_id}` endpoint to download your export.\n\nUse the `start` and `end` to find messages within a time range. If your request doesn't include `start` and `end` parameters, we'll return the most recent 6 months of messages. If your `start` and `end` range is more than 12 months, we'll return 12 months of data from the most recent timestamp in your request. Timestamps reflect when deliveries were created in our system, not when they were actually sent to recipients. There may be a delay between creation and sending.\n",
        "tags": [
          "Exports"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Newsletter",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "newsletter_id"
                        ],
                        "properties": {
                          "newsletter_id": {
                            "type": "integer",
                            "description": "The ID of a newsletter you want to export information from.",
                            "example": 999
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "description": "Contains properties shared by export filters.",
                        "type": "object",
                        "properties": {
                          "start": {
                            "x-scalar-ignore": true,
                            "description": "The unix timestamp representing the beginning of the export.",
                            "type": "integer",
                            "format": "unix timestamp",
                            "example": 1517529600
                          },
                          "end": {
                            "x-scalar-ignore": true,
                            "description": "The unix timestamp representing the end of the export.",
                            "type": "integer",
                            "format": "unix timestamp",
                            "example": 1517702400
                          },
                          "attributes": {
                            "description": "The names of attributes belonging to recipients that you want to include in your export. These are not necessarily attributes that you used in your message via liquid, but you might include these in your exports to compare people's attributes to the content of the deliveries. This property does not support event or trigger properties that you might have used in liquid. Each attribute name is an additional column in the export.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "metric": {
                            "x-scalar-ignore": true,
                            "description": "Determines the metric(s) you want to return.",
                            "type": "string",
                            "enum": [
                              "created",
                              "attempted",
                              "sent",
                              "delivered",
                              "opened",
                              "clicked",
                              "converted",
                              "bounced",
                              "spammed",
                              "unsubscribed",
                              "dropped",
                              "failed",
                              "undeliverable"
                            ]
                          },
                          "drafts": {
                            "x-scalar-ignore": true,
                            "description": "If true, your request returns both drafts and active/sent messages.",
                            "type": "boolean"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "Campaign",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "campaign_id"
                        ],
                        "properties": {
                          "campaign_id": {
                            "type": "integer",
                            "description": "The ID of a campaign you want to export information from.",
                            "example": 46
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "description": "Contains properties shared by export filters.",
                        "type": "object",
                        "properties": {
                          "start": {
                            "x-scalar-ignore": true,
                            "description": "The unix timestamp representing the beginning of the export.",
                            "type": "integer",
                            "format": "unix timestamp",
                            "example": 1517529600
                          },
                          "end": {
                            "x-scalar-ignore": true,
                            "description": "The unix timestamp representing the end of the export.",
                            "type": "integer",
                            "format": "unix timestamp",
                            "example": 1517702400
                          },
                          "attributes": {
                            "description": "The names of attributes belonging to recipients that you want to include in your export. These are not necessarily attributes that you used in your message via liquid, but you might include these in your exports to compare people's attributes to the content of the deliveries. This property does not support event or trigger properties that you might have used in liquid. Each attribute name is an additional column in the export.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "metric": {
                            "x-scalar-ignore": true,
                            "description": "Determines the metric(s) you want to return.",
                            "type": "string",
                            "enum": [
                              "created",
                              "attempted",
                              "sent",
                              "delivered",
                              "opened",
                              "clicked",
                              "converted",
                              "bounced",
                              "spammed",
                              "unsubscribed",
                              "dropped",
                              "failed",
                              "undeliverable"
                            ]
                          },
                          "drafts": {
                            "x-scalar-ignore": true,
                            "description": "If true, your request returns both drafts and active/sent messages.",
                            "type": "boolean"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "Transactional Message",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "transactional_message_id"
                        ],
                        "properties": {
                          "transactional_message_id": {
                            "example": 22,
                            "type": "integer",
                            "description": "The ID of the transactional message you want to export information for."
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "description": "Contains properties shared by export filters.",
                        "type": "object",
                        "properties": {
                          "start": {
                            "x-scalar-ignore": true,
                            "description": "The unix timestamp representing the beginning of the export.",
                            "type": "integer",
                            "format": "unix timestamp",
                            "example": 1517529600
                          },
                          "end": {
                            "x-scalar-ignore": true,
                            "description": "The unix timestamp representing the end of the export.",
                            "type": "integer",
                            "format": "unix timestamp",
                            "example": 1517702400
                          },
                          "attributes": {
                            "description": "The names of attributes belonging to recipients that you want to include in your export. These are not necessarily attributes that you used in your message via liquid, but you might include these in your exports to compare people's attributes to the content of the deliveries. This property does not support event or trigger properties that you might have used in liquid. Each attribute name is an additional column in the export.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "metric": {
                            "x-scalar-ignore": true,
                            "description": "Determines the metric(s) you want to return.",
                            "type": "string",
                            "enum": [
                              "created",
                              "attempted",
                              "sent",
                              "delivered",
                              "opened",
                              "clicked",
                              "converted",
                              "bounced",
                              "spammed",
                              "unsubscribed",
                              "dropped",
                              "failed",
                              "undeliverable"
                            ]
                          },
                          "drafts": {
                            "x-scalar-ignore": true,
                            "description": "If true, your request returns both drafts and active/sent messages.",
                            "type": "boolean"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "title": "Action",
                    "allOf": [
                      {
                        "type": "object",
                        "required": [
                          "action_id"
                        ],
                        "properties": {
                          "action_id": {
                            "example": 77,
                            "type": "integer",
                            "description": "The ID of an action you want to export information from."
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "description": "Contains properties shared by export filters.",
                        "type": "object",
                        "properties": {
                          "start": {
                            "x-scalar-ignore": true,
                            "description": "The unix timestamp representing the beginning of the export.",
                            "type": "integer",
                            "format": "unix timestamp",
                            "example": 1517529600
                          },
                          "end": {
                            "x-scalar-ignore": true,
                            "description": "The unix timestamp representing the end of the export.",
                            "type": "integer",
                            "format": "unix timestamp",
                            "example": 1517702400
                          },
                          "attributes": {
                            "description": "The names of attributes belonging to recipients that you want to include in your export. These are not necessarily attributes that you used in your message via liquid, but you might include these in your exports to compare people's attributes to the content of the deliveries. This property does not support event or trigger properties that you might have used in liquid. Each attribute name is an additional column in the export.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "metric": {
                            "x-scalar-ignore": true,
                            "description": "Determines the metric(s) you want to return.",
                            "type": "string",
                            "enum": [
                              "created",
                              "attempted",
                              "sent",
                              "delivered",
                              "opened",
                              "clicked",
                              "converted",
                              "bounced",
                              "spammed",
                              "unsubscribed",
                              "dropped",
                              "failed",
                              "undeliverable"
                            ]
                          },
                          "drafts": {
                            "x-scalar-ignore": true,
                            "description": "If true, your request returns both drafts and active/sent messages.",
                            "type": "boolean"
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an export.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "export": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "description": "Metadata about an export.",
                      "properties": {
                        "id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The identifier for the export.",
                          "example": 110
                        },
                        "user_id": {
                          "type": "integer",
                          "description": "The user who created the export."
                        },
                        "user_email": {
                          "type": "string",
                          "description": "The email of the user who created the export."
                        },
                        "total": {
                          "type": "integer",
                          "description": "The number of entries in the export. Exports report 0 until done."
                        },
                        "deduplicate_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "readOnly": true,
                          "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                          "example": "15:1492548073"
                        },
                        "type": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The type of information contained in the export.",
                          "enum": [
                            "customers",
                            "deliveries"
                          ],
                          "example": "customers"
                        },
                        "failed": {
                          "x-scalar-ignore": true,
                          "type": "boolean",
                          "description": "If true, the export was unsuccessful.",
                          "example": false
                        },
                        "description": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "A description of the export.",
                          "example": "Customers with segment filters—in Purchased Flowers"
                        },
                        "downloads": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "Counts the total number of times the export has been downloaded.",
                          "example": 2
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "done",
                            "pending",
                            "failed"
                          ],
                          "description": "The state of your export where `done` indicates an export that you can download, `pending`, indicates that your export is not ready to download, and `failed` indicates an export that has failed and will not be downloadable."
                        }
                      },
                      "example": {
                        "id": 110,
                        "user_id": 0,
                        "user_email": "person@email.com",
                        "total": 1234,
                        "deduplicate_id": "110:1530296738",
                        "type": "customers",
                        "failed": false,
                        "status": "done",
                        "description": "Customers with segment filters—in \\Purchased Flowers\\",
                        "downloads": 2,
                        "created_at": 1530296738,
                        "updated_at": 1530296738
                      }
                    }
                  },
                  "example": {
                    "export": {
                      "id": "111,",
                      "deduplicate_id": "110:1530296738",
                      "type": "deliveries",
                      "failed": false,
                      "description": "Full deliveries export (created via the api)",
                      "downloads": 0,
                      "created_at": 1530296742,
                      "updated_at": 1530296742
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is malformed."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"newsletter_id\": 999\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/exports/deliveries \\\n  --header 'content-type: application/json' \\\n  --data '{\"newsletter_id\":999,\"start\":1517529600,\"end\":1517702400,\"attributes\":[\"string\"],\"metric\":\"created\",\"drafts\":true}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/exports/deliveries\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  newsletter_id: 999,\n  start: 1517529600,\n  end: 1517702400,\n  attributes: ['string'],\n  metric: 'created',\n  drafts: true\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/exports/deliveries\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"newsletter_id\\\":999,\\\"start\\\":1517529600,\\\"end\\\":1517702400,\\\"attributes\\\":[\\\"string\\\"],\\\"metric\\\":\\\"created\\\",\\\"drafts\\\":true}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"newsletter_id\\\":999,\\\"start\\\":1517529600,\\\"end\\\":1517702400,\\\"attributes\\\":[\\\"string\\\"],\\\"metric\\\":\\\"created\\\",\\\"drafts\\\":true}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/exports/deliveries\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/exports/deliveries\"\n\n\tpayload := strings.NewReader(\"{\\\"newsletter_id\\\":999,\\\"start\\\":1517529600,\\\"end\\\":1517702400,\\\"attributes\\\":[\\\"string\\\"],\\\"metric\\\":\\\"created\\\",\\\"drafts\\\":true}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/imports": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "operationId": "import",
        "summary": "Import items in bulk",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "This endpoint lets you upload a CSV file containing people, events, objects, or relationships. It provides a handy way of adding and updating them in bulk. Uploading people, objects, or relationships is like performing an [`identify` call](/api/track/#operation/entity) for each row in your CSV; uploading events is like performing a [`track` call](/api/track/#operation/track).\n\nYou'll need to provide us the public URL of your CSV as a part of this operation. We recommend that you host your CSVs from short-lived URLs. Ideally, your URLs will expire 2 hours after you initiate an import so that your customers' information doesn't remain publicly available after you've uploaded it to us.\n\nCheck out the CSV requirements based on what you're importing: [people](/uploading-people/#csv-requirements), [events](/journeys/uploading-people/#event-csv-requirements), and [objects or relationships](/journeys/import-objects/#csv-requirements).\n\nThis endpoint performs some basic validation on the request and then queues the import for processing. The import happens in multiple stages after your request, and may even fail. You'll need to [lookup the status of the import](#getImport) to check on its progress.\n\nRecords in your CSV might result in errors or warnings during the import. We make the errors and warnings available in CSV files that you can download via our export endpoints. [Lookup your import](#getImport) to get download URLs for error and warning reports.\n",
        "tags": [
          "Imports"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "import"
                ],
                "properties": {
                  "import": {
                    "x-scalar-ignore": true,
                    "oneOf": [
                      {
                        "title": "people",
                        "type": "object",
                        "description": "Contains your import parameters.",
                        "required": [
                          "data_file_url",
                          "name",
                          "type",
                          "identifier"
                        ],
                        "properties": {
                          "name": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A friendly name for your import. This helps you identify your import."
                          },
                          "data_file_url": {
                            "type": "string",
                            "description": "The URL or path to the CSV file you want to import."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of import.",
                            "enum": [
                              "people"
                            ]
                          },
                          "identifier": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The type of identifier you want to use to identify people in your sheet—`id` or `email`. At least one column in the CSV must contain an identifier.",
                            "enum": [
                              "id",
                              "email"
                            ]
                          },
                          "data_to_process": {
                            "x-scalar-ignore": true,
                            "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",
                            "enum": [
                              "all",
                              "only_new",
                              "only_existing"
                            ]
                          },
                          "description": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A helpful description that can help you find and recognize your import operation."
                          }
                        }
                      },
                      {
                        "title": "event",
                        "type": "object",
                        "description": "Contains your import parameters.",
                        "required": [
                          "data_file_url",
                          "name",
                          "type",
                          "identifier"
                        ],
                        "properties": {
                          "name": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A friendly name for your import. This helps you identify your import."
                          },
                          "data_file_url": {
                            "type": "string",
                            "description": "The URL or path to the CSV file you want to import."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of import.",
                            "enum": [
                              "event"
                            ]
                          },
                          "identifier": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The type of identifier you want to use to identify people in your sheet—`id` or `email`. At least one column in the CSV must contain an identifier.",
                            "enum": [
                              "id",
                              "email"
                            ]
                          },
                          "data_to_process": {
                            "x-scalar-ignore": true,
                            "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",
                            "enum": [
                              "all",
                              "only_new",
                              "only_existing"
                            ]
                          },
                          "description": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A helpful description that can help you find and recognize your import operation."
                          }
                        }
                      },
                      {
                        "title": "relationship",
                        "type": "object",
                        "description": "Contains your import parameters.",
                        "required": [
                          "data_file_url",
                          "name",
                          "type",
                          "identifier",
                          "object_type_id"
                        ],
                        "properties": {
                          "name": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A friendly name for your import. This helps you identify your import."
                          },
                          "data_file_url": {
                            "type": "string",
                            "description": "The URL or path to the CSV file you want to import."
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of import.",
                            "enum": [
                              "relationship"
                            ]
                          },
                          "identifier": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The type of identifier you want to use to identify people in your sheet—`id` or `email`. At least one column in the CSV must contain an identifier.",
                            "enum": [
                              "id",
                              "email"
                            ]
                          },
                          "data_to_process": {
                            "x-scalar-ignore": true,
                            "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",
                            "enum": [
                              "all",
                              "only_new",
                              "only_existing"
                            ]
                          },
                          "description": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A helpful description that can help you find and recognize your import operation."
                          }
                        }
                      },
                      {
                        "title": "object",
                        "type": "object",
                        "description": "Contains your import parameters.",
                        "required": [
                          "data_file_url",
                          "name",
                          "type",
                          "object_type_id"
                        ],
                        "properties": {
                          "name": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A friendly name for your import. This helps you identify your import."
                          },
                          "data_file_url": {
                            "type": "string",
                            "description": "The URL or path to the CSV file you want to import."
                          },
                          "object_type_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                            "nullable": false,
                            "example": "1"
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of import.",
                            "enum": [
                              "object"
                            ]
                          },
                          "data_to_process": {
                            "x-scalar-ignore": true,
                            "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",
                            "enum": [
                              "all",
                              "only_new",
                              "only_existing"
                            ]
                          },
                          "description": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A helpful description that can help you find and recognize your import operation."
                          }
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an import payload.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "import"
                  ],
                  "properties": {
                    "import": {
                      "x-scalar-ignore": true,
                      "description": "Represents an import operation.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer",
                          "description": "This is the `import_id` you'll use if you want to [lookup your import operation](#getImport)."
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "name": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "A friendly name for your import. This helps you identify your import."
                        },
                        "description": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "A helpful description that can help you find and recognize your import operation."
                        },
                        "rows_to_import": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The total number of importable rows we found in the CSV."
                        },
                        "rows_imported": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The number of rows we imported from the CSV."
                        },
                        "state": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The state of the import—whether your import is being processed, fully completed (`imported`), or if it failed.",
                          "enum": [
                            "preprocessing",
                            "preprocessed",
                            "validating",
                            "validated",
                            "importing",
                            "imported",
                            "failed",
                            "canceled"
                          ]
                        },
                        "type": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The type of import.",
                          "enum": [
                            "people",
                            "event",
                            "object",
                            "relationship"
                          ]
                        },
                        "identifier": {
                          "type": "string",
                          "description": "The type of identifier you used to identify people in your CSV. Not applicable for object imports.",
                          "enum": [
                            "id",
                            "email"
                          ]
                        },
                        "data_to_process": {
                          "x-scalar-ignore": true,
                          "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",
                          "enum": [
                            "all",
                            "only_new",
                            "only_existing"
                          ]
                        },
                        "people_to_process": {
                          "type": "string",
                          "description": "Returned for people and event imports, even if you imported using the field `data_to_process`. This field will be deprecated soon.\n",
                          "enum": [
                            "all",
                            "only_new",
                            "only_existing"
                          ]
                        },
                        "object_type_id": {
                          "type": "string",
                          "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Only applies to object imports.",
                          "nullable": false,
                          "example": "1"
                        },
                        "error": {
                          "description": "If your import fails, this helps you understand why.",
                          "type": "string"
                        }
                      },
                      "example": {
                        "id": 30,
                        "name": "account-object-import",
                        "description": "importing accounts",
                        "created_at": 1706081641,
                        "updated_at": 1706081645,
                        "rows_to_import": 3,
                        "rows_imported": 3,
                        "state": "imported",
                        "type": "object",
                        "data_to_process": "all",
                        "people_to_process": "all",
                        "object_type_id": 1,
                        "error": "possible error - The specified Object Type does not exist."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"import\": {\n    \"name\": \"string\",\n    \"data_file_url\": \"string\",\n    \"type\": \"people\",\n    \"identifier\": \"id\"\n  }\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/imports \\\n  --header 'content-type: application/json' \\\n  --data '{\"import\":{\"name\":\"string\",\"data_file_url\":\"string\",\"type\":\"people\",\"identifier\":\"id\",\"data_to_process\":\"all\",\"description\":\"string\"}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/imports\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  import: {\n    name: 'string',\n    data_file_url: 'string',\n    type: 'people',\n    identifier: 'id',\n    data_to_process: 'all',\n    description: 'string'\n  }\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/imports\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"import\\\":{\\\"name\\\":\\\"string\\\",\\\"data_file_url\\\":\\\"string\\\",\\\"type\\\":\\\"people\\\",\\\"identifier\\\":\\\"id\\\",\\\"data_to_process\\\":\\\"all\\\",\\\"description\\\":\\\"string\\\"}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"import\\\":{\\\"name\\\":\\\"string\\\",\\\"data_file_url\\\":\\\"string\\\",\\\"type\\\":\\\"people\\\",\\\"identifier\\\":\\\"id\\\",\\\"data_to_process\\\":\\\"all\\\",\\\"description\\\":\\\"string\\\"}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/imports\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/imports\"\n\n\tpayload := strings.NewReader(\"{\\\"import\\\":{\\\"name\\\":\\\"string\\\",\\\"data_file_url\\\":\\\"string\\\",\\\"type\\\":\\\"people\\\",\\\"identifier\\\":\\\"id\\\",\\\"data_to_process\\\":\\\"all\\\",\\\"description\\\":\\\"string\\\"}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/imports/{import_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "operationId": "getImport",
        "parameters": [
          {
            "name": "import_id",
            "in": "path",
            "required": true,
            "description": "The `id` of the import you want to lookup. This value is [returned from an import](#import) that was accepted and queued for processing.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "summary": "Retrieve a bulk import",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "This endpoint returns information about an \"import\"—a CSV file containing a group of people or events you uploaded to using `v1/imports` endpoint. You can use this endpoint to check to status of imports, or find out how many rows you successfully imported from a CSV file.",
        "tags": [
          "Imports"
        ],
        "responses": {
          "200": {
            "description": "Returns an import payload.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "import"
                  ],
                  "properties": {
                    "import": {
                      "allOf": [
                        {
                          "x-scalar-ignore": true,
                          "description": "Represents an import operation.",
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "integer",
                              "description": "This is the `import_id` you'll use if you want to [lookup your import operation](#getImport)."
                            },
                            "created_at": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was created.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "updated_at": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "format": "unix timestamp",
                              "description": "The date time when the referenced ID was last updated.",
                              "example": 1552341937,
                              "readOnly": true
                            },
                            "name": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "A friendly name for your import. This helps you identify your import."
                            },
                            "description": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "A helpful description that can help you find and recognize your import operation."
                            },
                            "rows_to_import": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The total number of importable rows we found in the CSV."
                            },
                            "rows_imported": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The number of rows we imported from the CSV."
                            },
                            "state": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The state of the import—whether your import is being processed, fully completed (`imported`), or if it failed.",
                              "enum": [
                                "preprocessing",
                                "preprocessed",
                                "validating",
                                "validated",
                                "importing",
                                "imported",
                                "failed",
                                "canceled"
                              ]
                            },
                            "type": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The type of import.",
                              "enum": [
                                "people",
                                "event",
                                "object",
                                "relationship"
                              ]
                            },
                            "identifier": {
                              "type": "string",
                              "description": "The type of identifier you used to identify people in your CSV. Not applicable for object imports.",
                              "enum": [
                                "id",
                                "email"
                              ]
                            },
                            "data_to_process": {
                              "x-scalar-ignore": true,
                              "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",
                              "enum": [
                                "all",
                                "only_new",
                                "only_existing"
                              ]
                            },
                            "people_to_process": {
                              "type": "string",
                              "description": "Returned for people and event imports, even if you imported using the field `data_to_process`. This field will be deprecated soon.\n",
                              "enum": [
                                "all",
                                "only_new",
                                "only_existing"
                              ]
                            },
                            "object_type_id": {
                              "type": "string",
                              "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Only applies to object imports.",
                              "nullable": false,
                              "example": "1"
                            },
                            "error": {
                              "description": "If your import fails, this helps you understand why.",
                              "type": "string"
                            }
                          },
                          "example": {
                            "id": 30,
                            "name": "account-object-import",
                            "description": "importing accounts",
                            "created_at": 1706081641,
                            "updated_at": 1706081645,
                            "rows_to_import": 3,
                            "rows_imported": 3,
                            "state": "imported",
                            "type": "object",
                            "data_to_process": "all",
                            "people_to_process": "all",
                            "object_type_id": 1,
                            "error": "possible error - The specified Object Type does not exist."
                          }
                        },
                        {
                          "type": "object",
                          "properties": {
                            "error_export_id": {
                              "type": "integer",
                              "example": 2,
                              "description": "ID of the export containing errors for the import, which can retrieved via [the *Get an export* endpoint](#operation/getExport). Only present when there are errors."
                            },
                            "error_download_url": {
                              "type": "string",
                              "example": "https://api.customer.io/v1/exports/2/download",
                              "description": "URL to download errors for the import via [the *Download an export* endpoint](#operation/downloadExport). Only present when there are errors."
                            },
                            "warning_export_id": {
                              "type": "integer",
                              "example": 1,
                              "description": "ID of the export containing warnings for the import, which can retrieved via [the *Get an export* endpoint](#operation/getExport). Only present when there are warnings."
                            },
                            "warning_download_url": {
                              "type": "string",
                              "example": "https://api.customer.io/v1/exports/1/download",
                              "description": "URL to download warnings for the import via [the *Download an export* endpoint](#operation/downloadExport). Only present when there are warnings."
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/imports/{import_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/imports/%7Bimport_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/imports/%7Bimport_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/imports/%7Bimport_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/imports/%7Bimport_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/info/ip_addresses": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "summary": "List IP addresses",
        "operationId": "getCioAllowlist",
        "security": [],
        "description": "Returns a list of IP addresses that you need to allowlist if you're using a firewall or [Custom SMTP](/use-your-smtp-server) provider's IP access management settings to deny access to unknown IP addresses.\n\nThese addresses apply to all message types and webhooks, except push notifications.\n",
        "tags": [
          "Info"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of IP addresses.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ip_addresses": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "format": "ip address"
                      },
                      "example": [
                        "35.188.196.183",
                        "104.198.177.219",
                        "104.154.232.87",
                        "130.211.229.195",
                        "104.198.221.24",
                        "104.197.27.15",
                        "35.194.9.154",
                        "104.154.144.51",
                        "104.197.210.12",
                        "35.225.6.73"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --url https://api.customer.io/v1/info/ip_addresses"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/info/ip_addresses\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/info/ip_addresses\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/info/ip_addresses\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/info/ip_addresses\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/messages": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer",
            "default": 50,
            "maximum": 1000
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        },
        {
          "name": "metric",
          "in": "query",
          "required": false,
          "description": "Determines the metric(s) you want to return.",
          "schema": {
            "type": "string",
            "enum": [
              "attempted",
              "sent",
              "delivered",
              "opened",
              "clicked",
              "converted",
              "bounced",
              "spammed",
              "unsubscribed",
              "dropped",
              "failed",
              "undeliverable"
            ]
          }
        },
        {
          "name": "drafts",
          "in": "query",
          "required": false,
          "description": "If true, your request returns drafts rather than active/sent messages.",
          "schema": {
            "type": "boolean"
          }
        },
        {
          "name": "campaign_id",
          "in": "query",
          "required": false,
          "description": "The campaign you want to filter for.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "newsletter_id",
          "in": "query",
          "required": false,
          "description": "The newsletter you want to filter for.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "action_id",
          "in": "query",
          "required": false,
          "description": "The action you want to filter for.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "start_ts",
          "in": "query",
          "required": false,
          "description": "The beginning timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        },
        {
          "name": "end_ts",
          "in": "query",
          "required": false,
          "description": "The ending timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        }
      ],
      "get": {
        "summary": "List messages",
        "operationId": "listMessages",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return a list of deliveries, including metrics for each delivery, for messages in your workspace. The request body contains filters determining the deliveries you want to return information about.\n\nUse the `start_ts` and `end_ts` parameters to find messages within a time range. We limit your requests to 6 months. If your request doesn't include `start_ts` and `end_ts` parameters, we'll return the most recent 6 months of deliveries. If `start_ts` is greater than 6-months before `end_ts`, we only send back 6 months of data. If only `end_ts` is specified, we return 6 months of data before this timestamp. If only `start_ts` is specified, we then set the `end_ts` to the current time and deliver 6 months of data prior to this timestamp. Timestamps reflect when deliveries were created in our system, not when they were actually sent to recipients. There may be a delay between creation and sending.\n",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of message objects.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "messages": {
                      "type": "array",
                      "description": "Each object in the array describes an individual message delivery. The object contains keys for all possible parents of the message (`newsletter_id`, `broadcast_id`, etc) but only the parents of the delivery are populated. Other parent IDs are null.",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "description": "Describes an individual message delivery. The object contains keys for all possible parents of the message (`newsletter_id`, `broadcast_id`, etc) but only the parents of the delivery are populated. Other parent IDs are null.",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a delivery—the instance of a message intended for an individual recipient.",
                            "type": "string",
                            "readOnly": true,
                            "example": "dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek="
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "message_template_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier of the message template used to create a message.",
                            "type": "integer",
                            "readOnly": true,
                            "deprecated": true
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "customer_identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                            "required": [
                              "email",
                              "id",
                              "cio_id"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "nullable": true,
                                "format": "email",
                                "description": "A person's email address, if set.",
                                "example": "test@example.com"
                              },
                              "id": {
                                "type": "string",
                                "nullable": true,
                                "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                                "example": 2
                              },
                              "cio_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                "example": "a3000001"
                              }
                            }
                          },
                          "recipient": {
                            "x-scalar-ignore": true,
                            "description": "The recipient address for an action.",
                            "type": "string",
                            "example": "{{customer.email}}"
                          },
                          "subject": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The subject line for an `email` action.",
                            "example": "Did you get that thing I sent you?"
                          },
                          "metrics": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Metrics for an individual instance of a message; each item in the object represents the timestamp when a message achieved a particular metric. This object only contains metrics that have been recorded.",
                            "properties": {
                              "bounced": {
                                "type": "integer",
                                "description": "The timestamp when the message `bounced`."
                              },
                              "clicked": {
                                "type": "integer",
                                "description": "The timestamp when the message was `clicked`."
                              },
                              "human_clicked": {
                                "type": "integer",
                                "description": "The number of `clicked` messages excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                              },
                              "prefetch_clicked": {
                                "type": "integer",
                                "description": "The number of `clicked` messages attributed to machines. This metric is reliable starting April 20, 2025."
                              },
                              "converted": {
                                "type": "integer",
                                "description": "The timestamp when the message was `converted`."
                              },
                              "created": {
                                "type": "integer",
                                "description": "The timestamp when the message was `created`."
                              },
                              "delivered": {
                                "type": "integer",
                                "description": "The timestamp when the message was `delivered`."
                              },
                              "drafted": {
                                "type": "integer",
                                "description": "The timestamp when the message was `drafted`."
                              },
                              "dropped": {
                                "type": "integer",
                                "description": "The timestamp when the message was `dropped`."
                              },
                              "failed": {
                                "type": "integer",
                                "description": "The timestamp when the message `failed`."
                              },
                              "opened": {
                                "type": "integer",
                                "description": "The timestamp when the message was `opened`."
                              },
                              "human_opened": {
                                "type": "integer",
                                "description": "The number of `opened` messages excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                              },
                              "prefetch_opened": {
                                "type": "integer",
                                "description": "The number of `opened` messages attributed to machines. This metric is reliable starting March 20, 2025."
                              },
                              "sent": {
                                "type": "integer",
                                "description": "The timestamp when the message was `sent`."
                              },
                              "spammed": {
                                "type": "integer",
                                "description": "The timestamp when the message was marked as spam."
                              },
                              "undeliverable": {
                                "type": "integer",
                                "description": "The timestamp when the message became `undeliverable`."
                              },
                              "unsubscribed": {
                                "type": "integer",
                                "description": "The timestamp when a person unsubscribed based on this message."
                              }
                            }
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "failure_message": {
                            "type": "string",
                            "description": "Explains why a message failed, if applicable.",
                            "nullable": true
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a message in a newsletter. Newsletters can have multiple content IDs (for multi-language messages or A/B tests).",
                            "type": "integer",
                            "readOnly": true,
                            "example": 1
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          },
                          "type": {
                            "x-scalar-ignore": true,
                            "description": "The type of message/action.",
                            "type": "string",
                            "enum": [
                              "email",
                              "webhook",
                              "twilio",
                              "slack",
                              "push",
                              "in_app",
                              "whatsapp"
                            ],
                            "readOnly": true,
                            "example": "email"
                          },
                          "forgotten": {
                            "type": "boolean",
                            "description": "If true message contents are not retained by Customer.io."
                          }
                        },
                        "example": {
                          "id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=",
                          "deduplicate_id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=:1619137768",
                          "msg_template_id": 43,
                          "action_id": 215,
                          "parent_action_id": null,
                          "customer_id": null,
                          "recipient": "person@example.com",
                          "subject": "Did you get that thing I sent you?",
                          "metrics": {
                            "delivered": 1619137768,
                            "sent": 1619137768
                          },
                          "created": 1619137767,
                          "failure_message": null,
                          "newsletter_id": null,
                          "content_id": null,
                          "campaign_id": 23,
                          "broadcast_id": null,
                          "trigger_event_id": null,
                          "type": "email",
                          "forgotten": false
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/messages"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/messages\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/messages\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/messages\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/messages\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/messages/{message_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "message_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a message.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Get a message",
        "operationId": "getMessage",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return a information about, and metrics for, a delivery—the instance of a message intended for an individual recipient person.",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Returns a message object.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Describes an individual message delivery. The object contains keys for all possible parents of the message (`newsletter_id`, `broadcast_id`, etc) but only the parents of the delivery are populated. Other parent IDs are null.",
                  "properties": {
                    "message": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "description": "Describes an individual message delivery. The object contains keys for all possible parents of the message (`newsletter_id`, `broadcast_id`, etc) but only the parents of the delivery are populated. Other parent IDs are null.",
                      "properties": {
                        "id": {
                          "x-scalar-ignore": true,
                          "description": "The identifier for a delivery—the instance of a message intended for an individual recipient.",
                          "type": "string",
                          "readOnly": true,
                          "example": "dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek="
                        },
                        "deduplicate_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "readOnly": true,
                          "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                          "example": "15:1492548073"
                        },
                        "message_template_id": {
                          "x-scalar-ignore": true,
                          "description": "The identifier of the message template used to create a message.",
                          "type": "integer",
                          "readOnly": true,
                          "deprecated": true
                        },
                        "customer_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                          "nullable": true,
                          "example": "42"
                        },
                        "customer_identifiers": {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                          "required": [
                            "email",
                            "id",
                            "cio_id"
                          ],
                          "properties": {
                            "email": {
                              "type": "string",
                              "nullable": true,
                              "format": "email",
                              "description": "A person's email address, if set.",
                              "example": "test@example.com"
                            },
                            "id": {
                              "type": "string",
                              "nullable": true,
                              "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                              "example": 2
                            },
                            "cio_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                              "example": "a3000001"
                            }
                          }
                        },
                        "recipient": {
                          "x-scalar-ignore": true,
                          "description": "The recipient address for an action.",
                          "type": "string",
                          "example": "{{customer.email}}"
                        },
                        "subject": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The subject line for an `email` action.",
                          "example": "Did you get that thing I sent you?"
                        },
                        "metrics": {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "description": "Metrics for an individual instance of a message; each item in the object represents the timestamp when a message achieved a particular metric. This object only contains metrics that have been recorded.",
                          "properties": {
                            "bounced": {
                              "type": "integer",
                              "description": "The timestamp when the message `bounced`."
                            },
                            "clicked": {
                              "type": "integer",
                              "description": "The timestamp when the message was `clicked`."
                            },
                            "human_clicked": {
                              "type": "integer",
                              "description": "The number of `clicked` messages excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                            },
                            "prefetch_clicked": {
                              "type": "integer",
                              "description": "The number of `clicked` messages attributed to machines. This metric is reliable starting April 20, 2025."
                            },
                            "converted": {
                              "type": "integer",
                              "description": "The timestamp when the message was `converted`."
                            },
                            "created": {
                              "type": "integer",
                              "description": "The timestamp when the message was `created`."
                            },
                            "delivered": {
                              "type": "integer",
                              "description": "The timestamp when the message was `delivered`."
                            },
                            "drafted": {
                              "type": "integer",
                              "description": "The timestamp when the message was `drafted`."
                            },
                            "dropped": {
                              "type": "integer",
                              "description": "The timestamp when the message was `dropped`."
                            },
                            "failed": {
                              "type": "integer",
                              "description": "The timestamp when the message `failed`."
                            },
                            "opened": {
                              "type": "integer",
                              "description": "The timestamp when the message was `opened`."
                            },
                            "human_opened": {
                              "type": "integer",
                              "description": "The number of `opened` messages excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                            },
                            "prefetch_opened": {
                              "type": "integer",
                              "description": "The number of `opened` messages attributed to machines. This metric is reliable starting March 20, 2025."
                            },
                            "sent": {
                              "type": "integer",
                              "description": "The timestamp when the message was `sent`."
                            },
                            "spammed": {
                              "type": "integer",
                              "description": "The timestamp when the message was marked as spam."
                            },
                            "undeliverable": {
                              "type": "integer",
                              "description": "The timestamp when the message became `undeliverable`."
                            },
                            "unsubscribed": {
                              "type": "integer",
                              "description": "The timestamp when a person unsubscribed based on this message."
                            }
                          }
                        },
                        "created": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "failure_message": {
                          "type": "string",
                          "description": "Explains why a message failed, if applicable.",
                          "nullable": true
                        },
                        "campaign_id": {
                          "x-scalar-ignore": true,
                          "description": "The identifier for a campaign.",
                          "type": "integer",
                          "example": 5
                        },
                        "action_id": {
                          "x-scalar-ignore": true,
                          "description": "The identifier for an action.",
                          "type": "integer",
                          "readOnly": true,
                          "example": 96
                        },
                        "parent_action_id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                          "example": 1,
                          "readOnly": true
                        },
                        "newsletter_id": {
                          "x-scalar-ignore": true,
                          "description": "The identifier for a newsletter.",
                          "type": "integer",
                          "example": 10
                        },
                        "content_id": {
                          "x-scalar-ignore": true,
                          "description": "The identifier for a message in a newsletter. Newsletters can have multiple content IDs (for multi-language messages or A/B tests).",
                          "type": "integer",
                          "readOnly": true,
                          "example": 1
                        },
                        "broadcast_id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The identifier for a broadcast.",
                          "example": 2
                        },
                        "trigger_event_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                          "nullable": true,
                          "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                        },
                        "type": {
                          "x-scalar-ignore": true,
                          "description": "The type of message/action.",
                          "type": "string",
                          "enum": [
                            "email",
                            "webhook",
                            "twilio",
                            "slack",
                            "push",
                            "in_app",
                            "whatsapp"
                          ],
                          "readOnly": true,
                          "example": "email"
                        },
                        "forgotten": {
                          "type": "boolean",
                          "description": "If true message contents are not retained by Customer.io."
                        }
                      },
                      "example": {
                        "id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=",
                        "deduplicate_id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=:1619137768",
                        "msg_template_id": 43,
                        "action_id": 215,
                        "parent_action_id": null,
                        "customer_id": null,
                        "recipient": "person@example.com",
                        "subject": "Did you get that thing I sent you?",
                        "metrics": {
                          "delivered": 1619137768,
                          "sent": 1619137768
                        },
                        "created": 1619137767,
                        "failure_message": null,
                        "newsletter_id": null,
                        "content_id": null,
                        "campaign_id": 23,
                        "broadcast_id": null,
                        "trigger_event_id": null,
                        "type": "email",
                        "forgotten": false
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The message does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/messages/{message_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/messages/%7Bmessage_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/messages/%7Bmessage_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/messages/%7Bmessage_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/messages/%7Bmessage_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/messages/{message_id}/archived_message": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "message_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a message.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Get an archived message",
        "operationId": "getArchivedMessage",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns the archived copy of a delivery, including the message body, recipient, and metrics. This endpoint is limited to 100 requests per day.",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Returns the archived message object.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Describes an archived message delivery.",
                  "properties": {
                    "archived_message": {
                      "x-scalar-ignore": true,
                      "description": "An archived message, including a complete message body.\n",
                      "type": "object",
                      "properties": {
                        "id": {
                          "x-scalar-ignore": true,
                          "description": "The identifier for a delivery—the instance of a message intended for an individual recipient.",
                          "type": "string",
                          "readOnly": true,
                          "example": "dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek="
                        },
                        "body": {
                          "type": "string",
                          "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                          "example": "<!DOCTYPE html><html><head>\\n<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html; charset=UTF-8\\\"/><h1>Hello World</h1>\\n\\n</body></html>"
                        },
                        "from": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The address that the message is from, relevant if the action `type` is `email`.",
                          "readOnly": true,
                          "example": "sentFrom@example.com"
                        },
                        "reply_to": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The address that receives replies for the message, if applicable.",
                          "readOnly": true,
                          "example": "replyto@example.com"
                        },
                        "recipient": {
                          "description": "The recipient address for an action.",
                          "type": "string",
                          "example": "person@example.com"
                        },
                        "subject": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The subject line for an `email` action.",
                          "example": "Did you get that thing I sent you?"
                        },
                        "bcc": {
                          "x-scalar-ignore": true,
                          "readOnly": true,
                          "description": "The blind-copy address(es) for this action.",
                          "type": "string"
                        },
                        "fake_bcc": {
                          "x-scalar-ignore": true,
                          "readOnly": true,
                          "type": "boolean",
                          "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                        },
                        "preheader_text": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "Also known as \"preview text\", this specifies the small block of text shown in an end-user's email inbox, next to, or underneath, the subject line."
                        },
                        "url": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The URL of a webhook or action.",
                          "example": "https://example.com/webhook"
                        },
                        "request_method": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The method used in conjunction with a webhook `url`.",
                          "enum": [
                            "GET",
                            "POST",
                            "PUT",
                            "DELETE",
                            "PATCH"
                          ],
                          "example": "POST"
                        },
                        "headers": {
                          "x-scalar-ignore": true,
                          "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                          "type": "string",
                          "format": "json",
                          "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                        },
                        "forgotten": {
                          "x-scalar-ignore": true,
                          "type": "boolean",
                          "description": "If true, Customer.io does not retain the message content.",
                          "example": false
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The message does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/messages/{message_id}/archived_message"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/messages/%7Bmessage_id%7D/archived_message\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/messages/%7Bmessage_id%7D/archived_message\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/messages/%7Bmessage_id%7D/archived_message\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/messages/%7Bmessage_id%7D/archived_message\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "sort",
          "in": "query",
          "description": "Determine how you want to sort results, `asc` for chronological order and `desc` for reverse chronological order.",
          "required": false,
          "schema": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "List newsletters",
        "operationId": "listNewsletters",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of your newsletters and associated metadata.",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of newsletter objects.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "newsletters": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "content_ids": {
                            "type": "array",
                            "description": "A list of messages contained by a newsletter. If your newsletter includes a list of languages and/or A/B test variants, the array contains a content ID for each language/variant. [Look up a newsletter variant](#operation/getNewsletterVariant) to get more information about an individual content ID.",
                            "items": {
                              "type": "integer"
                            }
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the newsletter.",
                            "readOnly": true
                          },
                          "sent_at": {
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The last time the newsletter was sent."
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of newsletter—`email`, `twilio`, etc.",
                            "enum": [
                              "email",
                              "webhook",
                              "twilio",
                              "slack",
                              "push",
                              "in_app",
                              "whatsapp"
                            ]
                          },
                          "tags": {
                            "type": "array",
                            "description": "An array of tags you set on this newsletter.",
                            "items": {
                              "type": "string"
                            }
                          },
                          "recipient_segment_ids": {
                            "description": "A list of segments used in a newsletter's recipient filter, returned if newsletter recipients were filtered by one or more segments.",
                            "type": "array",
                            "items": {
                              "type": "integer"
                            }
                          },
                          "subscription_topic_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier of a subscription topic. Remember, subscription topics are assigned an incrementing number, starting at 1.",
                            "example": 1
                          }
                        },
                        "example": {
                          "id": 128275,
                          "deduplicate_id": "128275:1484870424",
                          "type": "email",
                          "content_ids": [
                            45,
                            90
                          ],
                          "name": "Example Newsletter",
                          "sent_at": null,
                          "created": 1481653929,
                          "updated": 1484870424,
                          "tags": [
                            "Example Tag"
                          ],
                          "recipient_segment_ids": [
                            10
                          ],
                          "subscription_topic_id": 1
                        }
                      }
                    },
                    "next": {
                      "x-scalar-ignore": true,
                      "type": "string",
                      "description": "Indicates the next page of results. Add `?start=<next_value>` to the request to get the next page of results."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "Get a newsletter",
        "operationId": "getNewsletters",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns metadata for an individual newsletter.",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns metadata for the newsletter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "newsletter": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "id": {
                          "x-scalar-ignore": true,
                          "description": "The identifier for a newsletter.",
                          "type": "integer",
                          "example": 10
                        },
                        "deduplicate_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "readOnly": true,
                          "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                          "example": "15:1492548073"
                        },
                        "content_ids": {
                          "type": "array",
                          "description": "A list of messages contained by a newsletter. If your newsletter includes a list of languages and/or A/B test variants, the array contains a content ID for each language/variant. [Look up a newsletter variant](#operation/getNewsletterVariant) to get more information about an individual content ID.",
                          "items": {
                            "type": "integer"
                          }
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the newsletter.",
                          "readOnly": true
                        },
                        "sent_at": {
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The last time the newsletter was sent."
                        },
                        "created": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "type": {
                          "type": "string",
                          "description": "The type of newsletter—`email`, `twilio`, etc.",
                          "enum": [
                            "email",
                            "webhook",
                            "twilio",
                            "slack",
                            "push",
                            "in_app",
                            "whatsapp"
                          ]
                        },
                        "tags": {
                          "type": "array",
                          "description": "An array of tags you set on this newsletter.",
                          "items": {
                            "type": "string"
                          }
                        },
                        "recipient_segment_ids": {
                          "description": "A list of segments used in a newsletter's recipient filter, returned if newsletter recipients were filtered by one or more segments.",
                          "type": "array",
                          "items": {
                            "type": "integer"
                          }
                        },
                        "subscription_topic_id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The identifier of a subscription topic. Remember, subscription topics are assigned an incrementing number, starting at 1.",
                          "example": 1
                        }
                      },
                      "example": {
                        "id": 128275,
                        "deduplicate_id": "128275:1484870424",
                        "type": "email",
                        "content_ids": [
                          45,
                          90
                        ],
                        "name": "Example Newsletter",
                        "sent_at": null,
                        "created": 1481653929,
                        "updated": 1484870424,
                        "tags": [
                          "Example Tag"
                        ],
                        "recipient_segment_ids": [
                          10
                        ],
                        "subscription_topic_id": 1
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The newsletter you requested does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "delete": {
        "summary": "Delete a newsletter",
        "operationId": "deletetNewsletters",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Deletes an individual newsletter, including content, settings, and metrics. It will be removed from segments, and its templates will no longer show in the Message Library.\n\nIf the newsletter is an in-app message, this cancels any undelivered, in-app message, too.\n",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "204": {
            "description": "Success. No content."
          },
          "404": {
            "description": "The newsletter does not exist."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/newsletters/%7Bnewsletter_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}/metrics": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        }
      ],
      "get": {
        "summary": "Get newsletter metrics",
        "operationId": "getNewsletterMetrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of metrics for an individual newsletter in `steps` (days, weeks, etc). We return metrics from oldest to newest (i.e. the 0-index for any result is the oldest step/period).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns newsletter metrics by `series` (with increments are based on the `period` and `step` in your request) for the newsletter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "metric": {
                      "type": "object",
                      "properties": {
                        "series": {
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                              "properties": {
                                "2xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "2xx responses by period, representative of webhook performance."
                                },
                                "3xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "3xx responses by period, representative of webhook performance."
                                },
                                "4xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "4xx responses by period, representative of webhook performance."
                                },
                                "5xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "5xx responses by period, representative of webhook performance."
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                              "type": "object",
                              "properties": {
                                "attempted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `attempted` messages."
                                },
                                "bounced": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `bounced` messages."
                                },
                                "clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` messages."
                                },
                                "human_clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` emails excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                },
                                "prefetch_clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` emails attributed to machines. This metric is reliable starting April 20, 2025."
                                },
                                "converted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `converted` messages."
                                },
                                "created": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `created` messages."
                                },
                                "deferred": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `deferred` messages."
                                },
                                "delivered": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `delivered` messages."
                                },
                                "drafted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `drafted` messages."
                                },
                                "failed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `failed` messages."
                                },
                                "opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` messages."
                                },
                                "human_opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` emails excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                },
                                "prefetch_opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` emails attributed to machines. This metric is reliable starting March 20, 2025."
                                },
                                "sent": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of sent messages."
                                },
                                "spammed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of spam complaints."
                                },
                                "suppressed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `suppressed` messages."
                                },
                                "undeliverable": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `undeliverable` messages."
                                },
                                "topic_unsubscribed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of topic unsubscribes in a given period."
                                },
                                "unsubscribed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of unsubscribes attributed to the campaign or message."
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The newsletter you requested does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/metrics"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/metrics\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/metrics\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D/metrics\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/metrics\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}/metrics/links": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "unique",
          "in": "query",
          "required": false,
          "description": "If true, the response contains only unique customer results, i.e. a customer who clicks a link twice is only counted once. If false, the response contains the total number of results without regard to uniqueness.",
          "schema": {
            "type": "boolean",
            "default": false
          }
        }
      ],
      "get": {
        "summary": "Get newsletter link metrics",
        "operationId": "getNewsletterLinks",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns metrics for link clicks within a newsletter, both in total and in `series` periods (days, weeks, etc). `series` metrics are ordered oldest to newest (i.e. the 0-index for any result is the oldest step/period).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of link objects. Each object represents a different link in your newsletter and contains independent metrics.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "links": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "link": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The ID of the link.",
                                "example": 1234
                              },
                              "href": {
                                "type": "string",
                                "description": "The link destination—a URL, mailto, etc.",
                                "example": "https://docs.customer.io"
                              }
                            }
                          },
                          "metric": {
                            "type": "object",
                            "description": "Contains metrics for the link.",
                            "properties": {
                              "series": {
                                "type": "object",
                                "properties": {
                                  "clicked": {
                                    "type": "array",
                                    "description": "An array of results from oldest to newest, where each result indicates a period.",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "example": [
                                      1,
                                      3,
                                      5,
                                      7
                                    ]
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The newsletter you requested does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/metrics/links"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/metrics/links\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/metrics/links\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D/metrics/links\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/metrics/links\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}/contents": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "List newsletter variants",
        "operationId": "listNewsletterVariants",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns the content variants of a newsletter—these are either different languages in a multi-language newsletter or A/B tests.",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns newsletter `content_id`s. Each object represents an individual variant of this newsletter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "contents": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "allOf": [
                          {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.",
                                "readOnly": true
                              },
                              "newsletter_id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for a newsletter.",
                                "type": "integer",
                                "example": 10
                              },
                              "deduplicate_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "readOnly": true,
                                "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                                "example": "15:1492548073"
                              },
                              "name": {
                                "type": "string",
                                "description": "The name of the variant, if it exists.",
                                "readOnly": true,
                                "example": "newsletter variant A"
                              },
                              "layout": {
                                "type": "string",
                                "description": "The layout used for the variant, if it exists.",
                                "example": "<html><body>{{ content }}</body></html>",
                                "readOnly": true
                              },
                              "body": {
                                "type": "string",
                                "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                                "example": "<strong>Hello from the API</strong>"
                              },
                              "body_amp": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                              },
                              "language": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                "example": "fr",
                                "readOnly": true
                              },
                              "type": {
                                "x-scalar-ignore": true,
                                "description": "The type of message/action.",
                                "type": "string",
                                "enum": [
                                  "email",
                                  "webhook",
                                  "twilio",
                                  "slack",
                                  "push",
                                  "in_app",
                                  "whatsapp"
                                ],
                                "readOnly": true,
                                "example": "email"
                              },
                              "from": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                "readOnly": true,
                                "example": "sentFrom@example.com"
                              },
                              "from_id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                "example": 1
                              },
                              "reply_to": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The address that receives replies for the message, if applicable.",
                                "readOnly": true,
                                "example": "replyto@example.com"
                              },
                              "reply_to_id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                "nullable": true,
                                "example": 38
                              },
                              "preprocessor": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                "enum": [
                                  "premailer"
                                ],
                                "readOnly": true
                              },
                              "recipient": {
                                "x-scalar-ignore": true,
                                "description": "The recipient address for an action.",
                                "type": "string",
                                "example": "{{customer.email}}"
                              },
                              "subject": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The subject line for an `email` action.",
                                "example": "Did you get that thing I sent you?"
                              },
                              "bcc": {
                                "x-scalar-ignore": true,
                                "readOnly": true,
                                "description": "The blind-copy address(es) for this action.",
                                "type": "string"
                              },
                              "fake_bcc": {
                                "x-scalar-ignore": true,
                                "readOnly": true,
                                "type": "boolean",
                                "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                              },
                              "preheader_text": {
                                "x-scalar-ignore": true,
                                "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",
                            "properties": {
                              "headers": {
                                "x-scalar-ignore": true,
                                "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                "type": "string",
                                "format": "json",
                                "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The newsletter you requested does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/contents"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/contents\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/contents\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D/contents\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/contents\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}/messages": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "metric",
          "in": "query",
          "required": false,
          "description": "Determines the metric(s) you want to return.",
          "schema": {
            "type": "string",
            "enum": [
              "attempted",
              "sent",
              "delivered",
              "opened",
              "clicked",
              "converted",
              "bounced",
              "spammed",
              "unsubscribed",
              "dropped",
              "failed",
              "undeliverable"
            ]
          }
        },
        {
          "name": "start_ts",
          "in": "query",
          "required": false,
          "description": "The beginning timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        },
        {
          "name": "end_ts",
          "in": "query",
          "required": false,
          "description": "The ending timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        }
      ],
      "get": {
        "summary": "Get newsletter message metadata",
        "operationId": "getNewsletterMsgMeta",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about the deliveries (instances of messages sent to individual people) sent from a newsletter. Provide query parameters to refine the metrics you want to return.\nUse the `start_ts` and `end_ts` to find messages within a time range. If your request doesn't include `start_ts` and `end_ts` parameters, we'll return up to 6 months of results beginning with the first delivery generated from the newsletter. If your `start_ts` and `end_ts` range is more than 12 months, we'll return 12 months of data from the most recent timestamp in your request. Timestamps reflect when deliveries were created in our system, not when they were actually sent to recipients. There may be a delay between creation and sending.",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `messages`. Each object represents a different message in your newsletter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "messages": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "description": "Describes an individual message delivery. The object contains keys for all possible parents of the message (`newsletter_id`, `broadcast_id`, etc) but only the parents of the delivery are populated. Other parent IDs are null.",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a delivery—the instance of a message intended for an individual recipient.",
                            "type": "string",
                            "readOnly": true,
                            "example": "dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek="
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "message_template_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier of the message template used to create a message.",
                            "type": "integer",
                            "readOnly": true,
                            "deprecated": true
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "customer_identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                            "required": [
                              "email",
                              "id",
                              "cio_id"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "nullable": true,
                                "format": "email",
                                "description": "A person's email address, if set.",
                                "example": "test@example.com"
                              },
                              "id": {
                                "type": "string",
                                "nullable": true,
                                "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                                "example": 2
                              },
                              "cio_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                "example": "a3000001"
                              }
                            }
                          },
                          "recipient": {
                            "x-scalar-ignore": true,
                            "description": "The recipient address for an action.",
                            "type": "string",
                            "example": "{{customer.email}}"
                          },
                          "subject": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The subject line for an `email` action.",
                            "example": "Did you get that thing I sent you?"
                          },
                          "metrics": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Metrics for an individual instance of a message; each item in the object represents the timestamp when a message achieved a particular metric. This object only contains metrics that have been recorded.",
                            "properties": {
                              "bounced": {
                                "type": "integer",
                                "description": "The timestamp when the message `bounced`."
                              },
                              "clicked": {
                                "type": "integer",
                                "description": "The timestamp when the message was `clicked`."
                              },
                              "human_clicked": {
                                "type": "integer",
                                "description": "The number of `clicked` messages excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                              },
                              "prefetch_clicked": {
                                "type": "integer",
                                "description": "The number of `clicked` messages attributed to machines. This metric is reliable starting April 20, 2025."
                              },
                              "converted": {
                                "type": "integer",
                                "description": "The timestamp when the message was `converted`."
                              },
                              "created": {
                                "type": "integer",
                                "description": "The timestamp when the message was `created`."
                              },
                              "delivered": {
                                "type": "integer",
                                "description": "The timestamp when the message was `delivered`."
                              },
                              "drafted": {
                                "type": "integer",
                                "description": "The timestamp when the message was `drafted`."
                              },
                              "dropped": {
                                "type": "integer",
                                "description": "The timestamp when the message was `dropped`."
                              },
                              "failed": {
                                "type": "integer",
                                "description": "The timestamp when the message `failed`."
                              },
                              "opened": {
                                "type": "integer",
                                "description": "The timestamp when the message was `opened`."
                              },
                              "human_opened": {
                                "type": "integer",
                                "description": "The number of `opened` messages excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                              },
                              "prefetch_opened": {
                                "type": "integer",
                                "description": "The number of `opened` messages attributed to machines. This metric is reliable starting March 20, 2025."
                              },
                              "sent": {
                                "type": "integer",
                                "description": "The timestamp when the message was `sent`."
                              },
                              "spammed": {
                                "type": "integer",
                                "description": "The timestamp when the message was marked as spam."
                              },
                              "undeliverable": {
                                "type": "integer",
                                "description": "The timestamp when the message became `undeliverable`."
                              },
                              "unsubscribed": {
                                "type": "integer",
                                "description": "The timestamp when a person unsubscribed based on this message."
                              }
                            }
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "failure_message": {
                            "type": "string",
                            "description": "Explains why a message failed, if applicable.",
                            "nullable": true
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a message in a newsletter. Newsletters can have multiple content IDs (for multi-language messages or A/B tests).",
                            "type": "integer",
                            "readOnly": true,
                            "example": 1
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          },
                          "type": {
                            "x-scalar-ignore": true,
                            "description": "The type of message/action.",
                            "type": "string",
                            "enum": [
                              "email",
                              "webhook",
                              "twilio",
                              "slack",
                              "push",
                              "in_app",
                              "whatsapp"
                            ],
                            "readOnly": true,
                            "example": "email"
                          },
                          "forgotten": {
                            "type": "boolean",
                            "description": "If true message contents are not retained by Customer.io."
                          }
                        },
                        "example": {
                          "id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=",
                          "deduplicate_id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=:1619137768",
                          "msg_template_id": 43,
                          "action_id": 215,
                          "parent_action_id": null,
                          "customer_id": null,
                          "recipient": "person@example.com",
                          "subject": "Did you get that thing I sent you?",
                          "metrics": {
                            "delivered": 1619137768,
                            "sent": 1619137768
                          },
                          "created": 1619137767,
                          "failure_message": null,
                          "newsletter_id": null,
                          "content_id": null,
                          "campaign_id": 23,
                          "broadcast_id": null,
                          "trigger_event_id": null,
                          "type": "email",
                          "forgotten": false
                        }
                      },
                      "example": [
                        {
                          "id": "dgOq6QWq6QUDAAF22PaOyFVqVxHY3rI5fsg=",
                          "deduplicate_id": "dgOq6QWq6QUDAAF22PaOyFVqVxHY3rI5fsg=:1609957872",
                          "msg_template_id": 178,
                          "action_id": null,
                          "customer_id": "1a55d8d1-b13d-4f1f-858f-a93ef21e3a7d",
                          "recipient": "person@email.com",
                          "subject": "Did you get that thing I sent you?",
                          "metrics": {
                            "delivered": 1609957872,
                            "sent": 1609957832
                          },
                          "created": 1609957805,
                          "failure_message": null,
                          "newsletter_id": 72,
                          "content_id": 178,
                          "campaign_id": null,
                          "broadcast_id": null,
                          "type": "email",
                          "forgotten": false
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The newsletter you requested does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/messages"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/messages\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/messages\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D/messages\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/messages\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}/contents/{content_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "content_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a message in a newsletter. If your newsletter is an A/B test or has multiple languages, you may have multiple `content_id` values for your newsletter. You can [get a newsletter](#operation/getNewsletters) to find your newsletter's content IDs.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "Get a newsletter variant",
        "operationId": "getNewsletterVariant",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about a specific variant of a newsletter, where a variant is either a language in a multi-language newsletter or a part of an A/B test.",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns newsletter `content`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "x-scalar-ignore": true,
                      "allOf": [
                        {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.",
                              "readOnly": true
                            },
                            "newsletter_id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a newsletter.",
                              "type": "integer",
                              "example": 10
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "type": "string",
                              "description": "The name of the variant, if it exists.",
                              "readOnly": true,
                              "example": "newsletter variant A"
                            },
                            "layout": {
                              "type": "string",
                              "description": "The layout used for the variant, if it exists.",
                              "example": "<html><body>{{ content }}</body></html>",
                              "readOnly": true
                            },
                            "body": {
                              "type": "string",
                              "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                              "example": "<strong>Hello from the API</strong>"
                            },
                            "body_amp": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                            },
                            "language": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                              "example": "fr",
                              "readOnly": true
                            },
                            "type": {
                              "x-scalar-ignore": true,
                              "description": "The type of message/action.",
                              "type": "string",
                              "enum": [
                                "email",
                                "webhook",
                                "twilio",
                                "slack",
                                "push",
                                "in_app",
                                "whatsapp"
                              ],
                              "readOnly": true,
                              "example": "email"
                            },
                            "from": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that the message is from, relevant if the action `type` is `email`.",
                              "readOnly": true,
                              "example": "sentFrom@example.com"
                            },
                            "from_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "example": 1
                            },
                            "reply_to": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that receives replies for the message, if applicable.",
                              "readOnly": true,
                              "example": "replyto@example.com"
                            },
                            "reply_to_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "nullable": true,
                              "example": 38
                            },
                            "preprocessor": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                              "enum": [
                                "premailer"
                              ],
                              "readOnly": true
                            },
                            "recipient": {
                              "x-scalar-ignore": true,
                              "description": "The recipient address for an action.",
                              "type": "string",
                              "example": "{{customer.email}}"
                            },
                            "subject": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The subject line for an `email` action.",
                              "example": "Did you get that thing I sent you?"
                            },
                            "bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "description": "The blind-copy address(es) for this action.",
                              "type": "string"
                            },
                            "fake_bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "type": "boolean",
                              "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                            },
                            "preheader_text": {
                              "x-scalar-ignore": true,
                              "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",
                          "properties": {
                            "headers": {
                              "x-scalar-ignore": true,
                              "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                              "type": "string",
                              "format": "json",
                              "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The newsletter or variant does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/contents/{content_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "summary": "Update a newsletter variant",
        "operationId": "updateNewsletterVariant",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Update the contents of a newsletter variant (a specific language of your message or a part of an A/B test), including the body of a newsletter.",
        "tags": [
          "Newsletters"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "type": "object",
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.",
                        "readOnly": true
                      },
                      "newsletter_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter.",
                        "type": "integer",
                        "example": 10
                      },
                      "deduplicate_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "readOnly": true,
                        "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                        "example": "15:1492548073"
                      },
                      "name": {
                        "type": "string",
                        "description": "The name of the variant, if it exists.",
                        "readOnly": true,
                        "example": "newsletter variant A"
                      },
                      "layout": {
                        "type": "string",
                        "description": "The layout used for the variant, if it exists.",
                        "example": "<html><body>{{ content }}</body></html>",
                        "readOnly": true
                      },
                      "body": {
                        "type": "string",
                        "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                        "example": "<strong>Hello from the API</strong>"
                      },
                      "body_amp": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                      },
                      "language": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                        "example": "fr",
                        "readOnly": true
                      },
                      "type": {
                        "x-scalar-ignore": true,
                        "description": "The type of message/action.",
                        "type": "string",
                        "enum": [
                          "email",
                          "webhook",
                          "twilio",
                          "slack",
                          "push",
                          "in_app",
                          "whatsapp"
                        ],
                        "readOnly": true,
                        "example": "email"
                      },
                      "from": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The address that the message is from, relevant if the action `type` is `email`.",
                        "readOnly": true,
                        "example": "sentFrom@example.com"
                      },
                      "from_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                        "example": 1
                      },
                      "reply_to": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The address that receives replies for the message, if applicable.",
                        "readOnly": true,
                        "example": "replyto@example.com"
                      },
                      "reply_to_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                        "nullable": true,
                        "example": 38
                      },
                      "preprocessor": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                        "enum": [
                          "premailer"
                        ],
                        "readOnly": true
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "{{customer.email}}"
                      },
                      "subject": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The subject line for an `email` action.",
                        "example": "Did you get that thing I sent you?"
                      },
                      "bcc": {
                        "x-scalar-ignore": true,
                        "readOnly": true,
                        "description": "The blind-copy address(es) for this action.",
                        "type": "string"
                      },
                      "fake_bcc": {
                        "x-scalar-ignore": true,
                        "readOnly": true,
                        "type": "boolean",
                        "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                      },
                      "preheader_text": {
                        "x-scalar-ignore": true,
                        "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",
                    "properties": {
                      "headers": {
                        "x-scalar-ignore": true,
                        "description": "An array of objects containing headers, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "The name of the header."
                            },
                            "value": {
                              "type": "string",
                              "description": "The value of the header."
                            }
                          },
                          "example": [
                            {
                              "name": "X-Mailgun-Tag",
                              "value": "my-cool-tag"
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated newsletter variant.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "x-scalar-ignore": true,
                      "allOf": [
                        {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.",
                              "readOnly": true
                            },
                            "newsletter_id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a newsletter.",
                              "type": "integer",
                              "example": 10
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "type": "string",
                              "description": "The name of the variant, if it exists.",
                              "readOnly": true,
                              "example": "newsletter variant A"
                            },
                            "layout": {
                              "type": "string",
                              "description": "The layout used for the variant, if it exists.",
                              "example": "<html><body>{{ content }}</body></html>",
                              "readOnly": true
                            },
                            "body": {
                              "type": "string",
                              "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                              "example": "<strong>Hello from the API</strong>"
                            },
                            "body_amp": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                            },
                            "language": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                              "example": "fr",
                              "readOnly": true
                            },
                            "type": {
                              "x-scalar-ignore": true,
                              "description": "The type of message/action.",
                              "type": "string",
                              "enum": [
                                "email",
                                "webhook",
                                "twilio",
                                "slack",
                                "push",
                                "in_app",
                                "whatsapp"
                              ],
                              "readOnly": true,
                              "example": "email"
                            },
                            "from": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that the message is from, relevant if the action `type` is `email`.",
                              "readOnly": true,
                              "example": "sentFrom@example.com"
                            },
                            "from_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "example": 1
                            },
                            "reply_to": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that receives replies for the message, if applicable.",
                              "readOnly": true,
                              "example": "replyto@example.com"
                            },
                            "reply_to_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "nullable": true,
                              "example": 38
                            },
                            "preprocessor": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                              "enum": [
                                "premailer"
                              ],
                              "readOnly": true
                            },
                            "recipient": {
                              "x-scalar-ignore": true,
                              "description": "The recipient address for an action.",
                              "type": "string",
                              "example": "{{customer.email}}"
                            },
                            "subject": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The subject line for an `email` action.",
                              "example": "Did you get that thing I sent you?"
                            },
                            "bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "description": "The blind-copy address(es) for this action.",
                              "type": "string"
                            },
                            "fake_bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "type": "boolean",
                              "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                            },
                            "preheader_text": {
                              "x-scalar-ignore": true,
                              "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",
                          "properties": {
                            "headers": {
                              "x-scalar-ignore": true,
                              "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                              "type": "string",
                              "format": "json",
                              "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is malformed."
          },
          "404": {
            "description": "The newsletter or variant does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/contents/{content_id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"newsletter_id\":10,\"body\":\"<strong>Hello from the API</strong>\",\"body_amp\":\"string\",\"from_id\":1,\"reply_to_id\":38,\"recipient\":\"{{customer.email}}\",\"subject\":\"Did you get that thing I sent you?\",\"preheader_text\":\"string\",\"headers\":[[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"}]]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  newsletter_id: 10,\n  body: '<strong>Hello from the API</strong>',\n  body_amp: 'string',\n  from_id: 1,\n  reply_to_id: 38,\n  recipient: '{{customer.email}}',\n  subject: 'Did you get that thing I sent you?',\n  preheader_text: 'string',\n  headers: [[{name: 'X-Mailgun-Tag', value: 'my-cool-tag'}]]\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"newsletter_id\\\":10,\\\"body\\\":\\\"<strong>Hello from the API</strong>\\\",\\\"body_amp\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"newsletter_id\\\":10,\\\"body\\\":\\\"<strong>Hello from the API</strong>\\\",\\\"body_amp\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"newsletter_id\\\":10,\\\"body\\\":\\\"<strong>Hello from the API</strong>\\\",\\\"body_amp\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}/language/{language}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "language",
          "in": "path",
          "required": true,
          "description": "A [language tag](/journeys/unsubscribe-faqs/#currently-supported-languages) of a language variant. If you don't provide a language (an empty string), we'll use your default language. If the language variant does not exist, we'll return an error.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Get a translation of a newsletter variant",
        "operationId": "getNewsletterVariantTranslation",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about a specific language variant of a newsletter. If your newsletter includes A/B tests, use [Get a translation in a newsletter test group](/api/app/#operation/getNewsletterVariantTranslationTest).",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns newsletter `content` for a language variant.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "x-scalar-ignore": true,
                      "allOf": [
                        {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.",
                              "readOnly": true
                            },
                            "newsletter_id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a newsletter.",
                              "type": "integer",
                              "example": 10
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "type": "string",
                              "description": "The name of the variant, if it exists.",
                              "readOnly": true,
                              "example": "newsletter variant A"
                            },
                            "layout": {
                              "type": "string",
                              "description": "The layout used for the variant, if it exists.",
                              "example": "<html><body>{{ content }}</body></html>",
                              "readOnly": true
                            },
                            "body": {
                              "type": "string",
                              "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                              "example": "<strong>Hello from the API</strong>"
                            },
                            "body_amp": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                            },
                            "language": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                              "example": "fr",
                              "readOnly": true
                            },
                            "type": {
                              "x-scalar-ignore": true,
                              "description": "The type of message/action.",
                              "type": "string",
                              "enum": [
                                "email",
                                "webhook",
                                "twilio",
                                "slack",
                                "push",
                                "in_app",
                                "whatsapp"
                              ],
                              "readOnly": true,
                              "example": "email"
                            },
                            "from": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that the message is from, relevant if the action `type` is `email`.",
                              "readOnly": true,
                              "example": "sentFrom@example.com"
                            },
                            "from_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "example": 1
                            },
                            "reply_to": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that receives replies for the message, if applicable.",
                              "readOnly": true,
                              "example": "replyto@example.com"
                            },
                            "reply_to_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "nullable": true,
                              "example": 38
                            },
                            "preprocessor": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                              "enum": [
                                "premailer"
                              ],
                              "readOnly": true
                            },
                            "recipient": {
                              "x-scalar-ignore": true,
                              "description": "The recipient address for an action.",
                              "type": "string",
                              "example": "{{customer.email}}"
                            },
                            "subject": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The subject line for an `email` action.",
                              "example": "Did you get that thing I sent you?"
                            },
                            "bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "description": "The blind-copy address(es) for this action.",
                              "type": "string"
                            },
                            "fake_bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "type": "boolean",
                              "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                            },
                            "preheader_text": {
                              "x-scalar-ignore": true,
                              "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",
                          "properties": {
                            "headers": {
                              "x-scalar-ignore": true,
                              "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                              "type": "string",
                              "format": "json",
                              "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `language` does not exist."
          },
          "404": {
            "description": "The newsletter or variant does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/language/{language}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/language/%7Blanguage%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/language/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D/language/%7Blanguage%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/language/%7Blanguage%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "summary": "Update a translation of a newsletter variant",
        "operationId": "updateNewsletterVariantTranslation",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Update the translation of a newsletter variant. If your newsletter includes A/B tests, use [Update a translation in a newsletter test group](/api/app/#operation/updateNewsletterTestTranslation).",
        "tags": [
          "Newsletters"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "type": "object",
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.",
                        "readOnly": true
                      },
                      "newsletter_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter.",
                        "type": "integer",
                        "example": 10
                      },
                      "deduplicate_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "readOnly": true,
                        "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                        "example": "15:1492548073"
                      },
                      "name": {
                        "type": "string",
                        "description": "The name of the variant, if it exists.",
                        "readOnly": true,
                        "example": "newsletter variant A"
                      },
                      "layout": {
                        "type": "string",
                        "description": "The layout used for the variant, if it exists.",
                        "example": "<html><body>{{ content }}</body></html>",
                        "readOnly": true
                      },
                      "body": {
                        "type": "string",
                        "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                        "example": "<strong>Hello from the API</strong>"
                      },
                      "body_amp": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                      },
                      "language": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                        "example": "fr",
                        "readOnly": true
                      },
                      "type": {
                        "x-scalar-ignore": true,
                        "description": "The type of message/action.",
                        "type": "string",
                        "enum": [
                          "email",
                          "webhook",
                          "twilio",
                          "slack",
                          "push",
                          "in_app",
                          "whatsapp"
                        ],
                        "readOnly": true,
                        "example": "email"
                      },
                      "from": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The address that the message is from, relevant if the action `type` is `email`.",
                        "readOnly": true,
                        "example": "sentFrom@example.com"
                      },
                      "from_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                        "example": 1
                      },
                      "reply_to": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The address that receives replies for the message, if applicable.",
                        "readOnly": true,
                        "example": "replyto@example.com"
                      },
                      "reply_to_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                        "nullable": true,
                        "example": 38
                      },
                      "preprocessor": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                        "enum": [
                          "premailer"
                        ],
                        "readOnly": true
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "{{customer.email}}"
                      },
                      "subject": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The subject line for an `email` action.",
                        "example": "Did you get that thing I sent you?"
                      },
                      "bcc": {
                        "x-scalar-ignore": true,
                        "readOnly": true,
                        "description": "The blind-copy address(es) for this action.",
                        "type": "string"
                      },
                      "fake_bcc": {
                        "x-scalar-ignore": true,
                        "readOnly": true,
                        "type": "boolean",
                        "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                      },
                      "preheader_text": {
                        "x-scalar-ignore": true,
                        "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",
                    "properties": {
                      "headers": {
                        "x-scalar-ignore": true,
                        "description": "An array of objects containing headers, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "The name of the header."
                            },
                            "value": {
                              "type": "string",
                              "description": "The value of the header."
                            }
                          },
                          "example": [
                            {
                              "name": "X-Mailgun-Tag",
                              "value": "my-cool-tag"
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated newsletter variant.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "x-scalar-ignore": true,
                      "allOf": [
                        {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.",
                              "readOnly": true
                            },
                            "newsletter_id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a newsletter.",
                              "type": "integer",
                              "example": 10
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "type": "string",
                              "description": "The name of the variant, if it exists.",
                              "readOnly": true,
                              "example": "newsletter variant A"
                            },
                            "layout": {
                              "type": "string",
                              "description": "The layout used for the variant, if it exists.",
                              "example": "<html><body>{{ content }}</body></html>",
                              "readOnly": true
                            },
                            "body": {
                              "type": "string",
                              "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                              "example": "<strong>Hello from the API</strong>"
                            },
                            "body_amp": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                            },
                            "language": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                              "example": "fr",
                              "readOnly": true
                            },
                            "type": {
                              "x-scalar-ignore": true,
                              "description": "The type of message/action.",
                              "type": "string",
                              "enum": [
                                "email",
                                "webhook",
                                "twilio",
                                "slack",
                                "push",
                                "in_app",
                                "whatsapp"
                              ],
                              "readOnly": true,
                              "example": "email"
                            },
                            "from": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that the message is from, relevant if the action `type` is `email`.",
                              "readOnly": true,
                              "example": "sentFrom@example.com"
                            },
                            "from_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "example": 1
                            },
                            "reply_to": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that receives replies for the message, if applicable.",
                              "readOnly": true,
                              "example": "replyto@example.com"
                            },
                            "reply_to_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "nullable": true,
                              "example": 38
                            },
                            "preprocessor": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                              "enum": [
                                "premailer"
                              ],
                              "readOnly": true
                            },
                            "recipient": {
                              "x-scalar-ignore": true,
                              "description": "The recipient address for an action.",
                              "type": "string",
                              "example": "{{customer.email}}"
                            },
                            "subject": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The subject line for an `email` action.",
                              "example": "Did you get that thing I sent you?"
                            },
                            "bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "description": "The blind-copy address(es) for this action.",
                              "type": "string"
                            },
                            "fake_bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "type": "boolean",
                              "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                            },
                            "preheader_text": {
                              "x-scalar-ignore": true,
                              "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",
                          "properties": {
                            "headers": {
                              "x-scalar-ignore": true,
                              "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                              "type": "string",
                              "format": "json",
                              "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `language` does not exist."
          },
          "404": {
            "description": "The newsletter or variant does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/language/{language} \\\n  --header 'content-type: application/json' \\\n  --data '{\"newsletter_id\":10,\"body\":\"<strong>Hello from the API</strong>\",\"body_amp\":\"string\",\"from_id\":1,\"reply_to_id\":38,\"recipient\":\"{{customer.email}}\",\"subject\":\"Did you get that thing I sent you?\",\"preheader_text\":\"string\",\"headers\":[[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"}]]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/language/%7Blanguage%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  newsletter_id: 10,\n  body: '<strong>Hello from the API</strong>',\n  body_amp: 'string',\n  from_id: 1,\n  reply_to_id: 38,\n  recipient: '{{customer.email}}',\n  subject: 'Did you get that thing I sent you?',\n  preheader_text: 'string',\n  headers: [[{name: 'X-Mailgun-Tag', value: 'my-cool-tag'}]]\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/language/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"newsletter_id\\\":10,\\\"body\\\":\\\"<strong>Hello from the API</strong>\\\",\\\"body_amp\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"newsletter_id\\\":10,\\\"body\\\":\\\"<strong>Hello from the API</strong>\\\",\\\"body_amp\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/newsletters/%7Bnewsletter_id%7D/language/%7Blanguage%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/language/%7Blanguage%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"newsletter_id\\\":10,\\\"body\\\":\\\"<strong>Hello from the API</strong>\\\",\\\"body_amp\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}/test_groups": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "List A/B test groups in a newsletter",
        "operationId": "getNewsletterTestGroups",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about each test group in a newsletter, including content ids for each group.",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns metadata for each test group in a newsletter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "test_groups": {
                      "type": "array",
                      "description": "Each object represents one of the test groups.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "description": "The ID of the A/B test group."
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the A/B test group."
                          },
                          "label": {
                            "type": "string",
                            "description": "The name of the variant."
                          },
                          "winner": {
                            "type": "boolean",
                            "description": "Whether this variant is the winner of the test."
                          },
                          "content_ids": {
                            "description": "A list of content_ids for each variant in the test group.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "test_groups": [
                      {
                        "id": 0,
                        "name": "A",
                        "label": "test 1",
                        "winner": false,
                        "content_ids": [
                          25,
                          26
                        ]
                      },
                      {
                        "id": 2,
                        "name": "B",
                        "label": "test 2",
                        "winner": false,
                        "content_ids": [
                          27,
                          28
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "404": {
            "description": "The newsletter or variant does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/test_groups"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/test_groups\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/test_groups\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D/test_groups\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/test_groups\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}/test_group/{test_group_id}/language/{language}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "test_group_id",
          "in": "path",
          "description": "The ID of the A/B test group.",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "language",
          "in": "path",
          "required": true,
          "description": "A [language tag](/journeys/unsubscribe-faqs/#currently-supported-languages) of a language variant. If you don't provide a language (an empty string), we'll use your default language. If the language variant does not exist, we'll return an error.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Get a translation in a newsletter test group",
        "operationId": "getNewsletterVariantTranslationTest",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about a specific language variant of a newsletter in an A/B test group. You can retrieve `test_group_ids` from [Get variants in a newsletter test group](/api/app/#operation/getNewsletterVariantTest).",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns newsletter `content` for a language variant in a test group.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "x-scalar-ignore": true,
                      "allOf": [
                        {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.",
                              "readOnly": true
                            },
                            "newsletter_id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a newsletter.",
                              "type": "integer",
                              "example": 10
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "type": "string",
                              "description": "The name of the variant, if it exists.",
                              "readOnly": true,
                              "example": "newsletter variant A"
                            },
                            "layout": {
                              "type": "string",
                              "description": "The layout used for the variant, if it exists.",
                              "example": "<html><body>{{ content }}</body></html>",
                              "readOnly": true
                            },
                            "body": {
                              "type": "string",
                              "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                              "example": "<strong>Hello from the API</strong>"
                            },
                            "body_amp": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                            },
                            "language": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                              "example": "fr",
                              "readOnly": true
                            },
                            "type": {
                              "x-scalar-ignore": true,
                              "description": "The type of message/action.",
                              "type": "string",
                              "enum": [
                                "email",
                                "webhook",
                                "twilio",
                                "slack",
                                "push",
                                "in_app",
                                "whatsapp"
                              ],
                              "readOnly": true,
                              "example": "email"
                            },
                            "from": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that the message is from, relevant if the action `type` is `email`.",
                              "readOnly": true,
                              "example": "sentFrom@example.com"
                            },
                            "from_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "example": 1
                            },
                            "reply_to": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that receives replies for the message, if applicable.",
                              "readOnly": true,
                              "example": "replyto@example.com"
                            },
                            "reply_to_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "nullable": true,
                              "example": 38
                            },
                            "preprocessor": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                              "enum": [
                                "premailer"
                              ],
                              "readOnly": true
                            },
                            "recipient": {
                              "x-scalar-ignore": true,
                              "description": "The recipient address for an action.",
                              "type": "string",
                              "example": "{{customer.email}}"
                            },
                            "subject": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The subject line for an `email` action.",
                              "example": "Did you get that thing I sent you?"
                            },
                            "bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "description": "The blind-copy address(es) for this action.",
                              "type": "string"
                            },
                            "fake_bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "type": "boolean",
                              "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                            },
                            "preheader_text": {
                              "x-scalar-ignore": true,
                              "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",
                          "properties": {
                            "headers": {
                              "x-scalar-ignore": true,
                              "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                              "type": "string",
                              "format": "json",
                              "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `language` does not exist."
          },
          "404": {
            "description": "The newsletter or variant does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/test_group/{test_group_id}/language/{language}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/test_group/%7Btest_group_id%7D/language/%7Blanguage%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/test_group/%7Btest_group_id%7D/language/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D/test_group/%7Btest_group_id%7D/language/%7Blanguage%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/test_group/%7Btest_group_id%7D/language/%7Blanguage%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "summary": "Update a translation in a newsletter test group",
        "operationId": "updateNewsletterTestTranslation",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Update the translation of a newsletter variant in an A/B test. You can retrieve a list of `test_group_ids` from [Get variants in a newsletter test group](/api/app/#operation/getNewsletterVariantTest).",
        "tags": [
          "Newsletters"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "type": "object",
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.",
                        "readOnly": true
                      },
                      "newsletter_id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for a newsletter.",
                        "type": "integer",
                        "example": 10
                      },
                      "deduplicate_id": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "readOnly": true,
                        "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                        "example": "15:1492548073"
                      },
                      "name": {
                        "type": "string",
                        "description": "The name of the variant, if it exists.",
                        "readOnly": true,
                        "example": "newsletter variant A"
                      },
                      "layout": {
                        "type": "string",
                        "description": "The layout used for the variant, if it exists.",
                        "example": "<html><body>{{ content }}</body></html>",
                        "readOnly": true
                      },
                      "body": {
                        "type": "string",
                        "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                        "example": "<strong>Hello from the API</strong>"
                      },
                      "body_amp": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                      },
                      "language": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                        "example": "fr",
                        "readOnly": true
                      },
                      "type": {
                        "x-scalar-ignore": true,
                        "description": "The type of message/action.",
                        "type": "string",
                        "enum": [
                          "email",
                          "webhook",
                          "twilio",
                          "slack",
                          "push",
                          "in_app",
                          "whatsapp"
                        ],
                        "readOnly": true,
                        "example": "email"
                      },
                      "from": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The address that the message is from, relevant if the action `type` is `email`.",
                        "readOnly": true,
                        "example": "sentFrom@example.com"
                      },
                      "from_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                        "example": 1
                      },
                      "reply_to": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The address that receives replies for the message, if applicable.",
                        "readOnly": true,
                        "example": "replyto@example.com"
                      },
                      "reply_to_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                        "nullable": true,
                        "example": 38
                      },
                      "preprocessor": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                        "enum": [
                          "premailer"
                        ],
                        "readOnly": true
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "{{customer.email}}"
                      },
                      "subject": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The subject line for an `email` action.",
                        "example": "Did you get that thing I sent you?"
                      },
                      "bcc": {
                        "x-scalar-ignore": true,
                        "readOnly": true,
                        "description": "The blind-copy address(es) for this action.",
                        "type": "string"
                      },
                      "fake_bcc": {
                        "x-scalar-ignore": true,
                        "readOnly": true,
                        "type": "boolean",
                        "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                      },
                      "preheader_text": {
                        "x-scalar-ignore": true,
                        "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",
                    "properties": {
                      "headers": {
                        "x-scalar-ignore": true,
                        "description": "An array of objects containing headers, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "The name of the header."
                            },
                            "value": {
                              "type": "string",
                              "description": "The value of the header."
                            }
                          },
                          "example": [
                            {
                              "name": "X-Mailgun-Tag",
                              "value": "my-cool-tag"
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated newsletter variant.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "x-scalar-ignore": true,
                      "allOf": [
                        {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of a newsletter variant—a language in a multi-language newsletter or a test in an A/B test.",
                              "readOnly": true
                            },
                            "newsletter_id": {
                              "x-scalar-ignore": true,
                              "description": "The identifier for a newsletter.",
                              "type": "integer",
                              "example": 10
                            },
                            "deduplicate_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "readOnly": true,
                              "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                              "example": "15:1492548073"
                            },
                            "name": {
                              "type": "string",
                              "description": "The name of the variant, if it exists.",
                              "readOnly": true,
                              "example": "newsletter variant A"
                            },
                            "layout": {
                              "type": "string",
                              "description": "The layout used for the variant, if it exists.",
                              "example": "<html><body>{{ content }}</body></html>",
                              "readOnly": true
                            },
                            "body": {
                              "type": "string",
                              "description": "The body of the variant. You cannot modify the body if you created it with our drag-and-drop editor.",
                              "example": "<strong>Hello from the API</strong>"
                            },
                            "body_amp": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "If your message is an email, this is the AMP-enabled body of your message. If your recipient's email client doesn't support AMP, the `body` represents your fallback message."
                            },
                            "language": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                              "example": "fr",
                              "readOnly": true
                            },
                            "type": {
                              "x-scalar-ignore": true,
                              "description": "The type of message/action.",
                              "type": "string",
                              "enum": [
                                "email",
                                "webhook",
                                "twilio",
                                "slack",
                                "push",
                                "in_app",
                                "whatsapp"
                              ],
                              "readOnly": true,
                              "example": "email"
                            },
                            "from": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that the message is from, relevant if the action `type` is `email`.",
                              "readOnly": true,
                              "example": "sentFrom@example.com"
                            },
                            "from_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "example": 1
                            },
                            "reply_to": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The address that receives replies for the message, if applicable.",
                              "readOnly": true,
                              "example": "replyto@example.com"
                            },
                            "reply_to_id": {
                              "x-scalar-ignore": true,
                              "type": "integer",
                              "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                              "nullable": true,
                              "example": 38
                            },
                            "preprocessor": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                              "enum": [
                                "premailer"
                              ],
                              "readOnly": true
                            },
                            "recipient": {
                              "x-scalar-ignore": true,
                              "description": "The recipient address for an action.",
                              "type": "string",
                              "example": "{{customer.email}}"
                            },
                            "subject": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The subject line for an `email` action.",
                              "example": "Did you get that thing I sent you?"
                            },
                            "bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "description": "The blind-copy address(es) for this action.",
                              "type": "string"
                            },
                            "fake_bcc": {
                              "x-scalar-ignore": true,
                              "readOnly": true,
                              "type": "boolean",
                              "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                            },
                            "preheader_text": {
                              "x-scalar-ignore": true,
                              "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",
                          "properties": {
                            "headers": {
                              "x-scalar-ignore": true,
                              "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                              "type": "string",
                              "format": "json",
                              "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `language` does not exist."
          },
          "404": {
            "description": "The newsletter or variant does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/test_group/{test_group_id}/language/{language} \\\n  --header 'content-type: application/json' \\\n  --data '{\"newsletter_id\":10,\"body\":\"<strong>Hello from the API</strong>\",\"body_amp\":\"string\",\"from_id\":1,\"reply_to_id\":38,\"recipient\":\"{{customer.email}}\",\"subject\":\"Did you get that thing I sent you?\",\"preheader_text\":\"string\",\"headers\":[[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"}]]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/test_group/%7Btest_group_id%7D/language/%7Blanguage%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  newsletter_id: 10,\n  body: '<strong>Hello from the API</strong>',\n  body_amp: 'string',\n  from_id: 1,\n  reply_to_id: 38,\n  recipient: '{{customer.email}}',\n  subject: 'Did you get that thing I sent you?',\n  preheader_text: 'string',\n  headers: [[{name: 'X-Mailgun-Tag', value: 'my-cool-tag'}]]\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/test_group/%7Btest_group_id%7D/language/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"newsletter_id\\\":10,\\\"body\\\":\\\"<strong>Hello from the API</strong>\\\",\\\"body_amp\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"newsletter_id\\\":10,\\\"body\\\":\\\"<strong>Hello from the API</strong>\\\",\\\"body_amp\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/newsletters/%7Bnewsletter_id%7D/test_group/%7Btest_group_id%7D/language/%7Blanguage%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/test_group/%7Btest_group_id%7D/language/%7Blanguage%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"newsletter_id\\\":10,\\\"body\\\":\\\"<strong>Hello from the API</strong>\\\",\\\"body_amp\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}/contents/{content_id}/metrics": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "content_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a message in a newsletter. If your newsletter is an A/B test or has multiple languages, you may have multiple `content_id` values for your newsletter. You can [get a newsletter](#operation/getNewsletters) to find your newsletter's content IDs.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        }
      ],
      "get": {
        "summary": "Get metrics for a variant",
        "operationId": "getVariantMetrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a metrics for an individual newsletter variant—either an individual language in a multi-language newsletter or a message in an A/B test. This endpoint returns metrics both in total and in `steps` (days, weeks, etc) over a `period` of time. Stepped `series` metrics are arranged from oldest to newest (i.e. the 0-index for any result is the oldest period/step).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns newsletter variant metrics by `series` (with increments are based on the `period` and `step` in your request) for the newsletter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "metric": {
                      "type": "object",
                      "properties": {
                        "series": {
                          "allOf": [
                            {
                              "x-scalar-ignore": true,
                              "type": "object",
                              "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                              "properties": {
                                "2xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "2xx responses by period, representative of webhook performance."
                                },
                                "3xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "3xx responses by period, representative of webhook performance."
                                },
                                "4xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "4xx responses by period, representative of webhook performance."
                                },
                                "5xx": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "5xx responses by period, representative of webhook performance."
                                }
                              }
                            },
                            {
                              "x-scalar-ignore": true,
                              "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                              "type": "object",
                              "properties": {
                                "attempted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `attempted` messages."
                                },
                                "bounced": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `bounced` messages."
                                },
                                "clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` messages."
                                },
                                "human_clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` emails excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                },
                                "prefetch_clicked": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `clicked` emails attributed to machines. This metric is reliable starting April 20, 2025."
                                },
                                "converted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `converted` messages."
                                },
                                "created": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `created` messages."
                                },
                                "deferred": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `deferred` messages."
                                },
                                "delivered": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `delivered` messages."
                                },
                                "drafted": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `drafted` messages."
                                },
                                "failed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `failed` messages."
                                },
                                "opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` messages."
                                },
                                "human_opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` emails excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                                },
                                "prefetch_opened": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `opened` emails attributed to machines. This metric is reliable starting March 20, 2025."
                                },
                                "sent": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of sent messages."
                                },
                                "spammed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of spam complaints."
                                },
                                "suppressed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `suppressed` messages."
                                },
                                "undeliverable": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of `undeliverable` messages."
                                },
                                "topic_unsubscribed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of topic unsubscribes in a given period."
                                },
                                "unsubscribed": {
                                  "type": "array",
                                  "items": {
                                    "type": "integer"
                                  },
                                  "description": "The number of unsubscribes attributed to the campaign or message."
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The newsletter and/or variant does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/contents/{content_id}/metrics"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D/metrics\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D/metrics\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D/metrics\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D/metrics\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/newsletters/{newsletter_id}/contents/{content_id}/metrics/links": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "newsletter_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a newsletter.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "content_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a message in a newsletter. If your newsletter is an A/B test or has multiple languages, you may have multiple `content_id` values for your newsletter. You can [get a newsletter](#operation/getNewsletters) to find your newsletter's content IDs.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "type",
          "in": "query",
          "required": false,
          "description": "The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.",
          "schema": {
            "type": "string",
            "enum": [
              "email",
              "webhook",
              "twilio",
              "whatsapp",
              "slack",
              "push",
              "in_app"
            ]
          }
        }
      ],
      "get": {
        "summary": "Get newsletter variant link metrics",
        "operationId": "getVariantLinks",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns link click metrics for an individual newsletter variant—an individual language in a multi-language newsletter or a message in an A/B test. Unless you specify otherwise, the response contains data for the maximum period by days (45 days).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Returns newsletter variant metrics by `series` (with increments are based on the `period` and `step` in your request) for the newsletter.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "links": {
                      "type": "array",
                      "description": "Each object in the array represents a link in your newsletter variant.",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "link": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The ID of the link.",
                                "example": 1234
                              },
                              "href": {
                                "type": "string",
                                "description": "The link destination—a URL, mailto, etc.",
                                "example": "https://docs.customer.io"
                              }
                            }
                          },
                          "metric": {
                            "type": "object",
                            "description": "Contains metrics for the link.",
                            "properties": {
                              "series": {
                                "type": "object",
                                "properties": {
                                  "clicked": {
                                    "type": "array",
                                    "description": "An array of results from oldest to newest, where each result indicates a period.",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "example": [
                                      1,
                                      3,
                                      5,
                                      7
                                    ]
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The newsletter and/or variant does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/newsletters/{newsletter_id}/contents/{content_id}/metrics/links"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D/metrics/links\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D/metrics/links\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D/metrics/links\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/newsletters/%7Bnewsletter_id%7D/contents/%7Bcontent_id%7D/metrics/links\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/object_types": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "operationId": "getObjectTypes",
        "summary": "List object types",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of object types in your system. Because each object type is an incrementing ID, you may need to use this endpoint to find the ID of the object type you want to query, create, or modify.",
        "tags": [
          "Objects"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `types`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "types": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The `object_type_id` that you'll use with the Journeys Track API to create or modify objects. Object type IDs are integers passed as strings."
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the object type."
                          },
                          "singular_name": {
                            "type": "string",
                            "description": "The singular name of the object type."
                          },
                          "slug": {
                            "type": "string",
                            "description": "The slug of the page in the Customer.io UI for the object type."
                          },
                          "singular_slug": {
                            "type": "string",
                            "description": "The singular slug of the page in the Customer.io UI for the object type."
                          },
                          "enabled": {
                            "type": "boolean",
                            "description": "If true, the object type is enabled."
                          },
                          "icon": {
                            "type": "string",
                            "description": "The name of the icon or emoji that represents the object type in the Customer.io UI. Most commonly, you'll see this in the left-side navigation panel in Journeys."
                          }
                        },
                        "example": {
                          "enabled": true,
                          "icon": "calendar",
                          "id": "1",
                          "name": "Concerts",
                          "singular_name": "Concert",
                          "singular_slug": "concert",
                          "slug": "concerts"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request. Make sure that you provided the right credentials."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/object_types"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/object_types\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/object_types\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/object_types\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/object_types\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/objects": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "The maximum number of results you want to retrieve per page.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "operationId": "getObjectsFilter",
        "summary": "Find objects",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Use a set of filter conditions to find objects in your workspace. Returns a list of object IDs that you can use to look up object attributes, or to create or modify objects.\n\nThe list is paged if you have a large number of objects. You can set the `limit` for the number of objects returned, and use the `start` to page through the results. It's possible that you'll see duplicate entries across pages. If you want to export objects or relationships, you may want to use the export feature in our UI to return complete results.\n",
        "tags": [
          "Objects"
        ],
        "requestBody": {
          "description": "The `object_type_id` you want to search in, and the `filter` you want to apply to find objects. Both are required. The object called `object_attribute` requires `type_id`, as well, which should match the `object_type_id`.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "object_type_id",
                  "filter"
                ],
                "properties": {
                  "object_type_id": {
                    "type": "string",
                    "description": "The type of object you want to search in. Object type IDs are integers passed as strings.",
                    "example": "1"
                  },
                  "filter": {
                    "x-scalar-ignore": true,
                    "title": "Object Filter",
                    "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_attribute` represents the individual conditions you can filter objects by.\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",
                    "oneOf": [
                      {
                        "x-scalar-ignore": true,
                        "title": "and",
                        "type": "object",
                        "properties": {
                          "and": {
                            "type": "array",
                            "description": "Match *all* conditions to return results.",
                            "items": {
                              "type": "object",
                              "properties": {
                                "object_attribute": {
                                  "x-scalar-ignore": true,
                                  "title": "object attribute",
                                  "description": "Filter your objects by their attributes.",
                                  "type": "object",
                                  "required": [
                                    "field",
                                    "operator",
                                    "type_id"
                                  ],
                                  "properties": {
                                    "field": {
                                      "type": "string",
                                      "description": "The name of the attribute you want to filter against.",
                                      "example": "location"
                                    },
                                    "operator": {
                                      "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.",
                                      "enum": [
                                        "eq",
                                        "exists"
                                      ]
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                    },
                                    "type_id": {
                                      "x-scalar-ignore": true,
                                      "type": "string",
                                      "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                                      "nullable": false,
                                      "example": "1"
                                    }
                                  },
                                  "example": {
                                    "field": "cancelled",
                                    "operator": "eq",
                                    "value": true,
                                    "type_id": 1
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "title": "or",
                        "type": "object",
                        "properties": {
                          "or": {
                            "type": "array",
                            "description": "Match *any* condition to return results.",
                            "items": {
                              "type": "object",
                              "properties": {
                                "object_attribute": {
                                  "x-scalar-ignore": true,
                                  "title": "object attribute",
                                  "description": "Filter your objects by their attributes.",
                                  "type": "object",
                                  "required": [
                                    "field",
                                    "operator",
                                    "type_id"
                                  ],
                                  "properties": {
                                    "field": {
                                      "type": "string",
                                      "description": "The name of the attribute you want to filter against.",
                                      "example": "location"
                                    },
                                    "operator": {
                                      "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.",
                                      "enum": [
                                        "eq",
                                        "exists"
                                      ]
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                    },
                                    "type_id": {
                                      "x-scalar-ignore": true,
                                      "type": "string",
                                      "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                                      "nullable": false,
                                      "example": "1"
                                    }
                                  },
                                  "example": {
                                    "field": "cancelled",
                                    "operator": "eq",
                                    "value": true,
                                    "type_id": 1
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "title": "not",
                        "type": "object",
                        "properties": {
                          "not": {
                            "type": "object",
                            "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single condition.",
                            "properties": {
                              "object_attribute": {
                                "x-scalar-ignore": true,
                                "title": "object attribute",
                                "description": "Filter your objects by their attributes.",
                                "type": "object",
                                "required": [
                                  "field",
                                  "operator",
                                  "type_id"
                                ],
                                "properties": {
                                  "field": {
                                    "type": "string",
                                    "description": "The name of the attribute you want to filter against.",
                                    "example": "location"
                                  },
                                  "operator": {
                                    "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.",
                                    "enum": [
                                      "eq",
                                      "exists"
                                    ]
                                  },
                                  "value": {
                                    "type": "string",
                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                  },
                                  "type_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                                    "nullable": false,
                                    "example": "1"
                                  }
                                },
                                "example": {
                                  "field": "cancelled",
                                  "operator": "eq",
                                  "value": true,
                                  "type_id": 1
                                }
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "object attribute",
                        "type": "object",
                        "description": "A simple filter to find objects matching an attribute condition.",
                        "properties": {
                          "object_attribute": {
                            "x-scalar-ignore": true,
                            "title": "object attribute",
                            "description": "Filter your objects by their attributes.",
                            "type": "object",
                            "required": [
                              "field",
                              "operator",
                              "type_id"
                            ],
                            "properties": {
                              "field": {
                                "type": "string",
                                "description": "The name of the attribute you want to filter against.",
                                "example": "location"
                              },
                              "operator": {
                                "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.",
                                "enum": [
                                  "eq",
                                  "exists"
                                ]
                              },
                              "value": {
                                "type": "string",
                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                              },
                              "type_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                                "nullable": false,
                                "example": "1"
                              }
                            },
                            "example": {
                              "field": "cancelled",
                              "operator": "eq",
                              "value": true,
                              "type_id": 1
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "example": {
                "object_type_id": "1",
                "filter": {
                  "and": [
                    {
                      "object_attribute": {
                        "field": "name",
                        "operator": "exists",
                        "type_id": "1"
                      }
                    },
                    {
                      "not": {
                        "object_attribute": {
                          "field": "name",
                          "operator": "eq",
                          "value": "acme corp",
                          "type_id": "1"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Unauthorized request. Make sure that you provided the right credentials."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"object_type_id\": \"1\",\n  \"filter\": {\n    \"and\": [\n      {\n        \"object_attribute\": {\n          \"field\": \"name\",\n          \"operator\": \"exists\",\n          \"type_id\": \"1\"\n        }\n      },\n      {\n        \"not\": {\n          \"object_attribute\": {\n            \"field\": \"name\",\n            \"operator\": \"eq\",\n            \"value\": \"acme corp\",\n            \"type_id\": \"1\"\n          }\n        }\n      }\n    ]\n  }\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url 'https://api.customer.io/v1/objects?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE' \\\n  --header 'content-type: application/json' \\\n  --data '{\"object_type_id\":\"1\",\"filter\":{\"and\":[{\"object_attribute\":{\"field\":\"cancelled\",\"operator\":\"eq\",\"value\":true,\"type_id\":1}}]}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/objects?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  object_type_id: '1',\n  filter: {\n    and: [\n      {\n        object_attribute: {field: 'cancelled', operator: 'eq', value: true, type_id: 1}\n      }\n    ]\n  }\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/objects?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"object_type_id\\\":\\\"1\\\",\\\"filter\\\":{\\\"and\\\":[{\\\"object_attribute\\\":{\\\"field\\\":\\\"cancelled\\\",\\\"operator\\\":\\\"eq\\\",\\\"value\\\":true,\\\"type_id\\\":1}}]}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"object_type_id\\\":\\\"1\\\",\\\"filter\\\":{\\\"and\\\":[{\\\"object_attribute\\\":{\\\"field\\\":\\\"cancelled\\\",\\\"operator\\\":\\\"eq\\\",\\\"value\\\":true,\\\"type_id\\\":1}}]}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/objects?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/objects?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\"\n\n\tpayload := strings.NewReader(\"{\\\"object_type_id\\\":\\\"1\\\",\\\"filter\\\":{\\\"and\\\":[{\\\"object_attribute\\\":{\\\"field\\\":\\\"cancelled\\\",\\\"operator\\\":\\\"eq\\\",\\\"value\\\":true,\\\"type_id\\\":1}}]}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/objects/{object_type_id}/{object_id}/relationships": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "parameters": [
          {
            "name": "object_type_id",
            "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs begin at `1` and increment for each new type.",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "object_id",
            "description": "The `object_id` or `cio_object_id` of an object, depending on the `id_type` specified in query params. `id_type` defaults to `object_id`.",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "example": "abc123"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "The maximum number of results you want to retrieve per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "id_type",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "object_id",
                "cio_object_id"
              ],
              "default": "object_id"
            }
          }
        ],
        "operationId": "getObjectRelationships",
        "summary": "Get Object Relationships",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Get a list of people people related to an object.\n\nYou can use the `start` parameter with the `next` property in responses to return pages of results. However, it's possible that you'll see duplicate entries across pages. If you want to export objects or relationships, you may want to use the export feature in our UI to return complete results.\n",
        "tags": [
          "Objects"
        ],
        "responses": {
          "200": {
            "description": "Unauthorized request. Make sure that you provided the right credentials."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url 'https://api.customer.io/v1/objects/{object_type_id}/{object_id}/relationships?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE&id_type=SOME_STRING_VALUE'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/objects/%7Bobject_type_id%7D/%7Bobject_id%7D/relationships?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE&id_type=SOME_STRING_VALUE\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/objects/%7Bobject_type_id%7D/%7Bobject_id%7D/relationships?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE&id_type=SOME_STRING_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/objects/%7Bobject_type_id%7D/%7Bobject_id%7D/relationships?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE&id_type=SOME_STRING_VALUE\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/objects/%7Bobject_type_id%7D/%7Bobject_id%7D/relationships?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE&id_type=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/objects/{object_type_id}/{object_id}/attributes": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "parameters": [
          {
            "name": "object_type_id",
            "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs begin at `1` and increment for each new type.",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "object_id",
            "description": "The `object_id` or `cio_object_id` of an object, depending on the `id_type` specified in query params. `id_type` defaults to `object_id`.",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "example": "abc123"
            }
          },
          {
            "name": "id_type",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "object_id",
                "cio_object_id"
              ],
              "default": "object_id"
            }
          }
        ],
        "operationId": "getObjectAttributes",
        "summary": "Get Object Attributes",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Get a list of attributes for an object. Attributes are things you know about an object—like an account name, billing date, etc.\n",
        "tags": [
          "Objects"
        ],
        "responses": {
          "200": {
            "description": "Returns information about the attributes for the `object` specified in the endpoint path.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "object",
                      "description": "The object specified in the endpoint path",
                      "properties": {
                        "attributes": {
                          "type": "object",
                          "description": "Attributes assigned to this object.",
                          "additionalProperties": {
                            "x-additionalPropertiesName": "Object Attributes"
                          }
                        },
                        "timestamps": {
                          "type": "object",
                          "description": "The epoch timestamps when corresponding attributes were set on the object.",
                          "additionalProperties": {
                            "type": "integer",
                            "format": "unix timestamp",
                            "x-additionalPropertiesName": "Object Attribute Timestamps"
                          }
                        },
                        "identifiers": {
                          "description": "Identifies an object.",
                          "type": "object",
                          "properties": {
                            "cio_object_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                              "example": "a3000001"
                            },
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                              "nullable": true,
                              "example": "42"
                            },
                            "email": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The email address of the customer.",
                              "nullable": true,
                              "example": "test@example.com"
                            }
                          }
                        },
                        "object_type_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The object type an object belongs to—like \"Companies\" or \"Accounts\". Object type IDs are string-formatted integers that begin at `1` and increment for each new type.",
                          "nullable": false,
                          "example": "1"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request. Make sure that you provided the right credentials."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url 'https://api.customer.io/v1/objects/{object_type_id}/{object_id}/attributes?id_type=SOME_STRING_VALUE'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/objects/%7Bobject_type_id%7D/%7Bobject_id%7D/attributes?id_type=SOME_STRING_VALUE\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/objects/%7Bobject_type_id%7D/%7Bobject_id%7D/attributes?id_type=SOME_STRING_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/objects/%7Bobject_type_id%7D/%7Bobject_id%7D/attributes?id_type=SOME_STRING_VALUE\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/objects/%7Bobject_type_id%7D/%7Bobject_id%7D/attributes?id_type=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/reporting_webhooks": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "summary": "Create a reporting webhook",
        "operationId": "createWebhook",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Create a new webhook configuration.",
        "tags": [
          "Reporting Webhooks"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "type": "object",
                "required": [
                  "name",
                  "endpoint",
                  "events"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of your webhook.",
                    "example": "my cool webhook"
                  },
                  "id": {
                    "type": "integer",
                    "description": "The identifier for the webhook.",
                    "readOnly": true,
                    "example": 4
                  },
                  "endpoint": {
                    "type": "string",
                    "format": "url",
                    "description": "The webhook URL.",
                    "example": "https://example.com/webhook"
                  },
                  "disabled": {
                    "type": "boolean",
                    "description": "Set to `true` to quit sending events to the webhook URL. Set to `false` to enable the webhook.",
                    "example": false
                  },
                  "full_resolution": {
                    "type": "boolean",
                    "description": "Set to `false` to send unique open and click events to the webhook. Set to `true` to send all events.",
                    "default": false,
                    "example": true
                  },
                  "with_content": {
                    "type": "boolean",
                    "description": "Set to `true` to include the message `body` in `_sent` events.",
                    "example": false
                  },
                  "events": {
                    "description": "Specifies the types of events you want to report to your webhook. See our [reporting webhooks reference](/api/webhooks/#operation/reportingWebhook) for more information about event types and the information they return.",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "type": "string",
                      "enum": [
                        "customer_subscribed",
                        "customer_unsubscribed",
                        "customer_subscription_preferences_changed",
                        "email_drafted",
                        "email_attempted",
                        "email_sent",
                        "email_delivered",
                        "email_opened",
                        "email_clicked",
                        "email_converted",
                        "email_bounced",
                        "email_dropped",
                        "email_deferred",
                        "email_spammed",
                        "email_failed",
                        "email_unsubscribed",
                        "email_undeliverable",
                        "push_drafted",
                        "push_attempted",
                        "push_sent",
                        "push_delivered",
                        "push_opened",
                        "push_clicked",
                        "push_converted",
                        "push_bounced",
                        "push_dropped",
                        "push_failed",
                        "push_undeliverable",
                        "slack_drafted",
                        "slack_attempted",
                        "slack_sent",
                        "slack_clicked",
                        "slack_converted",
                        "slack_failed",
                        "sms_drafted",
                        "sms_attempted",
                        "sms_sent",
                        "sms_delivered",
                        "sms_clicked",
                        "sms_converted",
                        "sms_bounced",
                        "sms_failed",
                        "sms_undeliverable",
                        "webhook_drafted",
                        "webhook_attempted",
                        "webhook_sent",
                        "webhook_clicked",
                        "webhook_converted",
                        "webhook_failed",
                        "webhook_undeliverable"
                      ]
                    },
                    "example": [
                      "email_failed",
                      "webhook_failed"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns your webhook configuration and the ID of the webhook.",
            "content": {
              "application/json": {
                "schema": {
                  "x-scalar-ignore": true,
                  "type": "object",
                  "required": [
                    "name",
                    "endpoint",
                    "events"
                  ],
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "The name of your webhook.",
                      "example": "my cool webhook"
                    },
                    "id": {
                      "type": "integer",
                      "description": "The identifier for the webhook.",
                      "readOnly": true,
                      "example": 4
                    },
                    "endpoint": {
                      "type": "string",
                      "format": "url",
                      "description": "The webhook URL.",
                      "example": "https://example.com/webhook"
                    },
                    "disabled": {
                      "type": "boolean",
                      "description": "Set to `true` to quit sending events to the webhook URL. Set to `false` to enable the webhook.",
                      "example": false
                    },
                    "full_resolution": {
                      "type": "boolean",
                      "description": "Set to `false` to send unique open and click events to the webhook. Set to `true` to send all events.",
                      "default": false,
                      "example": true
                    },
                    "with_content": {
                      "type": "boolean",
                      "description": "Set to `true` to include the message `body` in `_sent` events.",
                      "example": false
                    },
                    "events": {
                      "description": "Specifies the types of events you want to report to your webhook. See our [reporting webhooks reference](/api/webhooks/#operation/reportingWebhook) for more information about event types and the information they return.",
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "type": "string",
                        "enum": [
                          "customer_subscribed",
                          "customer_unsubscribed",
                          "customer_subscription_preferences_changed",
                          "email_drafted",
                          "email_attempted",
                          "email_sent",
                          "email_delivered",
                          "email_opened",
                          "email_clicked",
                          "email_converted",
                          "email_bounced",
                          "email_dropped",
                          "email_deferred",
                          "email_spammed",
                          "email_failed",
                          "email_unsubscribed",
                          "email_undeliverable",
                          "push_drafted",
                          "push_attempted",
                          "push_sent",
                          "push_delivered",
                          "push_opened",
                          "push_clicked",
                          "push_converted",
                          "push_bounced",
                          "push_dropped",
                          "push_failed",
                          "push_undeliverable",
                          "slack_drafted",
                          "slack_attempted",
                          "slack_sent",
                          "slack_clicked",
                          "slack_converted",
                          "slack_failed",
                          "sms_drafted",
                          "sms_attempted",
                          "sms_sent",
                          "sms_delivered",
                          "sms_clicked",
                          "sms_converted",
                          "sms_bounced",
                          "sms_failed",
                          "sms_undeliverable",
                          "webhook_drafted",
                          "webhook_attempted",
                          "webhook_sent",
                          "webhook_clicked",
                          "webhook_converted",
                          "webhook_failed",
                          "webhook_undeliverable"
                        ]
                      },
                      "example": [
                        "email_failed",
                        "webhook_failed"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"my cool webhook\",\n  \"endpoint\": \"https://example.com/webhook\",\n  \"events\": [\n    \"email_failed\",\n    \"webhook_failed\"\n  ]\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/reporting_webhooks \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"my cool webhook\",\"endpoint\":\"https://example.com/webhook\",\"disabled\":false,\"full_resolution\":true,\"with_content\":false,\"events\":[\"email_failed\",\"webhook_failed\"]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/reporting_webhooks\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  name: 'my cool webhook',\n  endpoint: 'https://example.com/webhook',\n  disabled: false,\n  full_resolution: true,\n  with_content: false,\n  events: ['email_failed', 'webhook_failed']\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/reporting_webhooks\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"my cool webhook\\\",\\\"endpoint\\\":\\\"https://example.com/webhook\\\",\\\"disabled\\\":false,\\\"full_resolution\\\":true,\\\"with_content\\\":false,\\\"events\\\":[\\\"email_failed\\\",\\\"webhook_failed\\\"]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"my cool webhook\\\",\\\"endpoint\\\":\\\"https://example.com/webhook\\\",\\\"disabled\\\":false,\\\"full_resolution\\\":true,\\\"with_content\\\":false,\\\"events\\\":[\\\"email_failed\\\",\\\"webhook_failed\\\"]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/reporting_webhooks\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/reporting_webhooks\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"my cool webhook\\\",\\\"endpoint\\\":\\\"https://example.com/webhook\\\",\\\"disabled\\\":false,\\\"full_resolution\\\":true,\\\"with_content\\\":false,\\\"events\\\":[\\\"email_failed\\\",\\\"webhook_failed\\\"]}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "get": {
        "summary": "List reporting webhooks",
        "operationId": "listWebhooks",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return a list of all of your reporting webhooks",
        "tags": [
          "Reporting Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of your `reporting_webhooks`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "reporting_webhooks": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "required": [
                          "name",
                          "endpoint",
                          "events"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "The name of your webhook.",
                            "example": "my cool webhook"
                          },
                          "id": {
                            "type": "integer",
                            "description": "The identifier for the webhook.",
                            "readOnly": true,
                            "example": 4
                          },
                          "endpoint": {
                            "type": "string",
                            "format": "url",
                            "description": "The webhook URL.",
                            "example": "https://example.com/webhook"
                          },
                          "disabled": {
                            "type": "boolean",
                            "description": "Set to `true` to quit sending events to the webhook URL. Set to `false` to enable the webhook.",
                            "example": false
                          },
                          "full_resolution": {
                            "type": "boolean",
                            "description": "Set to `false` to send unique open and click events to the webhook. Set to `true` to send all events.",
                            "default": false,
                            "example": true
                          },
                          "with_content": {
                            "type": "boolean",
                            "description": "Set to `true` to include the message `body` in `_sent` events.",
                            "example": false
                          },
                          "events": {
                            "description": "Specifies the types of events you want to report to your webhook. See our [reporting webhooks reference](/api/webhooks/#operation/reportingWebhook) for more information about event types and the information they return.",
                            "type": "array",
                            "minItems": 1,
                            "items": {
                              "type": "string",
                              "enum": [
                                "customer_subscribed",
                                "customer_unsubscribed",
                                "customer_subscription_preferences_changed",
                                "email_drafted",
                                "email_attempted",
                                "email_sent",
                                "email_delivered",
                                "email_opened",
                                "email_clicked",
                                "email_converted",
                                "email_bounced",
                                "email_dropped",
                                "email_deferred",
                                "email_spammed",
                                "email_failed",
                                "email_unsubscribed",
                                "email_undeliverable",
                                "push_drafted",
                                "push_attempted",
                                "push_sent",
                                "push_delivered",
                                "push_opened",
                                "push_clicked",
                                "push_converted",
                                "push_bounced",
                                "push_dropped",
                                "push_failed",
                                "push_undeliverable",
                                "slack_drafted",
                                "slack_attempted",
                                "slack_sent",
                                "slack_clicked",
                                "slack_converted",
                                "slack_failed",
                                "sms_drafted",
                                "sms_attempted",
                                "sms_sent",
                                "sms_delivered",
                                "sms_clicked",
                                "sms_converted",
                                "sms_bounced",
                                "sms_failed",
                                "sms_undeliverable",
                                "webhook_drafted",
                                "webhook_attempted",
                                "webhook_sent",
                                "webhook_clicked",
                                "webhook_converted",
                                "webhook_failed",
                                "webhook_undeliverable"
                              ]
                            },
                            "example": [
                              "email_failed",
                              "webhook_failed"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/reporting_webhooks"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/reporting_webhooks\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/reporting_webhooks\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/reporting_webhooks\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/reporting_webhooks\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/reporting_webhooks/{webhook_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "webhook_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a webhook.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "Get a reporting webhook",
        "operationId": "getWebhook",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about a specific reporting webhook.",
        "tags": [
          "Reporting Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Returns an individual webhook configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "x-scalar-ignore": true,
                  "type": "object",
                  "required": [
                    "name",
                    "endpoint",
                    "events"
                  ],
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "The name of your webhook.",
                      "example": "my cool webhook"
                    },
                    "id": {
                      "type": "integer",
                      "description": "The identifier for the webhook.",
                      "readOnly": true,
                      "example": 4
                    },
                    "endpoint": {
                      "type": "string",
                      "format": "url",
                      "description": "The webhook URL.",
                      "example": "https://example.com/webhook"
                    },
                    "disabled": {
                      "type": "boolean",
                      "description": "Set to `true` to quit sending events to the webhook URL. Set to `false` to enable the webhook.",
                      "example": false
                    },
                    "full_resolution": {
                      "type": "boolean",
                      "description": "Set to `false` to send unique open and click events to the webhook. Set to `true` to send all events.",
                      "default": false,
                      "example": true
                    },
                    "with_content": {
                      "type": "boolean",
                      "description": "Set to `true` to include the message `body` in `_sent` events.",
                      "example": false
                    },
                    "events": {
                      "description": "Specifies the types of events you want to report to your webhook. See our [reporting webhooks reference](/api/webhooks/#operation/reportingWebhook) for more information about event types and the information they return.",
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "type": "string",
                        "enum": [
                          "customer_subscribed",
                          "customer_unsubscribed",
                          "customer_subscription_preferences_changed",
                          "email_drafted",
                          "email_attempted",
                          "email_sent",
                          "email_delivered",
                          "email_opened",
                          "email_clicked",
                          "email_converted",
                          "email_bounced",
                          "email_dropped",
                          "email_deferred",
                          "email_spammed",
                          "email_failed",
                          "email_unsubscribed",
                          "email_undeliverable",
                          "push_drafted",
                          "push_attempted",
                          "push_sent",
                          "push_delivered",
                          "push_opened",
                          "push_clicked",
                          "push_converted",
                          "push_bounced",
                          "push_dropped",
                          "push_failed",
                          "push_undeliverable",
                          "slack_drafted",
                          "slack_attempted",
                          "slack_sent",
                          "slack_clicked",
                          "slack_converted",
                          "slack_failed",
                          "sms_drafted",
                          "sms_attempted",
                          "sms_sent",
                          "sms_delivered",
                          "sms_clicked",
                          "sms_converted",
                          "sms_bounced",
                          "sms_failed",
                          "sms_undeliverable",
                          "webhook_drafted",
                          "webhook_attempted",
                          "webhook_sent",
                          "webhook_clicked",
                          "webhook_converted",
                          "webhook_failed",
                          "webhook_undeliverable"
                        ]
                      },
                      "example": [
                        "email_failed",
                        "webhook_failed"
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The webhook ID does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/reporting_webhooks/{webhook_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/reporting_webhooks/%7Bwebhook_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/reporting_webhooks/%7Bwebhook_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/reporting_webhooks/%7Bwebhook_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/reporting_webhooks/%7Bwebhook_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "summary": "Update a webhook configuration",
        "operationId": "updateWebhook",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Update the configuration of a reporting webhook. Turn events on or off, change the webhook URL, etc.",
        "tags": [
          "Reporting Webhooks"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "type": "object",
                "required": [
                  "name",
                  "endpoint",
                  "events"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of your webhook.",
                    "example": "my cool webhook"
                  },
                  "id": {
                    "type": "integer",
                    "description": "The identifier for the webhook.",
                    "readOnly": true,
                    "example": 4
                  },
                  "endpoint": {
                    "type": "string",
                    "format": "url",
                    "description": "The webhook URL.",
                    "example": "https://example.com/webhook"
                  },
                  "disabled": {
                    "type": "boolean",
                    "description": "Set to `true` to quit sending events to the webhook URL. Set to `false` to enable the webhook.",
                    "example": false
                  },
                  "full_resolution": {
                    "type": "boolean",
                    "description": "Set to `false` to send unique open and click events to the webhook. Set to `true` to send all events.",
                    "default": false,
                    "example": true
                  },
                  "with_content": {
                    "type": "boolean",
                    "description": "Set to `true` to include the message `body` in `_sent` events.",
                    "example": false
                  },
                  "events": {
                    "description": "Specifies the types of events you want to report to your webhook. See our [reporting webhooks reference](/api/webhooks/#operation/reportingWebhook) for more information about event types and the information they return.",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "type": "string",
                      "enum": [
                        "customer_subscribed",
                        "customer_unsubscribed",
                        "customer_subscription_preferences_changed",
                        "email_drafted",
                        "email_attempted",
                        "email_sent",
                        "email_delivered",
                        "email_opened",
                        "email_clicked",
                        "email_converted",
                        "email_bounced",
                        "email_dropped",
                        "email_deferred",
                        "email_spammed",
                        "email_failed",
                        "email_unsubscribed",
                        "email_undeliverable",
                        "push_drafted",
                        "push_attempted",
                        "push_sent",
                        "push_delivered",
                        "push_opened",
                        "push_clicked",
                        "push_converted",
                        "push_bounced",
                        "push_dropped",
                        "push_failed",
                        "push_undeliverable",
                        "slack_drafted",
                        "slack_attempted",
                        "slack_sent",
                        "slack_clicked",
                        "slack_converted",
                        "slack_failed",
                        "sms_drafted",
                        "sms_attempted",
                        "sms_sent",
                        "sms_delivered",
                        "sms_clicked",
                        "sms_converted",
                        "sms_bounced",
                        "sms_failed",
                        "sms_undeliverable",
                        "webhook_drafted",
                        "webhook_attempted",
                        "webhook_sent",
                        "webhook_clicked",
                        "webhook_converted",
                        "webhook_failed",
                        "webhook_undeliverable"
                      ]
                    },
                    "example": [
                      "email_failed",
                      "webhook_failed"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns your webhook configuration and the ID of the webhook.",
            "content": {
              "application/json": {
                "schema": {
                  "x-scalar-ignore": true,
                  "type": "object",
                  "required": [
                    "name",
                    "endpoint",
                    "events"
                  ],
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "The name of your webhook.",
                      "example": "my cool webhook"
                    },
                    "id": {
                      "type": "integer",
                      "description": "The identifier for the webhook.",
                      "readOnly": true,
                      "example": 4
                    },
                    "endpoint": {
                      "type": "string",
                      "format": "url",
                      "description": "The webhook URL.",
                      "example": "https://example.com/webhook"
                    },
                    "disabled": {
                      "type": "boolean",
                      "description": "Set to `true` to quit sending events to the webhook URL. Set to `false` to enable the webhook.",
                      "example": false
                    },
                    "full_resolution": {
                      "type": "boolean",
                      "description": "Set to `false` to send unique open and click events to the webhook. Set to `true` to send all events.",
                      "default": false,
                      "example": true
                    },
                    "with_content": {
                      "type": "boolean",
                      "description": "Set to `true` to include the message `body` in `_sent` events.",
                      "example": false
                    },
                    "events": {
                      "description": "Specifies the types of events you want to report to your webhook. See our [reporting webhooks reference](/api/webhooks/#operation/reportingWebhook) for more information about event types and the information they return.",
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "type": "string",
                        "enum": [
                          "customer_subscribed",
                          "customer_unsubscribed",
                          "customer_subscription_preferences_changed",
                          "email_drafted",
                          "email_attempted",
                          "email_sent",
                          "email_delivered",
                          "email_opened",
                          "email_clicked",
                          "email_converted",
                          "email_bounced",
                          "email_dropped",
                          "email_deferred",
                          "email_spammed",
                          "email_failed",
                          "email_unsubscribed",
                          "email_undeliverable",
                          "push_drafted",
                          "push_attempted",
                          "push_sent",
                          "push_delivered",
                          "push_opened",
                          "push_clicked",
                          "push_converted",
                          "push_bounced",
                          "push_dropped",
                          "push_failed",
                          "push_undeliverable",
                          "slack_drafted",
                          "slack_attempted",
                          "slack_sent",
                          "slack_clicked",
                          "slack_converted",
                          "slack_failed",
                          "sms_drafted",
                          "sms_attempted",
                          "sms_sent",
                          "sms_delivered",
                          "sms_clicked",
                          "sms_converted",
                          "sms_bounced",
                          "sms_failed",
                          "sms_undeliverable",
                          "webhook_drafted",
                          "webhook_attempted",
                          "webhook_sent",
                          "webhook_clicked",
                          "webhook_converted",
                          "webhook_failed",
                          "webhook_undeliverable"
                        ]
                      },
                      "example": [
                        "email_failed",
                        "webhook_failed"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed."
          },
          "404": {
            "description": "The webhook ID does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"my cool webhook\",\n  \"endpoint\": \"https://example.com/webhook\",\n  \"events\": [\n    \"email_failed\",\n    \"webhook_failed\"\n  ]\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/reporting_webhooks/{webhook_id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"my cool webhook\",\"endpoint\":\"https://example.com/webhook\",\"disabled\":false,\"full_resolution\":true,\"with_content\":false,\"events\":[\"email_failed\",\"webhook_failed\"]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/reporting_webhooks/%7Bwebhook_id%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  name: 'my cool webhook',\n  endpoint: 'https://example.com/webhook',\n  disabled: false,\n  full_resolution: true,\n  with_content: false,\n  events: ['email_failed', 'webhook_failed']\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/reporting_webhooks/%7Bwebhook_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"my cool webhook\\\",\\\"endpoint\\\":\\\"https://example.com/webhook\\\",\\\"disabled\\\":false,\\\"full_resolution\\\":true,\\\"with_content\\\":false,\\\"events\\\":[\\\"email_failed\\\",\\\"webhook_failed\\\"]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"my cool webhook\\\",\\\"endpoint\\\":\\\"https://example.com/webhook\\\",\\\"disabled\\\":false,\\\"full_resolution\\\":true,\\\"with_content\\\":false,\\\"events\\\":[\\\"email_failed\\\",\\\"webhook_failed\\\"]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/reporting_webhooks/%7Bwebhook_id%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/reporting_webhooks/%7Bwebhook_id%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"my cool webhook\\\",\\\"endpoint\\\":\\\"https://example.com/webhook\\\",\\\"disabled\\\":false,\\\"full_resolution\\\":true,\\\"with_content\\\":false,\\\"events\\\":[\\\"email_failed\\\",\\\"webhook_failed\\\"]}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "delete": {
        "summary": "Delete a reporting webhook",
        "operationId": "deleteWebhook",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Delete a reporting webhook's configuration.",
        "tags": [
          "Reporting Webhooks"
        ],
        "responses": {
          "200": {
            "description": "A successful request has no response."
          },
          "404": {
            "description": "The webhook ID does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/reporting_webhooks/{webhook_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/reporting_webhooks/%7Bwebhook_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/reporting_webhooks/%7Bwebhook_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/reporting_webhooks/%7Bwebhook_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/reporting_webhooks/%7Bwebhook_id%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/segments": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "summary": "Create a manual segment",
        "operationId": "createManSegment",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Create a manual segment with a name and a description. This request creates an empty segment.",
        "tags": [
          "Segments"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "segment"
                ],
                "properties": {
                  "segment": {
                    "type": "object",
                    "required": [
                      "name"
                    ],
                    "properties": {
                      "name": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The name of the segment.",
                        "example": "Manual Segment 1"
                      },
                      "description": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "A description for the segment. This can help you understand the purpose of the segment when you encounter it in other requests or in the UI.",
                        "example": "My first manual segment"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the segment ID and other information.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "segment": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The identifier for a segment; used to target a segment in requests.",
                          "example": 7
                        },
                        "deduplicate_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "readOnly": true,
                          "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                          "example": "15:1492548073"
                        },
                        "name": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The name of the segment.",
                          "example": "Manual Segment 1"
                        },
                        "description": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "A description for the segment. This can help you understand the purpose of the segment when you encounter it in other requests or in the UI.",
                          "example": "My first manual segment"
                        },
                        "state": {
                          "type": "string",
                          "description": "The state of the segment.\n\n`events` - currently handling event conditions for this segment\n\n`build` - currently handling profile attribute conditions for this segment\n\n`events_queued` - waiting for a process to start handling event conditions for this segment\n\n`build_queued` - waiting for a process to start handling profile attribute conditions for this segment\n\n`finished` - the segment is finished building\n",
                          "enum": [
                            "events",
                            "build",
                            "events_queued",
                            "build_queued",
                            "finished"
                          ]
                        },
                        "progress": {
                          "type": "integer",
                          "nullable": true,
                          "description": "If Customer.io has not finished processing the segment, this indicates the percentage complete. Otherwise, this key is null.",
                          "example": null
                        },
                        "type": {
                          "type": "string",
                          "description": "The type of segment.",
                          "enum": [
                            "dynamic",
                            "manual"
                          ],
                          "example": "manual"
                        },
                        "tags": {
                          "type": "array",
                          "description": "The tags assigned to the segment, if any. Tags may help you sort through your segments.",
                          "nullable": true,
                          "items": {
                            "type": "string"
                          },
                          "example": null
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"segment\": {\n    \"name\": \"Manual Segment 1\"\n  }\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/segments \\\n  --header 'content-type: application/json' \\\n  --data '{\"segment\":{\"name\":\"Manual Segment 1\",\"description\":\"My first manual segment\"}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/segments\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({segment: {name: 'Manual Segment 1', description: 'My first manual segment'}}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/segments\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"segment\\\":{\\\"name\\\":\\\"Manual Segment 1\\\",\\\"description\\\":\\\"My first manual segment\\\"}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"segment\\\":{\\\"name\\\":\\\"Manual Segment 1\\\",\\\"description\\\":\\\"My first manual segment\\\"}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/segments\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/segments\"\n\n\tpayload := strings.NewReader(\"{\\\"segment\\\":{\\\"name\\\":\\\"Manual Segment 1\\\",\\\"description\\\":\\\"My first manual segment\\\"}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "get": {
        "summary": "List segments",
        "operationId": "listSegments",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Retrieve a list of all of your segments.",
        "tags": [
          "Segments"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `segments`. Each object in the response represents an individual segment.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "segments": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a segment; used to target a segment in requests.",
                            "example": 7
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The name of the segment.",
                            "example": "Manual Segment 1"
                          },
                          "description": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A description for the segment. This can help you understand the purpose of the segment when you encounter it in other requests or in the UI.",
                            "example": "My first manual segment"
                          },
                          "state": {
                            "type": "string",
                            "description": "The state of the segment.\n\n`events` - currently handling event conditions for this segment\n\n`build` - currently handling profile attribute conditions for this segment\n\n`events_queued` - waiting for a process to start handling event conditions for this segment\n\n`build_queued` - waiting for a process to start handling profile attribute conditions for this segment\n\n`finished` - the segment is finished building\n",
                            "enum": [
                              "events",
                              "build",
                              "events_queued",
                              "build_queued",
                              "finished"
                            ]
                          },
                          "progress": {
                            "type": "integer",
                            "nullable": true,
                            "description": "If Customer.io has not finished processing the segment, this indicates the percentage complete. Otherwise, this key is null.",
                            "example": null
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of segment.",
                            "enum": [
                              "dynamic",
                              "manual"
                            ],
                            "example": "manual"
                          },
                          "tags": {
                            "type": "array",
                            "description": "The tags assigned to the segment, if any. Tags may help you sort through your segments.",
                            "nullable": true,
                            "items": {
                              "type": "string"
                            },
                            "example": null
                          },
                          "created_at": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated_at": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/segments"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/segments\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/segments\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/segments\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/segments\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/segments/{segment_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "segment_id",
          "in": "path",
          "required": true,
          "description": "The identifier for a segment. You can find your segment's ID on its page in the dashboard—go to *Segments*, select your segment, and find the ID under *Usage*. Or you can find your segment using the [App API](#tag/Segments).",
          "schema": {
            "type": "integer",
            "format": "int32"
          }
        }
      ],
      "get": {
        "summary": "Get a segment",
        "operationId": "getSegment",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return information about a segment.",
        "tags": [
          "Segments"
        ],
        "responses": {
          "200": {
            "description": "Returns the information about the segment.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "segment": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The identifier for a segment; used to target a segment in requests.",
                          "example": 7
                        },
                        "deduplicate_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "readOnly": true,
                          "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                          "example": "15:1492548073"
                        },
                        "name": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The name of the segment.",
                          "example": "Manual Segment 1"
                        },
                        "description": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "A description for the segment. This can help you understand the purpose of the segment when you encounter it in other requests or in the UI.",
                          "example": "My first manual segment"
                        },
                        "state": {
                          "type": "string",
                          "description": "The state of the segment.\n\n`events` - currently handling event conditions for this segment\n\n`build` - currently handling profile attribute conditions for this segment\n\n`events_queued` - waiting for a process to start handling event conditions for this segment\n\n`build_queued` - waiting for a process to start handling profile attribute conditions for this segment\n\n`finished` - the segment is finished building\n",
                          "enum": [
                            "events",
                            "build",
                            "events_queued",
                            "build_queued",
                            "finished"
                          ]
                        },
                        "progress": {
                          "type": "integer",
                          "nullable": true,
                          "description": "If Customer.io has not finished processing the segment, this indicates the percentage complete. Otherwise, this key is null.",
                          "example": null
                        },
                        "type": {
                          "type": "string",
                          "description": "The type of segment.",
                          "enum": [
                            "dynamic",
                            "manual"
                          ],
                          "example": "manual"
                        },
                        "tags": {
                          "type": "array",
                          "description": "The tags assigned to the segment, if any. Tags may help you sort through your segments.",
                          "nullable": true,
                          "items": {
                            "type": "string"
                          },
                          "example": null
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The `segment_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/segments/{segment_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/segments/%7Bsegment_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/segments/%7Bsegment_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/segments/%7Bsegment_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/segments/%7Bsegment_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "delete": {
        "summary": "Delete a segment",
        "operationId": "deleteManSegment",
        "description": "Delete a manual segment.",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "tags": [
          "Segments"
        ],
        "responses": {
          "204": {
            "description": "The segment is deleted."
          },
          "404": {
            "description": "The `segment_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/segments/{segment_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/segments/%7Bsegment_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/segments/%7Bsegment_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/segments/%7Bsegment_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/segments/%7Bsegment_id%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/segments/{segment_id}/used_by": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "segment_id",
          "in": "path",
          "required": true,
          "description": "The identifier for a segment. You can find your segment's ID on its page in the dashboard—go to *Segments*, select your segment, and find the ID under *Usage*. Or you can find your segment using the [App API](#tag/Segments).",
          "schema": {
            "type": "integer",
            "format": "int32"
          }
        }
      ],
      "get": {
        "summary": "Get a segment's dependencies",
        "operationId": "getSegmentDependencies",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Use this endpoint to find out which campaigns and newsletters use a segment.",
        "tags": [
          "Segments"
        ],
        "responses": {
          "200": {
            "description": "Returns the IDs of items that reference the segment.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "segment_id": {
                      "x-scalar-ignore": true,
                      "type": "integer",
                      "description": "The identifier for a segment; used to target a segment in requests.",
                      "example": 7
                    },
                    "used_by": {
                      "type": "object",
                      "properties": {
                        "campaigns": {
                          "type": "array",
                          "description": "The campaigns that use this segment.",
                          "items": {
                            "type": "integer"
                          }
                        },
                        "sent_newsletters": {
                          "type": "array",
                          "description": "The newsletters that you've sent that uses this segment.",
                          "items": {
                            "type": "integer"
                          }
                        },
                        "draft_newsletters": {
                          "type": "array",
                          "description": "The newsletters that are still in a draft state that reference this segment.",
                          "items": {
                            "type": "integer"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The `segment_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/segments/{segment_id}/used_by"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/segments/%7Bsegment_id%7D/used_by\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/segments/%7Bsegment_id%7D/used_by\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/segments/%7Bsegment_id%7D/used_by\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/segments/%7Bsegment_id%7D/used_by\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/segments/{segment_id}/customer_count": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "segment_id",
          "in": "path",
          "required": true,
          "description": "The identifier for a segment. You can find your segment's ID on its page in the dashboard—go to *Segments*, select your segment, and find the ID under *Usage*. Or you can find your segment using the [App API](#tag/Segments).",
          "schema": {
            "type": "integer",
            "format": "int32"
          }
        }
      ],
      "get": {
        "summary": "Get a segment customer count",
        "operationId": "getSegmentCount",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns the membership count for a segment.",
        "tags": [
          "Segments"
        ],
        "responses": {
          "200": {
            "description": "Returns the customer `count` for a segment.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "segment_id": {
                      "x-scalar-ignore": true,
                      "type": "integer",
                      "description": "The identifier for a segment; used to target a segment in requests.",
                      "example": 7
                    },
                    "count": {
                      "type": "integer",
                      "description": "The total number of customers in the segment."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The `segment_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/segments/{segment_id}/customer_count"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/segments/%7Bsegment_id%7D/customer_count\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/segments/%7Bsegment_id%7D/customer_count\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/segments/%7Bsegment_id%7D/customer_count\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/segments/%7Bsegment_id%7D/customer_count\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/segments/{segment_id}/membership": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "segment_id",
          "in": "path",
          "required": true,
          "description": "The identifier for a segment. You can find your segment's ID on its page in the dashboard—go to *Segments*, select your segment, and find the ID under *Usage*. Or you can find your segment using the [App API](#tag/Segments).",
          "schema": {
            "type": "integer",
            "format": "int32"
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer",
            "default": 1000,
            "maximum": 30000
          }
        }
      ],
      "get": {
        "summary": "List customers in a segment",
        "operationId": "getSegmentMembership",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns customers in a segment. This endpoint returns an array of `identifiers`; each object in the array represents a person and contains the identifier values allowed in your workspace. In general, we recommend that you use `identifiers` rather than `ids` to find people, because it provides more information.  \n\n**If your workspace does not use email as a unique identifier** for people, `identifiers` does not contain `email` values. Go to your [Workspace Settings](/workspaces/#migrate-workspace) to find out which identifiers your workspace supports.\n\nThe `ids` array only lists ID values for people in a segment; if your workspace uses both `email` and `id` as identifiers, it's possible that a member of your segment does not have an `id` value, resulting in an empty string in the `ids` array.\n",
        "tags": [
          "Segments"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of customers for a segment.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "title": "email or id",
                      "type": "object",
                      "properties": {
                        "segment_id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The identifier for a segment; used to target a segment in requests.",
                          "example": 7
                        },
                        "ids": {
                          "type": "array",
                          "description": "The customers that belong to this segment.",
                          "items": {
                            "type": "string"
                          }
                        },
                        "identifiers": {
                          "description": "The customers that belong to this segment.",
                          "type": "array",
                          "items": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                            "required": [
                              "email",
                              "id",
                              "cio_id"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "nullable": true,
                                "format": "email",
                                "description": "A person's email address, if set.",
                                "example": "test@example.com"
                              },
                              "id": {
                                "type": "string",
                                "nullable": true,
                                "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                                "example": 2
                              },
                              "cio_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                "example": "a3000001"
                              }
                            }
                          }
                        },
                        "next": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "Indicates the next page of results. Add `?start=<next_value>` to the request to get the next page of results."
                        }
                      }
                    },
                    {
                      "title": "id only",
                      "type": "object",
                      "properties": {
                        "segment_id": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "description": "The identifier for a segment; used to target a segment in requests.",
                          "example": 7
                        },
                        "ids": {
                          "type": "array",
                          "description": "The customers that belong to this segment.",
                          "items": {
                            "type": "string"
                          }
                        },
                        "identifiers": {
                          "description": "The customers that belong to this segment.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "description": "Contains `id` and `cio_id` identifiers for a person in a workspace that doesn't use email as an identifier.\n",
                            "required": [
                              "id",
                              "cio_id"
                            ],
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "A person's unique ID. This matches a value in `ids`.",
                                "example": 2
                              },
                              "cio_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                "example": "a3000001"
                              }
                            }
                          }
                        },
                        "next": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "Indicates the next page of results. Add `?start=<next_value>` to the request to get the next page of results."
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "The `segment_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/segments/{segment_id}/membership"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/segments/%7Bsegment_id%7D/membership\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/segments/%7Bsegment_id%7D/membership\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/segments/%7Bsegment_id%7D/membership\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/segments/%7Bsegment_id%7D/membership\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/sender_identities": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "sort",
          "in": "query",
          "description": "Determine how you want to sort results, `asc` for chronological order and `desc` for reverse chronological order.",
          "required": false,
          "schema": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          }
        }
      ],
      "get": {
        "summary": "List sender identities",
        "operationId": "listSenders",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of senders in your workspace. Senders are who your messages are \"from\".",
        "tags": [
          "Sender Identities"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `sender_identities`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sender_identities": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "description": "Information about a sender.",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "description": "The identifier of a sender."
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the sender."
                          },
                          "email": {
                            "type": "string",
                            "description": "The email address of the sender."
                          },
                          "address": {
                            "type": "string",
                            "description": "The sender name and email address in the format `name <name@example.com>`."
                          },
                          "template_type": {
                            "type": "string",
                            "enum": [
                              "email",
                              "phone"
                            ],
                            "description": "The type of sender."
                          },
                          "auto_generated": {
                            "type": "boolean",
                            "description": "If true, the sender is automatically generated by Customer.io."
                          }
                        },
                        "example": {
                          "id": 4534,
                          "deduplicate_id": "4534:1478035647",
                          "name": "Cher Ami",
                          "email": "test@example.com",
                          "address": "Cher Ami <test@example.com>",
                          "template_type": "email",
                          "auto_generated": false
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/sender_identities"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/sender_identities\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/sender_identities\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/sender_identities\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/sender_identities\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/sender_identities/{sender_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "sender_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a sender.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "Get a sender",
        "operationId": "getSender",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about a specific sender.",
        "tags": [
          "Sender Identities"
        ],
        "responses": {
          "200": {
            "description": "Returns the `sender_identity` you requested.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sender_identity": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "description": "Information about a sender.",
                      "properties": {
                        "id": {
                          "type": "integer",
                          "description": "The identifier of a sender."
                        },
                        "deduplicate_id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "readOnly": true,
                          "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                          "example": "15:1492548073"
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the sender."
                        },
                        "email": {
                          "type": "string",
                          "description": "The email address of the sender."
                        },
                        "address": {
                          "type": "string",
                          "description": "The sender name and email address in the format `name <name@example.com>`."
                        },
                        "template_type": {
                          "type": "string",
                          "enum": [
                            "email",
                            "phone"
                          ],
                          "description": "The type of sender."
                        },
                        "auto_generated": {
                          "type": "boolean",
                          "description": "If true, the sender is automatically generated by Customer.io."
                        }
                      },
                      "example": {
                        "id": 4534,
                        "deduplicate_id": "4534:1478035647",
                        "name": "Cher Ami",
                        "email": "test@example.com",
                        "address": "Cher Ami <test@example.com>",
                        "template_type": "email",
                        "auto_generated": false
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The sender does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/sender_identities/{sender_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/sender_identities/%7Bsender_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/sender_identities/%7Bsender_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/sender_identities/%7Bsender_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/sender_identities/%7Bsender_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/sender_identities/{sender_id}/used_by": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "sender_id",
          "in": "path",
          "required": true,
          "description": "The identifier of a sender.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "summary": "Get sender usage data",
        "operationId": "getSenderUsage",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns lists of the campaigns and newsletters that use a sender.",
        "tags": [
          "Sender Identities"
        ],
        "responses": {
          "200": {
            "description": "Returns arrays of campaigns and newsletters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "campaigns": {
                      "type": "array",
                      "description": "The campaigns that use the sender.",
                      "items": {
                        "type": "integer"
                      }
                    },
                    "sent_newsletters": {
                      "type": "array",
                      "description": "The newsletters you've sent that used the sender.",
                      "items": {
                        "type": "integer"
                      }
                    },
                    "draft_newsletters": {
                      "type": "array",
                      "description": "The newsletter drafts that are set up using the sender.",
                      "items": {
                        "type": "integer"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The sender does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/sender_identities/{sender_id}/used_by"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/sender_identities/%7Bsender_id%7D/used_by\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/sender_identities/%7Bsender_id%7D/used_by\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/sender_identities/%7Bsender_id%7D/used_by\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/sender_identities/%7Bsender_id%7D/used_by\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/snippets": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "summary": "List snippets",
        "operationId": "listSnippets",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of snippets in your workspace. Snippets are pieces of reusable content, like a common footer for your emails.",
        "tags": [
          "Snippets"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `snippets`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "snippets": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "description": "describes a piece of reusable content. You must provide a name for the snippet and the `value`—the content that appears in messages that use the snippet.",
                        "required": [
                          "name",
                          "value"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "The name of the snippet, must be unique."
                          },
                          "value": {
                            "type": "string",
                            "description": "The contents of the snippet."
                          },
                          "updated_at": {
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The last date-time the snippet was updated.",
                            "readOnly": true
                          }
                        },
                        "example": {
                          "name": "address",
                          "value": "<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111",
                          "updated_at": 1582500000
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/snippets"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/snippets\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/snippets\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/snippets\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/snippets\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "post": {
        "summary": "Create a snippet",
        "operationId": "createSnippet",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Create a new snippet. If a snippet with that name already exists, we'll return a `422` error. If the value contains Liquid, we validate it.\n",
        "tags": [
          "Snippets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "type": "object",
                "description": "Request body for creating or updating a snippet. Only `name` and `value` are accepted; `updated_at` is returned in responses only.",
                "required": [
                  "name",
                  "value"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 150,
                    "description": "The name of the snippet, must be unique. Trimmed of leading and trailing whitespace before storage."
                  },
                  "value": {
                    "type": "string",
                    "description": "The contents of the snippet (plain text or Liquid). Trimmed of leading and trailing whitespace before storage. Max length is environment-specific (default 16000)."
                  }
                },
                "example": {
                  "name": "address",
                  "value": "<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the created snippet.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "snippet": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "description": "describes a piece of reusable content. You must provide a name for the snippet and the `value`—the content that appears in messages that use the snippet.",
                      "required": [
                        "name",
                        "value"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "The name of the snippet, must be unique."
                        },
                        "value": {
                          "type": "string",
                          "description": "The contents of the snippet."
                        },
                        "updated_at": {
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The last date-time the snippet was updated.",
                          "readOnly": true
                        }
                      },
                      "example": {
                        "name": "address",
                        "value": "<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111",
                        "updated_at": 1582500000
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request. Make sure that you provided the right credentials."
          },
          "422": {
            "description": "Validation error or a snippet with that name already exists.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "description": "Contains an array of error objects.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "The reason for the response."
                          },
                          "status": {
                            "type": "string",
                            "description": "The HTTP status code.",
                            "example": "422"
                          },
                          "source": {
                            "type": "object",
                            "description": "The field or path that caused the error.",
                            "properties": {
                              "pointer": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "name_blank": {
                    "summary": "Name empty or blank",
                    "value": {
                      "errors": [
                        {
                          "detail": "name cannot be blank",
                          "source": {
                            "pointer": "/name"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  },
                  "value_blank": {
                    "summary": "Value empty or blank",
                    "value": {
                      "errors": [
                        {
                          "detail": "value cannot be blank",
                          "source": {
                            "pointer": "/value"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  },
                  "name_too_long": {
                    "summary": "Name longer than 150 characters",
                    "value": {
                      "errors": [
                        {
                          "detail": "name cannot exceed 150 characters",
                          "source": {
                            "pointer": "/name"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  },
                  "value_too_long": {
                    "summary": "Value exceeds max length",
                    "value": {
                      "errors": [
                        {
                          "detail": "value cannot exceed 16000 characters",
                          "source": {
                            "pointer": "/value"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  },
                  "snippet_reference": {
                    "summary": "Value contains snippet reference",
                    "value": {
                      "errors": [
                        {
                          "detail": "Snippets cannot contain Liquid code referencing other snippets.",
                          "source": {
                            "pointer": "/value"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  },
                  "name_exists": {
                    "summary": "Name already exists",
                    "value": {
                      "errors": [
                        {
                          "detail": "A snippet with that name already exists",
                          "source": {
                            "pointer": "/name"
                          },
                          "status": "422"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          },
          "500": {
            "description": "Internal server error (for example, render service failure when validating Liquid)."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"address\",\n  \"value\": \"<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111\"\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/snippets \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"address\",\"value\":\"<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/snippets\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  name: 'address',\n  value: '<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111'\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/snippets\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"address\\\",\\\"value\\\":\\\"<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"address\\\",\\\"value\\\":\\\"<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/snippets\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/snippets\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"address\\\",\\\"value\\\":\\\"<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111\\\"}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "summary": "Update snippets",
        "operationId": "updateSnippets",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "In your payload, you'll pass a `name` and `value`. Snippet names are unique. If the snippet `name` does not exist, we'll create a new snippet. If the `name` exists, we'll update the existing snippet. \n",
        "tags": [
          "Snippets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "type": "object",
                "description": "Request body for creating or updating a snippet. Only `name` and `value` are accepted; `updated_at` is returned in responses only.",
                "required": [
                  "name",
                  "value"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 150,
                    "description": "The name of the snippet, must be unique. Trimmed of leading and trailing whitespace before storage."
                  },
                  "value": {
                    "type": "string",
                    "description": "The contents of the snippet (plain text or Liquid). Trimmed of leading and trailing whitespace before storage. Max length is environment-specific (default 16000)."
                  }
                },
                "example": {
                  "name": "address",
                  "value": "<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an array of `snippets`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "snippet": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "description": "describes a piece of reusable content. You must provide a name for the snippet and the `value`—the content that appears in messages that use the snippet.",
                      "required": [
                        "name",
                        "value"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "The name of the snippet, must be unique."
                        },
                        "value": {
                          "type": "string",
                          "description": "The contents of the snippet."
                        },
                        "updated_at": {
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The last date-time the snippet was updated.",
                          "readOnly": true
                        }
                      },
                      "example": {
                        "name": "address",
                        "value": "<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111",
                        "updated_at": 1582500000
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is malformed."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"address\",\n  \"value\": \"<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111\"\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/snippets \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"address\",\"value\":\"<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111\"}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/snippets\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  name: 'address',\n  value: '<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111'\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/snippets\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"address\\\",\\\"value\\\":\\\"<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"address\\\",\\\"value\\\":\\\"<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111\\\"}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/snippets\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/snippets\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"address\\\",\\\"value\\\":\\\"<strong>My Company</strong></br>1234 Fake St<br/>Fake,NY<br/>10111\\\"}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/snippets/{snippet_name}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "snippet_name",
          "in": "path",
          "required": true,
          "description": "The name of a snippet.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "summary": "Delete a snippet",
        "operationId": "deleteSnippet",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Remove a snippet. You can only remove a snippet that is not in use. If your snippet is in use, you'll receive a `400` error.",
        "tags": [
          "Snippets"
        ],
        "responses": {
          "204": {
            "description": "A successful delete operation returns no content."
          },
          "400": {
            "description": "The snippet is in use. You can't delete a snippet until you remove it from messages, templates, etc.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "description": "Contains an array of error objects.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string",
                            "description": "Describes the error.",
                            "example": "unable to delete snippet in use"
                          },
                          "status": {
                            "type": "string",
                            "description": "The HTTP status code.",
                            "example": "400"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The snippet does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/snippets/{snippet_name}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/snippets/%7Bsnippet_name%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/snippets/%7Bsnippet_name%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/snippets/%7Bsnippet_name%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/snippets/%7Bsnippet_name%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/subscription_topics": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "summary": "List subscription topics",
        "operationId": "getTopics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of subscription topics in your workspace. If there are no topics, it returns an empty array.\n\n**Note**: When a profile globally unsubscribes—their `unsubscribed` attribute is set to `true`—Customer.io clears all of the user's topic-level preferences and resets them to the workspace's default topic settings. If your workspace's default topic settings have topics set to *Subscribed*, their profile will return those `true` values even though the person is globally unsubscribed and not really eligible to receive messages based on topic preferences. These values represent future defaults if the person ever globally re-subscribes, not their previous topic choices.\n\nTo check if a profile is globally unsubscribed, you can [lookup a person's attributes](#operation/getPersonAttributes) and check the `unsubscribed` attribute (true = globally unsubscribed, false = eligible to receive messages based on topic preferences).\n",
        "tags": [
          "Subscription Center"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `topics`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "topics": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "The name of the subscription topic.",
                            "example": "Product Updates"
                          },
                          "description": {
                            "type": "string",
                            "description": "A description of the topic that you provided when you created the topic in the UI.",
                            "example": "For people who want updates on product releases."
                          },
                          "subscribed_by_default": {
                            "type": "boolean",
                            "description": "If false, a person is opted-out by default. If true, a person is opted-in by default.",
                            "example": false
                          },
                          "id": {
                            "type": "integer",
                            "description": "The system-generated id for the subscription topic. Also located on the subscription center landing page. These increment up by 1, starting with 1.",
                            "example": 4
                          },
                          "identifier": {
                            "type": "string",
                            "description": "The key associated with the subscription topic. The format is `topic_<id>`.",
                            "example": "topic_4"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/subscription_topics"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/subscription_topics\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/subscription_topics\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/subscription_topics\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/subscription_topics\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/transactional": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "summary": "List transactional messages",
        "operationId": "listTransactional",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of your transactional messages—the transactional IDs that you use to trigger an individual transactional delivery. This endpoint does not return information about deliveries (instances of a message sent to a person) themselves.",
        "tags": [
          "Transactional"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of transactional messages.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "messages": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "description": "Contains information about a transactional message.",
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "description": "The identifier Customer.io assigned to the transactional message",
                            "example": 2
                          },
                          "name": {
                            "type": "string",
                            "description": "The name you set for the transactional message.",
                            "example": "password reset"
                          },
                          "description": {
                            "type": "string",
                            "description": "A description of the transactional message.",
                            "example": "sends a temporary password and lets the customer reset their password."
                          },
                          "send_to_unsubscribed": {
                            "type": "boolean",
                            "description": "If true, people with an `unsubscribed` attribute set to `true` can trigger the message."
                          },
                          "link_tracking": {
                            "type": "boolean",
                            "description": "If true, link tracking is enabled for this message."
                          },
                          "open_tracking": {
                            "type": "boolean",
                            "description": "If true, open-tracking is enabled for this message."
                          },
                          "hide_message_body": {
                            "type": "boolean",
                            "description": "If true, message contents are not retained in delivery history—you cannot recall the exact contents of the message."
                          },
                          "queue_drafts": {
                            "type": "boolean",
                            "description": "If true, messages do not send automatically, and queue as drafts instead. You must send drafts through the *Deliveries & Drafts* page in the user interface."
                          },
                          "created_at": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated_at": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/transactional"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/transactional\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/transactional\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/transactional\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/transactional\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/transactional/{transactional_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "transactional_id",
          "description": "The identifier of your transactional message. You'll find this in the UI or URL of your transactional message. For example, if this is the path of a transactional message URL - `/transactional/3/templates/139` - the `transactional_id` is 3.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "operationId": "getTransactional",
        "summary": "Get a transactional message",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about an individual transactional message.",
        "tags": [
          "Transactional"
        ],
        "responses": {
          "200": {
            "description": "Returns metadata for the transactional message ID in the path.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "x-scalar-ignore": true,
                      "description": "Contains information about a transactional message.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer",
                          "description": "The identifier Customer.io assigned to the transactional message",
                          "example": 2
                        },
                        "name": {
                          "type": "string",
                          "description": "The name you set for the transactional message.",
                          "example": "password reset"
                        },
                        "description": {
                          "type": "string",
                          "description": "A description of the transactional message.",
                          "example": "sends a temporary password and lets the customer reset their password."
                        },
                        "send_to_unsubscribed": {
                          "type": "boolean",
                          "description": "If true, people with an `unsubscribed` attribute set to `true` can trigger the message."
                        },
                        "link_tracking": {
                          "type": "boolean",
                          "description": "If true, link tracking is enabled for this message."
                        },
                        "open_tracking": {
                          "type": "boolean",
                          "description": "If true, open-tracking is enabled for this message."
                        },
                        "hide_message_body": {
                          "type": "boolean",
                          "description": "If true, message contents are not retained in delivery history—you cannot recall the exact contents of the message."
                        },
                        "queue_drafts": {
                          "type": "boolean",
                          "description": "If true, messages do not send automatically, and queue as drafts instead. You must send drafts through the *Deliveries & Drafts* page in the user interface."
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The transactional message does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/transactional/{transactional_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/transactional/%7Btransactional_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/transactional/%7Btransactional_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/transactional/%7Btransactional_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/transactional/%7Btransactional_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/transactional/{transactional_id}/contents": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "transactional_id",
          "description": "The identifier of your transactional message. You'll find this in the UI or URL of your transactional message. For example, if this is the path of a transactional message URL - `/transactional/3/templates/139` - the `transactional_id` is 3.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "operationId": "listTransactionalVariants",
        "summary": "List all variants of a transactional message",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns the content variants of a transactional message, where each variant represents a different language.",
        "tags": [
          "Transactional"
        ],
        "responses": {
          "200": {
            "description": "Returns each variant of the transactional message.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "contents": {
                      "type": "array",
                      "description": "Each object represents one of the variants.",
                      "items": {
                        "x-scalar-ignore": true,
                        "allOf": [
                          {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for an action.",
                                "type": "integer",
                                "readOnly": true,
                                "example": 96
                              },
                              "name": {
                                "type": "string",
                                "description": "The name of the transactional message.",
                                "readOnly": true,
                                "example": "Receipt"
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "body": {
                                "type": "string",
                                "description": "The body of the transactional message. You cannot modify the body if you created it with our drag-and-drop editor."
                              },
                              "language": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                "example": "fr",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "description": "The type of message.",
                                "enum": [
                                  "email",
                                  "push"
                                ],
                                "readOnly": true
                              },
                              "from": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                "readOnly": true,
                                "example": "sentFrom@example.com"
                              },
                              "from_id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                "example": 1
                              },
                              "reply_to": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The address that receives replies for the message, if applicable.",
                                "readOnly": true,
                                "example": "replyto@example.com"
                              },
                              "reply_to_id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                "nullable": true,
                                "example": 38
                              },
                              "preprocessor": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                "enum": [
                                  "premailer"
                                ],
                                "readOnly": true
                              },
                              "recipient": {
                                "x-scalar-ignore": true,
                                "description": "The recipient address for an action.",
                                "type": "string",
                                "example": "{{customer.email}}"
                              },
                              "subject": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The subject line for an `email` action.",
                                "example": "Did you get that thing I sent you?"
                              },
                              "bcc": {
                                "x-scalar-ignore": true,
                                "readOnly": true,
                                "description": "The blind-copy address(es) for this action.",
                                "type": "string"
                              },
                              "fake_bcc": {
                                "x-scalar-ignore": true,
                                "readOnly": true,
                                "type": "boolean",
                                "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                              },
                              "preheader_text": {
                                "x-scalar-ignore": true,
                                "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."
                              },
                              "body_amp": {
                                "x-scalar-ignore": true,
                                "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."
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "headers": {
                                "x-scalar-ignore": true,
                                "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                "type": "string",
                                "format": "json",
                                "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "description": "Contains errors.",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The `transactional_id` or `content_id` in your request do not exist."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/transactional/{transactional_id}/contents"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/transactional/%7Btransactional_id%7D/contents\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/contents\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/transactional/%7Btransactional_id%7D/contents\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/contents\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/transactional/{transactional_id}/content/{content_id}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "transactional_id",
          "description": "The identifier of your transactional message. You'll find this in the UI or URL of your transactional message. For example, if this is the path of a transactional message URL - `/transactional/3/templates/139` - the `transactional_id` is 3.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "content_id",
          "description": "The content variant of your transactional message. You'll find the id in the URL of your transactional message. For example, if this is the path of a transactional message URL - `/transactional/3/templates/139` - the `content_id` is 139.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        }
      ],
      "put": {
        "operationId": "updateTransactional",
        "summary": "Update a transactional message",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Update the body of a transactional email. This fully overwrites your existing transactional message. We'll use your updated content for any future transactional requests (`/v1/send/email`), so make sure that you test your message before you update it. \n",
        "tags": [
          "Transactional"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "type": "object",
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "name": {
                        "type": "string",
                        "description": "The name of the transactional message.",
                        "readOnly": true,
                        "example": "Receipt"
                      },
                      "created": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "format": "unix timestamp",
                        "description": "The date time when the referenced ID was created.",
                        "example": 1552341937,
                        "readOnly": true
                      },
                      "updated": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "format": "unix timestamp",
                        "description": "The date time when the referenced ID was last updated.",
                        "example": 1552341937,
                        "readOnly": true
                      },
                      "body": {
                        "type": "string",
                        "description": "The body of the transactional message. You cannot modify the body if you created it with our drag-and-drop editor."
                      },
                      "language": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                        "example": "fr",
                        "readOnly": true
                      },
                      "type": {
                        "type": "string",
                        "description": "The type of message.",
                        "enum": [
                          "email",
                          "push"
                        ],
                        "readOnly": true
                      },
                      "from": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The address that the message is from, relevant if the action `type` is `email`.",
                        "readOnly": true,
                        "example": "sentFrom@example.com"
                      },
                      "from_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                        "example": 1
                      },
                      "reply_to": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The address that receives replies for the message, if applicable.",
                        "readOnly": true,
                        "example": "replyto@example.com"
                      },
                      "reply_to_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                        "nullable": true,
                        "example": 38
                      },
                      "preprocessor": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                        "enum": [
                          "premailer"
                        ],
                        "readOnly": true
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "{{customer.email}}"
                      },
                      "subject": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The subject line for an `email` action.",
                        "example": "Did you get that thing I sent you?"
                      },
                      "bcc": {
                        "x-scalar-ignore": true,
                        "readOnly": true,
                        "description": "The blind-copy address(es) for this action.",
                        "type": "string"
                      },
                      "fake_bcc": {
                        "x-scalar-ignore": true,
                        "readOnly": true,
                        "type": "boolean",
                        "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                      },
                      "preheader_text": {
                        "x-scalar-ignore": true,
                        "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."
                      },
                      "body_amp": {
                        "x-scalar-ignore": true,
                        "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."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "headers": {
                        "x-scalar-ignore": true,
                        "description": "An array of objects containing headers, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "The name of the header."
                            },
                            "value": {
                              "type": "string",
                              "description": "The value of the header."
                            }
                          },
                          "example": [
                            {
                              "name": "X-Mailgun-Tag",
                              "value": "my-cool-tag"
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated transactional message.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "type": "array",
                      "description": "The object includes the transactional message content and metadata.",
                      "items": {
                        "x-scalar-ignore": true,
                        "allOf": [
                          {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for an action.",
                                "type": "integer",
                                "readOnly": true,
                                "example": 96
                              },
                              "name": {
                                "type": "string",
                                "description": "The name of the transactional message.",
                                "readOnly": true,
                                "example": "Receipt"
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "body": {
                                "type": "string",
                                "description": "The body of the transactional message. You cannot modify the body if you created it with our drag-and-drop editor."
                              },
                              "language": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                "example": "fr",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "description": "The type of message.",
                                "enum": [
                                  "email",
                                  "push"
                                ],
                                "readOnly": true
                              },
                              "from": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                "readOnly": true,
                                "example": "sentFrom@example.com"
                              },
                              "from_id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                "example": 1
                              },
                              "reply_to": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The address that receives replies for the message, if applicable.",
                                "readOnly": true,
                                "example": "replyto@example.com"
                              },
                              "reply_to_id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                "nullable": true,
                                "example": 38
                              },
                              "preprocessor": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                "enum": [
                                  "premailer"
                                ],
                                "readOnly": true
                              },
                              "recipient": {
                                "x-scalar-ignore": true,
                                "description": "The recipient address for an action.",
                                "type": "string",
                                "example": "{{customer.email}}"
                              },
                              "subject": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The subject line for an `email` action.",
                                "example": "Did you get that thing I sent you?"
                              },
                              "bcc": {
                                "x-scalar-ignore": true,
                                "readOnly": true,
                                "description": "The blind-copy address(es) for this action.",
                                "type": "string"
                              },
                              "fake_bcc": {
                                "x-scalar-ignore": true,
                                "readOnly": true,
                                "type": "boolean",
                                "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                              },
                              "preheader_text": {
                                "x-scalar-ignore": true,
                                "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."
                              },
                              "body_amp": {
                                "x-scalar-ignore": true,
                                "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."
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "headers": {
                                "x-scalar-ignore": true,
                                "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                "type": "string",
                                "format": "json",
                                "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "description": "Contains errors.",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The `transactional_id` or `content_id` in your request do not exist"
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/transactional/{transactional_id}/content/{content_id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"body\":\"string\",\"from_id\":1,\"reply_to_id\":38,\"recipient\":\"{{customer.email}}\",\"subject\":\"Did you get that thing I sent you?\",\"preheader_text\":\"string\",\"body_amp\":\"string\",\"headers\":[[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"}]]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/transactional/%7Btransactional_id%7D/content/%7Bcontent_id%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  body: 'string',\n  from_id: 1,\n  reply_to_id: 38,\n  recipient: '{{customer.email}}',\n  subject: 'Did you get that thing I sent you?',\n  preheader_text: 'string',\n  body_amp: 'string',\n  headers: [[{name: 'X-Mailgun-Tag', value: 'my-cool-tag'}]]\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/content/%7Bcontent_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"body\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"body\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/transactional/%7Btransactional_id%7D/content/%7Bcontent_id%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/content/%7Bcontent_id%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"body\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/transactional/{transactional_id}/language/{language}": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "transactional_id",
          "description": "The identifier of your transactional message. You'll find this in the UI or URL of your transactional message. For example, if this is the path of a transactional message URL - `/transactional/3/templates/139` - the `transactional_id` is 3.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "language",
          "in": "path",
          "required": true,
          "description": "A [language tag](/journeys/unsubscribe-faqs/#currently-supported-languages) of a language variant. If you don't provide a language (an empty string), we'll use your default language. If the language variant does not exist, we'll return an error.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "getTransactionalVariant",
        "summary": "Get a translation of a transactional message",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about a translation of an individual transactional message, including the message content.",
        "tags": [
          "Transactional"
        ],
        "responses": {
          "200": {
            "description": "Returns the specified variant of the transactional message.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "type": "array",
                      "description": "The object represents a variant.",
                      "items": {
                        "x-scalar-ignore": true,
                        "allOf": [
                          {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for an action.",
                                "type": "integer",
                                "readOnly": true,
                                "example": 96
                              },
                              "name": {
                                "type": "string",
                                "description": "The name of the transactional message.",
                                "readOnly": true,
                                "example": "Receipt"
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "body": {
                                "type": "string",
                                "description": "The body of the transactional message. You cannot modify the body if you created it with our drag-and-drop editor."
                              },
                              "language": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                "example": "fr",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "description": "The type of message.",
                                "enum": [
                                  "email",
                                  "push"
                                ],
                                "readOnly": true
                              },
                              "from": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                "readOnly": true,
                                "example": "sentFrom@example.com"
                              },
                              "from_id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                "example": 1
                              },
                              "reply_to": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The address that receives replies for the message, if applicable.",
                                "readOnly": true,
                                "example": "replyto@example.com"
                              },
                              "reply_to_id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                "nullable": true,
                                "example": 38
                              },
                              "preprocessor": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                "enum": [
                                  "premailer"
                                ],
                                "readOnly": true
                              },
                              "recipient": {
                                "x-scalar-ignore": true,
                                "description": "The recipient address for an action.",
                                "type": "string",
                                "example": "{{customer.email}}"
                              },
                              "subject": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The subject line for an `email` action.",
                                "example": "Did you get that thing I sent you?"
                              },
                              "bcc": {
                                "x-scalar-ignore": true,
                                "readOnly": true,
                                "description": "The blind-copy address(es) for this action.",
                                "type": "string"
                              },
                              "fake_bcc": {
                                "x-scalar-ignore": true,
                                "readOnly": true,
                                "type": "boolean",
                                "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                              },
                              "preheader_text": {
                                "x-scalar-ignore": true,
                                "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."
                              },
                              "body_amp": {
                                "x-scalar-ignore": true,
                                "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."
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "headers": {
                                "x-scalar-ignore": true,
                                "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                "type": "string",
                                "format": "json",
                                "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `language` in your request does not exist."
          },
          "404": {
            "description": "The transactional message does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/transactional/{transactional_id}/language/{language}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/transactional/%7Btransactional_id%7D/language/%7Blanguage%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/language/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/transactional/%7Btransactional_id%7D/language/%7Blanguage%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/language/%7Blanguage%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "operationId": "updateTransactionalVariant",
        "summary": "Update a translation of a transactional message",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Update the body and other data of a specific language variant for a transactional message. This fully overwrites this specific translation of your existing transactional message. \n",
        "tags": [
          "Transactional"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "x-scalar-ignore": true,
                "allOf": [
                  {
                    "x-scalar-ignore": true,
                    "type": "object",
                    "properties": {
                      "id": {
                        "x-scalar-ignore": true,
                        "description": "The identifier for an action.",
                        "type": "integer",
                        "readOnly": true,
                        "example": 96
                      },
                      "name": {
                        "type": "string",
                        "description": "The name of the transactional message.",
                        "readOnly": true,
                        "example": "Receipt"
                      },
                      "created": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "format": "unix timestamp",
                        "description": "The date time when the referenced ID was created.",
                        "example": 1552341937,
                        "readOnly": true
                      },
                      "updated": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "format": "unix timestamp",
                        "description": "The date time when the referenced ID was last updated.",
                        "example": 1552341937,
                        "readOnly": true
                      },
                      "body": {
                        "type": "string",
                        "description": "The body of the transactional message. You cannot modify the body if you created it with our drag-and-drop editor."
                      },
                      "language": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                        "example": "fr",
                        "readOnly": true
                      },
                      "type": {
                        "type": "string",
                        "description": "The type of message.",
                        "enum": [
                          "email",
                          "push"
                        ],
                        "readOnly": true
                      },
                      "from": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The address that the message is from, relevant if the action `type` is `email`.",
                        "readOnly": true,
                        "example": "sentFrom@example.com"
                      },
                      "from_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                        "example": 1
                      },
                      "reply_to": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The address that receives replies for the message, if applicable.",
                        "readOnly": true,
                        "example": "replyto@example.com"
                      },
                      "reply_to_id": {
                        "x-scalar-ignore": true,
                        "type": "integer",
                        "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                        "nullable": true,
                        "example": 38
                      },
                      "preprocessor": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                        "enum": [
                          "premailer"
                        ],
                        "readOnly": true
                      },
                      "recipient": {
                        "x-scalar-ignore": true,
                        "description": "The recipient address for an action.",
                        "type": "string",
                        "example": "{{customer.email}}"
                      },
                      "subject": {
                        "x-scalar-ignore": true,
                        "type": "string",
                        "description": "The subject line for an `email` action.",
                        "example": "Did you get that thing I sent you?"
                      },
                      "bcc": {
                        "x-scalar-ignore": true,
                        "readOnly": true,
                        "description": "The blind-copy address(es) for this action.",
                        "type": "string"
                      },
                      "fake_bcc": {
                        "x-scalar-ignore": true,
                        "readOnly": true,
                        "type": "boolean",
                        "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                      },
                      "preheader_text": {
                        "x-scalar-ignore": true,
                        "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."
                      },
                      "body_amp": {
                        "x-scalar-ignore": true,
                        "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."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "headers": {
                        "x-scalar-ignore": true,
                        "description": "An array of objects containing headers, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "The name of the header."
                            },
                            "value": {
                              "type": "string",
                              "description": "The value of the header."
                            }
                          },
                          "example": [
                            {
                              "name": "X-Mailgun-Tag",
                              "value": "my-cool-tag"
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated variant of the transactional message.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": {
                      "type": "array",
                      "description": "Each object represents one of the variants.",
                      "items": {
                        "x-scalar-ignore": true,
                        "allOf": [
                          {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "properties": {
                              "id": {
                                "x-scalar-ignore": true,
                                "description": "The identifier for an action.",
                                "type": "integer",
                                "readOnly": true,
                                "example": 96
                              },
                              "name": {
                                "type": "string",
                                "description": "The name of the transactional message.",
                                "readOnly": true,
                                "example": "Receipt"
                              },
                              "created": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was created.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "updated": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date time when the referenced ID was last updated.",
                                "example": 1552341937,
                                "readOnly": true
                              },
                              "body": {
                                "type": "string",
                                "description": "The body of the transactional message. You cannot modify the body if you created it with our drag-and-drop editor."
                              },
                              "language": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The language variant for your message. If you don't use our [localization feature](/localization), or this is the default message, this value is an empty string.",
                                "example": "fr",
                                "readOnly": true
                              },
                              "type": {
                                "type": "string",
                                "description": "The type of message.",
                                "enum": [
                                  "email",
                                  "push"
                                ],
                                "readOnly": true
                              },
                              "from": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The address that the message is from, relevant if the action `type` is `email`.",
                                "readOnly": true,
                                "example": "sentFrom@example.com"
                              },
                              "from_id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier of the `from` address, commonly known as the \"sender\". You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                "example": 1
                              },
                              "reply_to": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The address that receives replies for the message, if applicable.",
                                "readOnly": true,
                                "example": "replyto@example.com"
                              },
                              "reply_to_id": {
                                "x-scalar-ignore": true,
                                "type": "integer",
                                "description": "The identifier for the `reply_to` address, if applicable. You can [list your sender identities](#operation/listSenders) to match the ID to a specific address.",
                                "nullable": true,
                                "example": 38
                              },
                              "preprocessor": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "By default, we process CSS before emails leave Customer.io using Premailer. If your message included CSS and pre-processing is not disabled, this key indicates the pre-processor.",
                                "enum": [
                                  "premailer"
                                ],
                                "readOnly": true
                              },
                              "recipient": {
                                "x-scalar-ignore": true,
                                "description": "The recipient address for an action.",
                                "type": "string",
                                "example": "{{customer.email}}"
                              },
                              "subject": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "The subject line for an `email` action.",
                                "example": "Did you get that thing I sent you?"
                              },
                              "bcc": {
                                "x-scalar-ignore": true,
                                "readOnly": true,
                                "description": "The blind-copy address(es) for this action.",
                                "type": "string"
                              },
                              "fake_bcc": {
                                "x-scalar-ignore": true,
                                "readOnly": true,
                                "type": "boolean",
                                "description": "If true, rather than sending true copies to BCC addresses, Customer.io sends a copy of the message with the subject line containing the recipient address(es).\n"
                              },
                              "preheader_text": {
                                "x-scalar-ignore": true,
                                "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."
                              },
                              "body_amp": {
                                "x-scalar-ignore": true,
                                "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."
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "headers": {
                                "x-scalar-ignore": true,
                                "description": "A JSON string containing an array of header objects, where each object contains a `name` and a `value`. Header names and values must be strings and cannot contain any non-ASCII characters or empty spaces. Some headers are reserved and cannot be overwritten.",
                                "type": "string",
                                "format": "json",
                                "example": "[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"},{\"name\":\"X-Custom-Header\",\"value\":\"custom-value\"}]"
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The `language` in your request does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "description": "Contains errors.",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Describes the error that caused your request to fail."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/transactional/{transactional_id}/language/{language} \\\n  --header 'content-type: application/json' \\\n  --data '{\"body\":\"string\",\"from_id\":1,\"reply_to_id\":38,\"recipient\":\"{{customer.email}}\",\"subject\":\"Did you get that thing I sent you?\",\"preheader_text\":\"string\",\"body_amp\":\"string\",\"headers\":[[{\"name\":\"X-Mailgun-Tag\",\"value\":\"my-cool-tag\"}]]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/transactional/%7Btransactional_id%7D/language/%7Blanguage%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  body: 'string',\n  from_id: 1,\n  reply_to_id: 38,\n  recipient: '{{customer.email}}',\n  subject: 'Did you get that thing I sent you?',\n  preheader_text: 'string',\n  body_amp: 'string',\n  headers: [[{name: 'X-Mailgun-Tag', value: 'my-cool-tag'}]]\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/language/%7Blanguage%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"body\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"body\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/transactional/%7Btransactional_id%7D/language/%7Blanguage%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/language/%7Blanguage%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"body\\\":\\\"string\\\",\\\"from_id\\\":1,\\\"reply_to_id\\\":38,\\\"recipient\\\":\\\"{{customer.email}}\\\",\\\"subject\\\":\\\"Did you get that thing I sent you?\\\",\\\"preheader_text\\\":\\\"string\\\",\\\"body_amp\\\":\\\"string\\\",\\\"headers\\\":[[{\\\"name\\\":\\\"X-Mailgun-Tag\\\",\\\"value\\\":\\\"my-cool-tag\\\"}]]}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/transactional/{transactional_id}/metrics": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "transactional_id",
          "description": "The identifier of your transactional message. You'll find this in the UI or URL of your transactional message. For example, if this is the path of a transactional message URL - `/transactional/3/templates/139` - the `transactional_id` is 3.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "operationId": "transactionalMetrics",
        "summary": "Get transactional message metrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of metrics for a transactional message in `steps` (days, weeks, etc). We return metrics from oldest to newest (i.e. the 0-index for any result is the oldest step/period).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Transactional"
        ],
        "responses": {
          "200": {
            "description": "Returns transactional message metrics by `series` (with increments are based on the `period` and `step` in your request) for transactional message.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "metric": {
                      "type": "object",
                      "properties": {
                        "series": {
                          "x-scalar-ignore": true,
                          "description": "Returns metrics in accordance with the resolution you requested. Each property in this object is an array and each entry in the array represents a metric period, i.e. if your `res` is days `[0, 1]` would represent 0 metrics for the first day, 1 for the second, etc.",
                          "type": "object",
                          "properties": {
                            "attempted": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `attempted` messages."
                            },
                            "bounced": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `bounced` messages."
                            },
                            "clicked": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `clicked` messages."
                            },
                            "human_clicked": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `clicked` emails excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                            },
                            "prefetch_clicked": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `clicked` emails attributed to machines. This metric is reliable starting April 20, 2025."
                            },
                            "converted": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `converted` messages."
                            },
                            "created": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `created` messages."
                            },
                            "deferred": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `deferred` messages."
                            },
                            "delivered": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `delivered` messages."
                            },
                            "drafted": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `drafted` messages."
                            },
                            "failed": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `failed` messages."
                            },
                            "opened": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `opened` messages."
                            },
                            "human_opened": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `opened` emails excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                            },
                            "prefetch_opened": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `opened` emails attributed to machines. This metric is reliable starting March 20, 2025."
                            },
                            "sent": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of sent messages."
                            },
                            "spammed": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of spam complaints."
                            },
                            "suppressed": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `suppressed` messages."
                            },
                            "undeliverable": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of `undeliverable` messages."
                            },
                            "topic_unsubscribed": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of topic unsubscribes in a given period."
                            },
                            "unsubscribed": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              },
                              "description": "The number of unsubscribes attributed to the campaign or message."
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The transactional message you requested does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/transactional/{transactional_id}/metrics"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/transactional/%7Btransactional_id%7D/metrics\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/metrics\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/transactional/%7Btransactional_id%7D/metrics\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/metrics\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/transactional/{transactional_id}/metrics/links": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "transactional_id",
          "description": "The identifier of your transactional message. You'll find this in the UI or URL of your transactional message. For example, if this is the path of a transactional message URL - `/transactional/3/templates/139` - the `transactional_id` is 3.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "period",
          "in": "query",
          "required": false,
          "description": "The unit of time for your report.",
          "schema": {
            "type": "string",
            "default": "days",
            "enum": [
              "hours",
              "days",
              "weeks",
              "months"
            ]
          }
        },
        {
          "name": "steps",
          "in": "query",
          "required": false,
          "description": "The number of periods you want to return. Defaults to the maximum available, or `12` if the period is in `months`. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST. Weeks start at 00:00 EST on Sunday. Months start at 00:00 EST on the 1st of the month.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "unique",
          "in": "query",
          "required": false,
          "description": "If true, the response contains only unique customer results, i.e. a customer who clicks a link twice is only counted once. If false, the response contains the total number of results without regard to uniqueness.",
          "schema": {
            "type": "boolean",
            "default": false
          }
        }
      ],
      "get": {
        "operationId": "transactionalLinks",
        "summary": "Get transactional message link metrics",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns metrics for clicked links from a transactional message, both in total and in `series` periods (days, weeks, etc). `series` metrics are ordered oldest to newest (i.e. the 0-index for any result is the oldest step/period).\n\nYou cannot request fewer than 2 steps of any period (2 hours, 2 days, 2 weeks, or 2 months). For instance, `?period=days&steps=1` means two days - the 48 hours before the API request was made. `?period=days&steps=0` returns the same as the maximum of the period - `?period=days&steps=45`. See the `steps` parameter below for the maximum count of each period.\n",
        "tags": [
          "Transactional"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of link objects. Each object represents a different link in your transactional message and contains independent metrics.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "links": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "link": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The ID of the link.",
                                "example": 1234
                              },
                              "href": {
                                "type": "string",
                                "description": "The link destination—a URL, mailto, etc.",
                                "example": "https://docs.customer.io"
                              }
                            }
                          },
                          "metric": {
                            "type": "object",
                            "description": "Contains metrics for the link.",
                            "properties": {
                              "series": {
                                "type": "object",
                                "properties": {
                                  "clicked": {
                                    "type": "array",
                                    "description": "An array of results from oldest to newest, where each result indicates a period.",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "example": [
                                      1,
                                      3,
                                      5,
                                      7
                                    ]
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The transactional message you requested does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/transactional/{transactional_id}/metrics/links"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/transactional/%7Btransactional_id%7D/metrics/links\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/metrics/links\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/transactional/%7Btransactional_id%7D/metrics/links\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/metrics/links\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/transactional/{transactional_id}/messages": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "transactional_id",
          "description": "The identifier of your transactional message. You'll find this in the UI or URL of your transactional message. For example, if this is the path of a transactional message URL - `/transactional/3/templates/139` - the `transactional_id` is 3.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer"
          }
        },
        {
          "name": "metric",
          "in": "query",
          "required": false,
          "description": "Determines the metric(s) you want to return.",
          "schema": {
            "type": "string",
            "enum": [
              "attempted",
              "sent",
              "delivered",
              "opened",
              "clicked",
              "converted",
              "bounced",
              "spammed",
              "unsubscribed",
              "dropped",
              "failed",
              "undeliverable"
            ]
          }
        },
        {
          "name": "state",
          "in": "query",
          "required": false,
          "description": "The state of a broadcast.",
          "schema": {
            "type": "string",
            "enum": [
              "failed",
              "sent",
              "drafted",
              "attempted"
            ]
          }
        },
        {
          "name": "start_ts",
          "in": "query",
          "required": false,
          "description": "The beginning timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        },
        {
          "name": "end_ts",
          "in": "query",
          "required": false,
          "description": "The ending timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        }
      ],
      "get": {
        "operationId": "transactionalMessages",
        "summary": "Get transactional message deliveries",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about the deliveries (instances of messages sent to individual people) from a transactional message. Provide query parameters to refine the metrics you want to return.\n\nUse the `start_ts` and `end_ts` to find messages within a time range. If your request doesn't include `start_ts` and `end_ts` parameters, we'll return the most recent 6 months of messages. If your `start_ts` and `end_ts` range is more than 12 months, we'll return 12 months of data from the most recent timestamp in your request. Timestamps reflect when deliveries were created in our system, not when they were actually sent to recipients. There may be a delay between creation and sending.\n",
        "tags": [
          "Transactional"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `messages`. Each object represents a different delivery originating from the transactional ID. \n\nFor transactional messages, the action, newsletter, campaign, content, and broadcast IDs are all `null`. All deliveries originate from the transactional ID in the path of your request.\n",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "messages": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "description": "Describes an individual message delivery. The object contains keys for all possible parents of the message (`newsletter_id`, `broadcast_id`, etc) but only the parents of the delivery are populated. Other parent IDs are null.",
                        "properties": {
                          "id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a delivery—the instance of a message intended for an individual recipient.",
                            "type": "string",
                            "readOnly": true,
                            "example": "dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek="
                          },
                          "deduplicate_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "readOnly": true,
                            "description": "An identifier in the format `id:timestamp` where the id is the id of the object you are working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated.",
                            "example": "15:1492548073"
                          },
                          "message_template_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier of the message template used to create a message.",
                            "type": "integer",
                            "readOnly": true,
                            "deprecated": true
                          },
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "customer_identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                            "required": [
                              "email",
                              "id",
                              "cio_id"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "nullable": true,
                                "format": "email",
                                "description": "A person's email address, if set.",
                                "example": "test@example.com"
                              },
                              "id": {
                                "type": "string",
                                "nullable": true,
                                "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                                "example": 2
                              },
                              "cio_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                "example": "a3000001"
                              }
                            }
                          },
                          "recipient": {
                            "x-scalar-ignore": true,
                            "description": "The recipient address for an action.",
                            "type": "string",
                            "example": "{{customer.email}}"
                          },
                          "subject": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The subject line for an `email` action.",
                            "example": "Did you get that thing I sent you?"
                          },
                          "metrics": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Metrics for an individual instance of a message; each item in the object represents the timestamp when a message achieved a particular metric. This object only contains metrics that have been recorded.",
                            "properties": {
                              "bounced": {
                                "type": "integer",
                                "description": "The timestamp when the message `bounced`."
                              },
                              "clicked": {
                                "type": "integer",
                                "description": "The timestamp when the message was `clicked`."
                              },
                              "human_clicked": {
                                "type": "integer",
                                "description": "The number of `clicked` messages excluding machine clicks. This metric is reliable starting April 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                              },
                              "prefetch_clicked": {
                                "type": "integer",
                                "description": "The number of `clicked` messages attributed to machines. This metric is reliable starting April 20, 2025."
                              },
                              "converted": {
                                "type": "integer",
                                "description": "The timestamp when the message was `converted`."
                              },
                              "created": {
                                "type": "integer",
                                "description": "The timestamp when the message was `created`."
                              },
                              "delivered": {
                                "type": "integer",
                                "description": "The timestamp when the message was `delivered`."
                              },
                              "drafted": {
                                "type": "integer",
                                "description": "The timestamp when the message was `drafted`."
                              },
                              "dropped": {
                                "type": "integer",
                                "description": "The timestamp when the message was `dropped`."
                              },
                              "failed": {
                                "type": "integer",
                                "description": "The timestamp when the message `failed`."
                              },
                              "opened": {
                                "type": "integer",
                                "description": "The timestamp when the message was `opened`."
                              },
                              "human_opened": {
                                "type": "integer",
                                "description": "The number of `opened` messages excluding machine opens. This metric is reliable starting March 20, 2025. [Learn more](/journeys/analytics/#delivery-metrics)."
                              },
                              "prefetch_opened": {
                                "type": "integer",
                                "description": "The number of `opened` messages attributed to machines. This metric is reliable starting March 20, 2025."
                              },
                              "sent": {
                                "type": "integer",
                                "description": "The timestamp when the message was `sent`."
                              },
                              "spammed": {
                                "type": "integer",
                                "description": "The timestamp when the message was marked as spam."
                              },
                              "undeliverable": {
                                "type": "integer",
                                "description": "The timestamp when the message became `undeliverable`."
                              },
                              "unsubscribed": {
                                "type": "integer",
                                "description": "The timestamp when a person unsubscribed based on this message."
                              }
                            }
                          },
                          "created": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "failure_message": {
                            "type": "string",
                            "description": "Explains why a message failed, if applicable.",
                            "nullable": true
                          },
                          "campaign_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a campaign.",
                            "type": "integer",
                            "example": 5
                          },
                          "action_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for an action.",
                            "type": "integer",
                            "readOnly": true,
                            "example": 96
                          },
                          "parent_action_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The ID of the parent action, if the action occurred within a campaign and has a parent (like a randomized split, etc).",
                            "example": 1,
                            "readOnly": true
                          },
                          "newsletter_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a newsletter.",
                            "type": "integer",
                            "example": 10
                          },
                          "content_id": {
                            "x-scalar-ignore": true,
                            "description": "The identifier for a message in a newsletter. Newsletters can have multiple content IDs (for multi-language messages or A/B tests).",
                            "type": "integer",
                            "readOnly": true,
                            "example": 1
                          },
                          "broadcast_id": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "description": "The identifier for a broadcast.",
                            "example": 2
                          },
                          "trigger_event_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The id of the event that triggered an event-triggered campaign (not an API-triggered broadcast).",
                            "nullable": true,
                            "example": "21E4C3CT6YDC7Y4N7FE1GWWABC"
                          },
                          "type": {
                            "x-scalar-ignore": true,
                            "description": "The type of message/action.",
                            "type": "string",
                            "enum": [
                              "email",
                              "webhook",
                              "twilio",
                              "slack",
                              "push",
                              "in_app",
                              "whatsapp"
                            ],
                            "readOnly": true,
                            "example": "email"
                          },
                          "forgotten": {
                            "type": "boolean",
                            "description": "If true message contents are not retained by Customer.io."
                          }
                        },
                        "example": {
                          "id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=",
                          "deduplicate_id": "ag1q6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek=:1619137768",
                          "msg_template_id": 43,
                          "action_id": 215,
                          "parent_action_id": null,
                          "customer_id": null,
                          "recipient": "person@example.com",
                          "subject": "Did you get that thing I sent you?",
                          "metrics": {
                            "delivered": 1619137768,
                            "sent": 1619137768
                          },
                          "created": 1619137767,
                          "failure_message": null,
                          "newsletter_id": null,
                          "content_id": null,
                          "campaign_id": 23,
                          "broadcast_id": null,
                          "trigger_event_id": null,
                          "type": "email",
                          "forgotten": false
                        }
                      },
                      "example": [
                        {
                          "id": "dgOq6QWq6QUDAAF22PaOyFVqVxHY3rI5fsg=",
                          "deduplicate_id": "dgOq6QWq6QUDAAF22PaOyFVqVxHY3rI5fsg=:1609957872",
                          "msg_template_id": 589,
                          "action_id": null,
                          "customer_id": "1a55d8d1-b13d-4f1f-858f-a93ef21e3a7d",
                          "identifiers": {
                            "id": "1a55d8d1-b13d-4f1f-858f-a93ef21e3a7d",
                            "email": "person@example.com",
                            "cio_id": 786433
                          },
                          "recipient": "person@example.com",
                          "subject": "Reset your password",
                          "metrics": {
                            "delivered": 1609957872,
                            "sent": 1609957832
                          },
                          "created": 1609957805,
                          "failure_message": null,
                          "newsletter_id": null,
                          "content_id": null,
                          "campaign_id": null,
                          "broadcast_id": null,
                          "type": "email|push",
                          "forgotten": false
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The transactional message you requested does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/transactional/{transactional_id}/messages"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/transactional/%7Btransactional_id%7D/messages\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/messages\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/transactional/%7Btransactional_id%7D/messages\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/transactional/%7Btransactional_id%7D/messages\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/workspaces": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "summary": "List workspaces",
        "operationId": "listWorkspaces",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of workspaces in your account.",
        "tags": [
          "Workspaces"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `workspaces`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "workspaces": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "description": "Contains workspace properties including the count of messages, people, and objects. Customer.io caches these counts, so your data may be up to two hours old.",
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "description": "The id of the workspace.",
                            "example": "13XXXX"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the workspace.",
                            "example": "Workspace 1"
                          },
                          "messages_sent": {
                            "type": "integer",
                            "description": "The count of [messages sent](/journeys/message-statuses/#sent) via any channel (email, SMS, in-app, push, slack) in the current billing period.",
                            "example": 100202
                          },
                          "billable_messages_sent": {
                            "type": "integer",
                            "description": "The count of [emails sent](/journeys/message-statuses/#sent) that are considered for billing in your current billing period. Ultimately, we only bill for the overages on your plan.",
                            "example": 75124
                          },
                          "people": {
                            "type": "integer",
                            "description": "The current count of people profiles in the workspace. Updates roughly every hour.",
                            "example": 25666
                          },
                          "object_types": {
                            "type": "integer",
                            "description": "The current count of object types in the workspace. Updates roughly every hour.",
                            "example": 4
                          },
                          "objects": {
                            "type": "integer",
                            "description": "The current count of object profiles in the workspace. Updates roughly every hour.",
                            "example": 10
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/workspaces"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/workspaces\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/workspaces\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/workspaces\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/workspaces\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/collections": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "summary": "Create a collection",
        "description": "Create a new collection and provide the `data` that you'll access from the collection or the `url` that you'll download CSV or JSON data from.\n\n**Note**: A collection cannot be more than 10 MB in size. No individual row in the collection can be more than 10 KB.\n",
        "tags": [
          "Collections"
        ],
        "operationId": "addCollection",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Local data",
                    "type": "object",
                    "required": [
                      "name",
                      "data"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The name of the collection. This is how you'll reference your collection in messages—`{{collection_name.data-property}}`."
                      },
                      "data": {
                        "type": "array",
                        "description": "An array of data objects that you want to reference in this collection.",
                        "items": {
                          "type": "object",
                          "additionalProperties": {
                            "x-additionalPropertiesName": "collection data"
                          }
                        }
                      }
                    }
                  },
                  {
                    "title": "Data by URL",
                    "type": "object",
                    "required": [
                      "name",
                      "url"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The name of the collection. This is how you'll reference your collection in messages—`{{collection_name.data-property}}`."
                      },
                      "url": {
                        "type": "string",
                        "format": "url",
                        "description": "The URL for your CSV or JSON data. If your URL does not return a `Content-Type`, we use the file extension; otherwise, Customer.io assumes your data is JSON.\n"
                      }
                    }
                  }
                ]
              },
              "example": {
                "name": "events",
                "data": [
                  {
                    "eventName": "christmas",
                    "eventDate": "2021-12-25T12:00:00.000Z",
                    "presents": {
                      "something_you_want": "toys",
                      "something_you_need": "socks",
                      "total": 2
                    }
                  },
                  {
                    "eventName": "birthday",
                    "eventDate": "2021-03-15T12:00:00.000Z",
                    "presents": {
                      "something_you_want": "video games",
                      "something_you_need": "books",
                      "total": 2
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The collection was created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collection": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "bytes": {
                          "type": "integer",
                          "description": "The size of the collection in bytes.",
                          "example": 296
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "id": {
                          "type": "integer",
                          "description": "The identifier for the collection. This is how you'll reference the collection from the API.",
                          "example": 1
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the collection. This is how you'll reference the collection in liquid, e.g. `{{collection_name.data_property}}`.",
                          "example": "upcoming events"
                        },
                        "rows": {
                          "type": "integer",
                          "description": "Represents the number of objects in the `data` array or CSV rows in your collection schema.",
                          "example": 2
                        },
                        "schema": {
                          "type": "array",
                          "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`.",
                          "items": {
                            "type": "string"
                          },
                          "example": [
                            "eventDate",
                            "eventName",
                            "presents"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Your request was malformed."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"events\",\n  \"data\": [\n    {\n      \"eventName\": \"christmas\",\n      \"eventDate\": \"2021-12-25T12:00:00.000Z\",\n      \"presents\": {\n        \"something_you_want\": \"toys\",\n        \"something_you_need\": \"socks\",\n        \"total\": 2\n      }\n    },\n    {\n      \"eventName\": \"birthday\",\n      \"eventDate\": \"2021-03-15T12:00:00.000Z\",\n      \"presents\": {\n        \"something_you_want\": \"video games\",\n        \"something_you_need\": \"books\",\n        \"total\": 2\n      }\n    }\n  ]\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/collections \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"data\":[{\"collection data1\":null,\"collection data2\":null}]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/collections\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({name: 'string', data: [{'collection data1': null, 'collection data2': null}]}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/collections\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"data\\\":[{\\\"collection data1\\\":null,\\\"collection data2\\\":null}]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"data\\\":[{\\\"collection data1\\\":null,\\\"collection data2\\\":null}]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/collections\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/collections\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"data\\\":[{\\\"collection data1\\\":null,\\\"collection data2\\\":null}]}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "get": {
        "operationId": "getCollections",
        "summary": "List your collections",
        "description": "Returns a list of all of your collections, including the `name` and `schema` for each collection.",
        "tags": [
          "Collections"
        ],
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Returns metadata about your collection.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collections": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "bytes": {
                            "type": "integer",
                            "description": "The size of the collection in bytes.",
                            "example": 296
                          },
                          "created_at": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was created.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "updated_at": {
                            "x-scalar-ignore": true,
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date time when the referenced ID was last updated.",
                            "example": 1552341937,
                            "readOnly": true
                          },
                          "id": {
                            "type": "integer",
                            "description": "The identifier for the collection. This is how you'll reference the collection from the API.",
                            "example": 1
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the collection. This is how you'll reference the collection in liquid, e.g. `{{collection_name.data_property}}`.",
                            "example": "upcoming events"
                          },
                          "rows": {
                            "type": "integer",
                            "description": "Represents the number of objects in the `data` array or CSV rows in your collection schema.",
                            "example": 2
                          },
                          "schema": {
                            "type": "array",
                            "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`.",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "eventDate",
                              "eventName",
                              "presents"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/collections"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/collections\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/collections\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/collections\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/collections\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/collections/{collection_id}": {
      "parameters": [
        {
          "name": "collection_id",
          "description": "The identifier for a collection.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        }
      ],
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "summary": "Lookup a collection",
        "description": "Retrieves details about a collection, including the `schema` and `name`. This request does not include the `content` of the collection (the values associated with keys in the schema).",
        "tags": [
          "Collections"
        ],
        "operationId": "getCollection",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Returns metadata about your collection.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collection": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "bytes": {
                          "type": "integer",
                          "description": "The size of the collection in bytes.",
                          "example": 296
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "id": {
                          "type": "integer",
                          "description": "The identifier for the collection. This is how you'll reference the collection from the API.",
                          "example": 1
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the collection. This is how you'll reference the collection in liquid, e.g. `{{collection_name.data_property}}`.",
                          "example": "upcoming events"
                        },
                        "rows": {
                          "type": "integer",
                          "description": "Represents the number of objects in the `data` array or CSV rows in your collection schema.",
                          "example": 2
                        },
                        "schema": {
                          "type": "array",
                          "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`.",
                          "items": {
                            "type": "string"
                          },
                          "example": [
                            "eventDate",
                            "eventName",
                            "presents"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The collection `id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/collections/{collection_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/collections/%7Bcollection_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/collections/%7Bcollection_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/collections/%7Bcollection_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/collections/%7Bcollection_id%7D\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "delete": {
        "summary": "Delete a collection",
        "description": "Remove a collection and associated contents. Before you delete a collection, make sure that you aren't referencing it in active campaign messages or broadcasts; references to a deleted collection will appear empty and may prevent your messages from making sense to your audience.",
        "tags": [
          "Collections"
        ],
        "operationId": "deleteCollection",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "responses": {
          "204": {
            "description": "The collection is deleted."
          },
          "404": {
            "description": "The collection `id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request DELETE \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/collections/{collection_id}"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"DELETE\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/collections/%7Bcollection_id%7D\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/collections/%7Bcollection_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"DELETE\", \"/v1/collections/%7Bcollection_id%7D\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/collections/%7Bcollection_id%7D\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "summary": "Update a collection",
        "description": "Update the `name` or replace the contents of a collection. Updating the `data` or `url` for your collection fully replaces the contents of the collection.\n\n**Note**: \n* If you reference your collection by name in active campaign messages, changing the name of the collection will cause references to the previous name to return an empty data set.\n* A collection cannot be more than 10 MB in size. No individual row in the collection can be more than 10 KB.\n",
        "tags": [
          "Collections"
        ],
        "operationId": "updateCollection",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Local data",
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The name of the collection. This is how you'll reference your collection in messages—`{{collection_name.data-property}}`."
                      },
                      "data": {
                        "type": "array",
                        "description": "An array of data objects that you want to reference in this collection.",
                        "items": {
                          "type": "object",
                          "additionalProperties": {
                            "x-additionalPropertiesName": "collection data"
                          }
                        }
                      }
                    }
                  },
                  {
                    "title": "Data by URL",
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The name of the collection. This is how you'll reference your collection in messages—`{{collection_name.data-property}}`."
                      },
                      "url": {
                        "type": "string",
                        "format": "url",
                        "description": "The URL for your CSV or JSON data. If your URL does not return a `Content-Type`, we use the file extension; otherwise, Customer.io assumes your data is JSON.\n"
                      }
                    }
                  }
                ]
              },
              "example": {
                "name": "events",
                "data": [
                  {
                    "eventName": "christmas",
                    "eventDate": "2021-12-25T12:00:00.000Z",
                    "presents": {
                      "something_you_want": "toys",
                      "something_you_need": "socks",
                      "total": 2
                    }
                  },
                  {
                    "eventName": "birthday",
                    "eventDate": "2021-03-15T12:00:00.000Z",
                    "presents": {
                      "something_you_want": "video games",
                      "something_you_need": "books",
                      "total": 2
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The collection was created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collection": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "bytes": {
                          "type": "integer",
                          "description": "The size of the collection in bytes.",
                          "example": 296
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "id": {
                          "type": "integer",
                          "description": "The identifier for the collection. This is how you'll reference the collection from the API.",
                          "example": 1
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the collection. This is how you'll reference the collection in liquid, e.g. `{{collection_name.data_property}}`.",
                          "example": "upcoming events"
                        },
                        "rows": {
                          "type": "integer",
                          "description": "Represents the number of objects in the `data` array or CSV rows in your collection schema.",
                          "example": 2
                        },
                        "schema": {
                          "type": "array",
                          "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`.",
                          "items": {
                            "type": "string"
                          },
                          "example": [
                            "eventDate",
                            "eventName",
                            "presents"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Your request was malformed."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"name\": \"events\",\n  \"data\": [\n    {\n      \"eventName\": \"christmas\",\n      \"eventDate\": \"2021-12-25T12:00:00.000Z\",\n      \"presents\": {\n        \"something_you_want\": \"toys\",\n        \"something_you_need\": \"socks\",\n        \"total\": 2\n      }\n    },\n    {\n      \"eventName\": \"birthday\",\n      \"eventDate\": \"2021-03-15T12:00:00.000Z\",\n      \"presents\": {\n        \"something_you_want\": \"video games\",\n        \"something_you_need\": \"books\",\n        \"total\": 2\n      }\n    }\n  ]\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/collections/{collection_id} \\\n  --header 'content-type: application/json' \\\n  --data '{\"name\":\"string\",\"data\":[{\"collection data1\":null,\"collection data2\":null}]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/collections/%7Bcollection_id%7D\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({name: 'string', data: [{'collection data1': null, 'collection data2': null}]}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/collections/%7Bcollection_id%7D\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"string\\\",\\\"data\\\":[{\\\"collection data1\\\":null,\\\"collection data2\\\":null}]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"name\\\":\\\"string\\\",\\\"data\\\":[{\\\"collection data1\\\":null,\\\"collection data2\\\":null}]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/collections/%7Bcollection_id%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/collections/%7Bcollection_id%7D\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"string\\\",\\\"data\\\":[{\\\"collection data1\\\":null,\\\"collection data2\\\":null}]}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/collections/{collection_id}/content": {
      "parameters": [
        {
          "name": "collection_id",
          "description": "The identifier for a collection.",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        }
      ],
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "summary": "Lookup collection contents",
        "description": "Retrieve the contents of a collection (the `data` from when you created or updated a collection). Each `row` in the collection is represented as a JSON blob in the response.",
        "tags": [
          "Collections"
        ],
        "operationId": "getCollectionContents",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Returns your collection's contents—the `data` (or `url` contents) from your POST or PUT call.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "x-additionalPropertiesName": "collection data"
                  }
                },
                "example": {
                  "eventName": "christmas",
                  "eventDate": "2021-12-25T12:00:00.000Z",
                  "presents": {
                    "something_you_want": "toys",
                    "something_you_need": "socks",
                    "total": 2
                  }
                }
              }
            }
          },
          "404": {
            "description": "The collection `id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/collections/{collection_id}/content"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/collections/%7Bcollection_id%7D/content\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/collections/%7Bcollection_id%7D/content\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/collections/%7Bcollection_id%7D/content\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/collections/%7Bcollection_id%7D/content\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "put": {
        "summary": "Update the contents of a collection",
        "description": "Replace the contents of a collection (the `data` from when you created or updated a collection). The request is a free-form object containing the keys you want to reference from the collection and the corresponding values. This request replaces the current contents of the collection entirely.\n\nIf you don't want to update the contents directly—you want to change the `name` or data `url` for your collection, use the [update a collection](#operation/updateCollection) endpoint.\n\n**Note**: A collection cannot be more than 10 MB in size. No individual row in the collection can be more than 10 KB.\n",
        "tags": [
          "Collections"
        ],
        "operationId": "updateCollectionContents",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "requestBody": {
          "description": "Your request is a free form object representing the contents of your collection. This request replaces the contents of the collection entirely, so include all contents that you want to remain in the collection—whether they change or not.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {
                  "x-additionalPropertiesName": "collection contents"
                }
              },
              "example": {
                "eventName": "christmas",
                "eventDate": "2021-12-25T12:00:00.000Z",
                "presents": {
                  "something_you_want": "toys",
                  "something_you_need": "socks",
                  "total": 2
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns your collection metadata and the updated schema.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "collection": {
                      "x-scalar-ignore": true,
                      "type": "object",
                      "properties": {
                        "bytes": {
                          "type": "integer",
                          "description": "The size of the collection in bytes.",
                          "example": 296
                        },
                        "created_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was created.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "updated_at": {
                          "x-scalar-ignore": true,
                          "type": "integer",
                          "format": "unix timestamp",
                          "description": "The date time when the referenced ID was last updated.",
                          "example": 1552341937,
                          "readOnly": true
                        },
                        "id": {
                          "type": "integer",
                          "description": "The identifier for the collection. This is how you'll reference the collection from the API.",
                          "example": 1
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the collection. This is how you'll reference the collection in liquid, e.g. `{{collection_name.data_property}}`.",
                          "example": "upcoming events"
                        },
                        "rows": {
                          "type": "integer",
                          "description": "Represents the number of objects in the `data` array or CSV rows in your collection schema.",
                          "example": 2
                        },
                        "schema": {
                          "type": "array",
                          "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`.",
                          "items": {
                            "type": "string"
                          },
                          "example": [
                            "eventDate",
                            "eventName",
                            "presents"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The collection `id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"eventName\": \"christmas\",\n  \"eventDate\": \"2021-12-25T12:00:00.000Z\",\n  \"presents\": {\n    \"something_you_want\": \"toys\",\n    \"something_you_need\": \"socks\",\n    \"total\": 2\n  }\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request PUT \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/collections/{collection_id}/content \\\n  --header 'content-type: application/json' \\\n  --data '{\"collection contents1\":null,\"collection contents2\":null}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"PUT\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/collections/%7Bcollection_id%7D/content\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({'collection contents1': null, 'collection contents2': null}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/collections/%7Bcollection_id%7D/content\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Put.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"collection contents1\\\":null,\\\"collection contents2\\\":null}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"collection contents1\\\":null,\\\"collection contents2\\\":null}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"PUT\", \"/v1/collections/%7Bcollection_id%7D/content\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/collections/%7Bcollection_id%7D/content\"\n\n\tpayload := strings.NewReader(\"{\\\"collection contents1\\\":null,\\\"collection contents2\\\":null}\")\n\n\treq, _ := http.NewRequest(\"PUT\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/customers": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "get": {
        "parameters": [
          {
            "name": "email",
            "description": "The email address you want to search for.",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "email"
            }
          }
        ],
        "summary": "Get customers by email",
        "operationId": "getPeopleEmail",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return a list of people in your workspace matching an email address.\n",
        "tags": [
          "Customers"
        ],
        "responses": {
          "200": {
            "description": "Returns an array of `results`; each result represents a person.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "description": "A list of customers matching the email address in your query.",
                      "items": {
                        "type": "object",
                        "required": [
                          "cio_id",
                          "id",
                          "email"
                        ],
                        "properties": {
                          "email": {
                            "type": "string",
                            "nullable": true,
                            "format": "email",
                            "description": "A person's email address, if set.",
                            "example": "hugh.mann@example.com"
                          },
                          "id": {
                            "type": "string",
                            "nullable": true,
                            "description": "A person's unique ID, if set.",
                            "example": 2
                          },
                          "cio_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                            "example": "a3000001"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request. Make sure that you provided the right credentials."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url 'https://api.customer.io/v1/customers?email=SOME_STRING_VALUE'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/customers?email=SOME_STRING_VALUE\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/customers?email=SOME_STRING_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/customers?email=SOME_STRING_VALUE\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/customers?email=SOME_STRING_VALUE\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      },
      "post": {
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "The maximum number of results you want to retrieve per page.",
            "schema": {
              "type": "integer",
              "default": 50,
              "maximum": 1000
            }
          }
        ],
        "summary": "Search for customers",
        "operationId": "getPeopleFilter",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Provide a filter to search for people in your workspace. Your filter can filter people by segment (using the Segment ID) and attribute values; when you filter by attributes, you can use `eq` (matching an attribute value) or `exists` (matching when a person has the attribute). Use the `and` array, `or` array, and `not` object to create a complex filter. The `not` selector is an object that takes a single filter.\n\nReturns arrays of `identifiers` and `ids`. In general, you should rely on the newer `identifiers` array, which contains more complete information about each person captured by the filter in your request, than the `ids` array, which only contains `id` values.\n\nYou can return up to 1000 people per request. If you want to return a larger set of people in a single request, you may want to use the [`/exports`](#tag/Exports) API instead. \n",
        "tags": [
          "Customers"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "filter"
                ],
                "properties": {
                  "filter": {
                    "x-scalar-ignore": true,
                    "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",
                    "oneOf": [
                      {
                        "x-scalar-ignore": true,
                        "title": "and",
                        "type": "object",
                        "properties": {
                          "and": {
                            "type": "array",
                            "description": "Match *all* conditions to return results.",
                            "items": {
                              "type": "object",
                              "properties": {
                                "or": {
                                  "type": "array",
                                  "description": "Returns results matching *any* conditions.",
                                  "items": {
                                    "x-scalar-ignore": true,
                                    "anyOf": [
                                      {
                                        "title": "segment",
                                        "description": "Filter for people who belong to a segment.",
                                        "type": "object",
                                        "properties": {
                                          "segment": {
                                            "x-scalar-ignore": true,
                                            "title": "segment",
                                            "type": "object",
                                            "description": "Provide the `id` of a segment containing people you want to search for.",
                                            "properties": {
                                              "id": {
                                                "type": "integer",
                                                "description": "The ID of the segment you want to return people from.",
                                                "example": 4
                                              }
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "title": "audience",
                                        "type": "object",
                                        "description": "filter for people who have an attribute or an attribute value.",
                                        "properties": {
                                          "attribute": {
                                            "x-scalar-ignore": true,
                                            "title": "attribute",
                                            "description": "Filter your audience by attribute.",
                                            "type": "object",
                                            "required": [
                                              "field",
                                              "operator"
                                            ],
                                            "properties": {
                                              "field": {
                                                "type": "string",
                                                "description": "The name of the attribute you want to filter against.",
                                                "example": "first_name"
                                              },
                                              "operator": {
                                                "type": "string",
                                                "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                "enum": [
                                                  "eq",
                                                  "exists"
                                                ]
                                              },
                                              "value": {
                                                "type": "string",
                                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                              }
                                            },
                                            "example": {
                                              "field": "unsubscribed",
                                              "operator": "eq",
                                              "value": true
                                            }
                                          }
                                        }
                                      }
                                    ]
                                  }
                                },
                                "not": {
                                  "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                  "oneOf": [
                                    {
                                      "title": "and",
                                      "type": "object",
                                      "properties": {
                                        "and": {
                                          "type": "array",
                                          "description": "Match *all* conditions to return results.",
                                          "items": {
                                            "x-scalar-ignore": true,
                                            "anyOf": [
                                              {
                                                "title": "segment",
                                                "description": "Filter for people who belong to a segment.",
                                                "type": "object",
                                                "properties": {
                                                  "segment": {
                                                    "x-scalar-ignore": true,
                                                    "title": "segment",
                                                    "type": "object",
                                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                                    "properties": {
                                                      "id": {
                                                        "type": "integer",
                                                        "description": "The ID of the segment you want to return people from.",
                                                        "example": 4
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              {
                                                "title": "audience",
                                                "type": "object",
                                                "description": "filter for people who have an attribute or an attribute value.",
                                                "properties": {
                                                  "attribute": {
                                                    "x-scalar-ignore": true,
                                                    "title": "attribute",
                                                    "description": "Filter your audience by attribute.",
                                                    "type": "object",
                                                    "required": [
                                                      "field",
                                                      "operator"
                                                    ],
                                                    "properties": {
                                                      "field": {
                                                        "type": "string",
                                                        "description": "The name of the attribute you want to filter against.",
                                                        "example": "first_name"
                                                      },
                                                      "operator": {
                                                        "type": "string",
                                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                        "enum": [
                                                          "eq",
                                                          "exists"
                                                        ]
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                      }
                                                    },
                                                    "example": {
                                                      "field": "unsubscribed",
                                                      "operator": "eq",
                                                      "value": true
                                                    }
                                                  }
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "or",
                                      "type": "object",
                                      "properties": {
                                        "or": {
                                          "type": "array",
                                          "description": "Match *any* condition to return results.",
                                          "items": {
                                            "x-scalar-ignore": true,
                                            "anyOf": [
                                              {
                                                "title": "segment",
                                                "description": "Filter for people who belong to a segment.",
                                                "type": "object",
                                                "properties": {
                                                  "segment": {
                                                    "x-scalar-ignore": true,
                                                    "title": "segment",
                                                    "type": "object",
                                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                                    "properties": {
                                                      "id": {
                                                        "type": "integer",
                                                        "description": "The ID of the segment you want to return people from.",
                                                        "example": 4
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              {
                                                "title": "audience",
                                                "type": "object",
                                                "description": "filter for people who have an attribute or an attribute value.",
                                                "properties": {
                                                  "attribute": {
                                                    "x-scalar-ignore": true,
                                                    "title": "attribute",
                                                    "description": "Filter your audience by attribute.",
                                                    "type": "object",
                                                    "required": [
                                                      "field",
                                                      "operator"
                                                    ],
                                                    "properties": {
                                                      "field": {
                                                        "type": "string",
                                                        "description": "The name of the attribute you want to filter against.",
                                                        "example": "first_name"
                                                      },
                                                      "operator": {
                                                        "type": "string",
                                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                        "enum": [
                                                          "eq",
                                                          "exists"
                                                        ]
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                      }
                                                    },
                                                    "example": {
                                                      "field": "unsubscribed",
                                                      "operator": "eq",
                                                      "value": true
                                                    }
                                                  }
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "segment",
                                      "type": "object",
                                      "properties": {
                                        "segment": {
                                          "x-scalar-ignore": true,
                                          "title": "segment",
                                          "type": "object",
                                          "description": "Provide the `id` of a segment containing people you want to search for.",
                                          "properties": {
                                            "id": {
                                              "type": "integer",
                                              "description": "The ID of the segment you want to return people from.",
                                              "example": 4
                                            }
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "attribute",
                                      "type": "object",
                                      "properties": {
                                        "attribute": {
                                          "x-scalar-ignore": true,
                                          "title": "attribute",
                                          "description": "Filter your audience by attribute.",
                                          "type": "object",
                                          "required": [
                                            "field",
                                            "operator"
                                          ],
                                          "properties": {
                                            "field": {
                                              "type": "string",
                                              "description": "The name of the attribute you want to filter against.",
                                              "example": "first_name"
                                            },
                                            "operator": {
                                              "type": "string",
                                              "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                              "enum": [
                                                "eq",
                                                "exists"
                                              ]
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                            }
                                          },
                                          "example": {
                                            "field": "unsubscribed",
                                            "operator": "eq",
                                            "value": true
                                          }
                                        }
                                      }
                                    }
                                  ]
                                },
                                "segment": {
                                  "x-scalar-ignore": true,
                                  "title": "segment",
                                  "type": "object",
                                  "description": "Provide the `id` of a segment containing people you want to search for.",
                                  "properties": {
                                    "id": {
                                      "type": "integer",
                                      "description": "The ID of the segment you want to return people from.",
                                      "example": 4
                                    }
                                  }
                                },
                                "attribute": {
                                  "x-scalar-ignore": true,
                                  "title": "attribute",
                                  "description": "Filter your audience by attribute.",
                                  "type": "object",
                                  "required": [
                                    "field",
                                    "operator"
                                  ],
                                  "properties": {
                                    "field": {
                                      "type": "string",
                                      "description": "The name of the attribute you want to filter against.",
                                      "example": "first_name"
                                    },
                                    "operator": {
                                      "type": "string",
                                      "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                      "enum": [
                                        "eq",
                                        "exists"
                                      ]
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                    }
                                  },
                                  "example": {
                                    "field": "unsubscribed",
                                    "operator": "eq",
                                    "value": true
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "title": "or",
                        "type": "object",
                        "properties": {
                          "or": {
                            "type": "array",
                            "description": "Match *any* condition to return results.",
                            "items": {
                              "type": "object",
                              "properties": {
                                "and": {
                                  "type": "array",
                                  "description": "Returns results matching *all* conditions.",
                                  "items": {
                                    "x-scalar-ignore": true,
                                    "anyOf": [
                                      {
                                        "title": "segment",
                                        "description": "Filter for people who belong to a segment.",
                                        "type": "object",
                                        "properties": {
                                          "segment": {
                                            "x-scalar-ignore": true,
                                            "title": "segment",
                                            "type": "object",
                                            "description": "Provide the `id` of a segment containing people you want to search for.",
                                            "properties": {
                                              "id": {
                                                "type": "integer",
                                                "description": "The ID of the segment you want to return people from.",
                                                "example": 4
                                              }
                                            }
                                          }
                                        }
                                      },
                                      {
                                        "title": "audience",
                                        "type": "object",
                                        "description": "filter for people who have an attribute or an attribute value.",
                                        "properties": {
                                          "attribute": {
                                            "x-scalar-ignore": true,
                                            "title": "attribute",
                                            "description": "Filter your audience by attribute.",
                                            "type": "object",
                                            "required": [
                                              "field",
                                              "operator"
                                            ],
                                            "properties": {
                                              "field": {
                                                "type": "string",
                                                "description": "The name of the attribute you want to filter against.",
                                                "example": "first_name"
                                              },
                                              "operator": {
                                                "type": "string",
                                                "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                "enum": [
                                                  "eq",
                                                  "exists"
                                                ]
                                              },
                                              "value": {
                                                "type": "string",
                                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                              }
                                            },
                                            "example": {
                                              "field": "unsubscribed",
                                              "operator": "eq",
                                              "value": true
                                            }
                                          }
                                        }
                                      }
                                    ]
                                  }
                                },
                                "not": {
                                  "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                  "oneOf": [
                                    {
                                      "title": "and",
                                      "type": "object",
                                      "properties": {
                                        "and": {
                                          "type": "array",
                                          "description": "Match *all* conditions to return results.",
                                          "items": {
                                            "x-scalar-ignore": true,
                                            "anyOf": [
                                              {
                                                "title": "segment",
                                                "description": "Filter for people who belong to a segment.",
                                                "type": "object",
                                                "properties": {
                                                  "segment": {
                                                    "x-scalar-ignore": true,
                                                    "title": "segment",
                                                    "type": "object",
                                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                                    "properties": {
                                                      "id": {
                                                        "type": "integer",
                                                        "description": "The ID of the segment you want to return people from.",
                                                        "example": 4
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              {
                                                "title": "audience",
                                                "type": "object",
                                                "description": "filter for people who have an attribute or an attribute value.",
                                                "properties": {
                                                  "attribute": {
                                                    "x-scalar-ignore": true,
                                                    "title": "attribute",
                                                    "description": "Filter your audience by attribute.",
                                                    "type": "object",
                                                    "required": [
                                                      "field",
                                                      "operator"
                                                    ],
                                                    "properties": {
                                                      "field": {
                                                        "type": "string",
                                                        "description": "The name of the attribute you want to filter against.",
                                                        "example": "first_name"
                                                      },
                                                      "operator": {
                                                        "type": "string",
                                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                        "enum": [
                                                          "eq",
                                                          "exists"
                                                        ]
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                      }
                                                    },
                                                    "example": {
                                                      "field": "unsubscribed",
                                                      "operator": "eq",
                                                      "value": true
                                                    }
                                                  }
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "or",
                                      "type": "object",
                                      "properties": {
                                        "or": {
                                          "type": "array",
                                          "description": "Match *any* condition to return results.",
                                          "items": {
                                            "x-scalar-ignore": true,
                                            "anyOf": [
                                              {
                                                "title": "segment",
                                                "description": "Filter for people who belong to a segment.",
                                                "type": "object",
                                                "properties": {
                                                  "segment": {
                                                    "x-scalar-ignore": true,
                                                    "title": "segment",
                                                    "type": "object",
                                                    "description": "Provide the `id` of a segment containing people you want to search for.",
                                                    "properties": {
                                                      "id": {
                                                        "type": "integer",
                                                        "description": "The ID of the segment you want to return people from.",
                                                        "example": 4
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              {
                                                "title": "audience",
                                                "type": "object",
                                                "description": "filter for people who have an attribute or an attribute value.",
                                                "properties": {
                                                  "attribute": {
                                                    "x-scalar-ignore": true,
                                                    "title": "attribute",
                                                    "description": "Filter your audience by attribute.",
                                                    "type": "object",
                                                    "required": [
                                                      "field",
                                                      "operator"
                                                    ],
                                                    "properties": {
                                                      "field": {
                                                        "type": "string",
                                                        "description": "The name of the attribute you want to filter against.",
                                                        "example": "first_name"
                                                      },
                                                      "operator": {
                                                        "type": "string",
                                                        "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                        "enum": [
                                                          "eq",
                                                          "exists"
                                                        ]
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                      }
                                                    },
                                                    "example": {
                                                      "field": "unsubscribed",
                                                      "operator": "eq",
                                                      "value": true
                                                    }
                                                  }
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "segment",
                                      "type": "object",
                                      "properties": {
                                        "segment": {
                                          "x-scalar-ignore": true,
                                          "title": "segment",
                                          "type": "object",
                                          "description": "Provide the `id` of a segment containing people you want to search for.",
                                          "properties": {
                                            "id": {
                                              "type": "integer",
                                              "description": "The ID of the segment you want to return people from.",
                                              "example": 4
                                            }
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "title": "attribute",
                                      "type": "object",
                                      "properties": {
                                        "attribute": {
                                          "x-scalar-ignore": true,
                                          "title": "attribute",
                                          "description": "Filter your audience by attribute.",
                                          "type": "object",
                                          "required": [
                                            "field",
                                            "operator"
                                          ],
                                          "properties": {
                                            "field": {
                                              "type": "string",
                                              "description": "The name of the attribute you want to filter against.",
                                              "example": "first_name"
                                            },
                                            "operator": {
                                              "type": "string",
                                              "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                              "enum": [
                                                "eq",
                                                "exists"
                                              ]
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                            }
                                          },
                                          "example": {
                                            "field": "unsubscribed",
                                            "operator": "eq",
                                            "value": true
                                          }
                                        }
                                      }
                                    }
                                  ]
                                },
                                "segment": {
                                  "x-scalar-ignore": true,
                                  "title": "segment",
                                  "type": "object",
                                  "description": "Provide the `id` of a segment containing people you want to search for.",
                                  "properties": {
                                    "id": {
                                      "type": "integer",
                                      "description": "The ID of the segment you want to return people from.",
                                      "example": 4
                                    }
                                  }
                                },
                                "attribute": {
                                  "x-scalar-ignore": true,
                                  "title": "attribute",
                                  "description": "Filter your audience by attribute.",
                                  "type": "object",
                                  "required": [
                                    "field",
                                    "operator"
                                  ],
                                  "properties": {
                                    "field": {
                                      "type": "string",
                                      "description": "The name of the attribute you want to filter against.",
                                      "example": "first_name"
                                    },
                                    "operator": {
                                      "type": "string",
                                      "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                      "enum": [
                                        "eq",
                                        "exists"
                                      ]
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                    }
                                  },
                                  "example": {
                                    "field": "unsubscribed",
                                    "operator": "eq",
                                    "value": true
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      {
                        "x-scalar-ignore": true,
                        "title": "not",
                        "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                        "oneOf": [
                          {
                            "title": "and",
                            "type": "object",
                            "properties": {
                              "and": {
                                "type": "array",
                                "description": "Match *all* conditions to return results.",
                                "items": {
                                  "x-scalar-ignore": true,
                                  "title": "People Filter",
                                  "type": "object",
                                  "description": "When filtering for people, you can use `and` and `or` arrays to determine the logic for a group of filter conditions. `not` reverses the filter condition and matches when the condition is false. `segment` and `attribute` represent the individual conditions you can filter a group of people for.",
                                  "properties": {
                                    "and": {
                                      "type": "array",
                                      "description": "Returns results matching *all* conditions.",
                                      "items": {
                                        "x-scalar-ignore": true,
                                        "anyOf": [
                                          {
                                            "title": "segment",
                                            "description": "Filter for people who belong to a segment.",
                                            "type": "object",
                                            "properties": {
                                              "segment": {
                                                "x-scalar-ignore": true,
                                                "title": "segment",
                                                "type": "object",
                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                "properties": {
                                                  "id": {
                                                    "type": "integer",
                                                    "description": "The ID of the segment you want to return people from.",
                                                    "example": 4
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          {
                                            "title": "audience",
                                            "type": "object",
                                            "description": "filter for people who have an attribute or an attribute value.",
                                            "properties": {
                                              "attribute": {
                                                "x-scalar-ignore": true,
                                                "title": "attribute",
                                                "description": "Filter your audience by attribute.",
                                                "type": "object",
                                                "required": [
                                                  "field",
                                                  "operator"
                                                ],
                                                "properties": {
                                                  "field": {
                                                    "type": "string",
                                                    "description": "The name of the attribute you want to filter against.",
                                                    "example": "first_name"
                                                  },
                                                  "operator": {
                                                    "type": "string",
                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                    "enum": [
                                                      "eq",
                                                      "exists"
                                                    ]
                                                  },
                                                  "value": {
                                                    "type": "string",
                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                  }
                                                },
                                                "example": {
                                                  "field": "unsubscribed",
                                                  "operator": "eq",
                                                  "value": true
                                                }
                                              }
                                            }
                                          }
                                        ]
                                      }
                                    },
                                    "or": {
                                      "type": "array",
                                      "description": "Returns results matching *any* conditions.",
                                      "items": {
                                        "x-scalar-ignore": true,
                                        "anyOf": [
                                          {
                                            "title": "segment",
                                            "description": "Filter for people who belong to a segment.",
                                            "type": "object",
                                            "properties": {
                                              "segment": {
                                                "x-scalar-ignore": true,
                                                "title": "segment",
                                                "type": "object",
                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                "properties": {
                                                  "id": {
                                                    "type": "integer",
                                                    "description": "The ID of the segment you want to return people from.",
                                                    "example": 4
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          {
                                            "title": "audience",
                                            "type": "object",
                                            "description": "filter for people who have an attribute or an attribute value.",
                                            "properties": {
                                              "attribute": {
                                                "x-scalar-ignore": true,
                                                "title": "attribute",
                                                "description": "Filter your audience by attribute.",
                                                "type": "object",
                                                "required": [
                                                  "field",
                                                  "operator"
                                                ],
                                                "properties": {
                                                  "field": {
                                                    "type": "string",
                                                    "description": "The name of the attribute you want to filter against.",
                                                    "example": "first_name"
                                                  },
                                                  "operator": {
                                                    "type": "string",
                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                    "enum": [
                                                      "eq",
                                                      "exists"
                                                    ]
                                                  },
                                                  "value": {
                                                    "type": "string",
                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                  }
                                                },
                                                "example": {
                                                  "field": "unsubscribed",
                                                  "operator": "eq",
                                                  "value": true
                                                }
                                              }
                                            }
                                          }
                                        ]
                                      }
                                    },
                                    "not": {
                                      "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                      "oneOf": [
                                        {
                                          "title": "and",
                                          "type": "object",
                                          "properties": {
                                            "and": {
                                              "type": "array",
                                              "description": "Match *all* conditions to return results.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "or",
                                          "type": "object",
                                          "properties": {
                                            "or": {
                                              "type": "array",
                                              "description": "Match *any* condition to return results.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "segment",
                                          "type": "object",
                                          "properties": {
                                            "segment": {
                                              "x-scalar-ignore": true,
                                              "title": "segment",
                                              "type": "object",
                                              "description": "Provide the `id` of a segment containing people you want to search for.",
                                              "properties": {
                                                "id": {
                                                  "type": "integer",
                                                  "description": "The ID of the segment you want to return people from.",
                                                  "example": 4
                                                }
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "attribute",
                                          "type": "object",
                                          "properties": {
                                            "attribute": {
                                              "x-scalar-ignore": true,
                                              "title": "attribute",
                                              "description": "Filter your audience by attribute.",
                                              "type": "object",
                                              "required": [
                                                "field",
                                                "operator"
                                              ],
                                              "properties": {
                                                "field": {
                                                  "type": "string",
                                                  "description": "The name of the attribute you want to filter against.",
                                                  "example": "first_name"
                                                },
                                                "operator": {
                                                  "type": "string",
                                                  "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                  "enum": [
                                                    "eq",
                                                    "exists"
                                                  ]
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                }
                                              },
                                              "example": {
                                                "field": "unsubscribed",
                                                "operator": "eq",
                                                "value": true
                                              }
                                            }
                                          }
                                        }
                                      ]
                                    },
                                    "segment": {
                                      "x-scalar-ignore": true,
                                      "title": "segment",
                                      "type": "object",
                                      "description": "Provide the `id` of a segment containing people you want to search for.",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "description": "The ID of the segment you want to return people from.",
                                          "example": 4
                                        }
                                      }
                                    },
                                    "attribute": {
                                      "x-scalar-ignore": true,
                                      "title": "attribute",
                                      "description": "Filter your audience by attribute.",
                                      "type": "object",
                                      "required": [
                                        "field",
                                        "operator"
                                      ],
                                      "properties": {
                                        "field": {
                                          "type": "string",
                                          "description": "The name of the attribute you want to filter against.",
                                          "example": "first_name"
                                        },
                                        "operator": {
                                          "type": "string",
                                          "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                          "enum": [
                                            "eq",
                                            "exists"
                                          ]
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                        }
                                      },
                                      "example": {
                                        "field": "unsubscribed",
                                        "operator": "eq",
                                        "value": true
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          {
                            "title": "or",
                            "type": "object",
                            "properties": {
                              "or": {
                                "type": "array",
                                "description": "Match *any* condition to return results.",
                                "items": {
                                  "x-scalar-ignore": true,
                                  "title": "People Filter",
                                  "type": "object",
                                  "description": "When filtering for people, you can use `and` and `or` arrays to determine the logic for a group of filter conditions. `not` reverses the filter condition and matches when the condition is false. `segment` and `attribute` represent the individual conditions you can filter a group of people for.",
                                  "properties": {
                                    "and": {
                                      "type": "array",
                                      "description": "Returns results matching *all* conditions.",
                                      "items": {
                                        "x-scalar-ignore": true,
                                        "anyOf": [
                                          {
                                            "title": "segment",
                                            "description": "Filter for people who belong to a segment.",
                                            "type": "object",
                                            "properties": {
                                              "segment": {
                                                "x-scalar-ignore": true,
                                                "title": "segment",
                                                "type": "object",
                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                "properties": {
                                                  "id": {
                                                    "type": "integer",
                                                    "description": "The ID of the segment you want to return people from.",
                                                    "example": 4
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          {
                                            "title": "audience",
                                            "type": "object",
                                            "description": "filter for people who have an attribute or an attribute value.",
                                            "properties": {
                                              "attribute": {
                                                "x-scalar-ignore": true,
                                                "title": "attribute",
                                                "description": "Filter your audience by attribute.",
                                                "type": "object",
                                                "required": [
                                                  "field",
                                                  "operator"
                                                ],
                                                "properties": {
                                                  "field": {
                                                    "type": "string",
                                                    "description": "The name of the attribute you want to filter against.",
                                                    "example": "first_name"
                                                  },
                                                  "operator": {
                                                    "type": "string",
                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                    "enum": [
                                                      "eq",
                                                      "exists"
                                                    ]
                                                  },
                                                  "value": {
                                                    "type": "string",
                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                  }
                                                },
                                                "example": {
                                                  "field": "unsubscribed",
                                                  "operator": "eq",
                                                  "value": true
                                                }
                                              }
                                            }
                                          }
                                        ]
                                      }
                                    },
                                    "or": {
                                      "type": "array",
                                      "description": "Returns results matching *any* conditions.",
                                      "items": {
                                        "x-scalar-ignore": true,
                                        "anyOf": [
                                          {
                                            "title": "segment",
                                            "description": "Filter for people who belong to a segment.",
                                            "type": "object",
                                            "properties": {
                                              "segment": {
                                                "x-scalar-ignore": true,
                                                "title": "segment",
                                                "type": "object",
                                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                                "properties": {
                                                  "id": {
                                                    "type": "integer",
                                                    "description": "The ID of the segment you want to return people from.",
                                                    "example": 4
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          {
                                            "title": "audience",
                                            "type": "object",
                                            "description": "filter for people who have an attribute or an attribute value.",
                                            "properties": {
                                              "attribute": {
                                                "x-scalar-ignore": true,
                                                "title": "attribute",
                                                "description": "Filter your audience by attribute.",
                                                "type": "object",
                                                "required": [
                                                  "field",
                                                  "operator"
                                                ],
                                                "properties": {
                                                  "field": {
                                                    "type": "string",
                                                    "description": "The name of the attribute you want to filter against.",
                                                    "example": "first_name"
                                                  },
                                                  "operator": {
                                                    "type": "string",
                                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                    "enum": [
                                                      "eq",
                                                      "exists"
                                                    ]
                                                  },
                                                  "value": {
                                                    "type": "string",
                                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                  }
                                                },
                                                "example": {
                                                  "field": "unsubscribed",
                                                  "operator": "eq",
                                                  "value": true
                                                }
                                              }
                                            }
                                          }
                                        ]
                                      }
                                    },
                                    "not": {
                                      "description": "Returns results if a condition is false. While and/or support an array of items, `not` supports a single filter object.",
                                      "oneOf": [
                                        {
                                          "title": "and",
                                          "type": "object",
                                          "properties": {
                                            "and": {
                                              "type": "array",
                                              "description": "Match *all* conditions to return results.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "or",
                                          "type": "object",
                                          "properties": {
                                            "or": {
                                              "type": "array",
                                              "description": "Match *any* condition to return results.",
                                              "items": {
                                                "x-scalar-ignore": true,
                                                "anyOf": [
                                                  {
                                                    "title": "segment",
                                                    "description": "Filter for people who belong to a segment.",
                                                    "type": "object",
                                                    "properties": {
                                                      "segment": {
                                                        "x-scalar-ignore": true,
                                                        "title": "segment",
                                                        "type": "object",
                                                        "description": "Provide the `id` of a segment containing people you want to search for.",
                                                        "properties": {
                                                          "id": {
                                                            "type": "integer",
                                                            "description": "The ID of the segment you want to return people from.",
                                                            "example": 4
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  {
                                                    "title": "audience",
                                                    "type": "object",
                                                    "description": "filter for people who have an attribute or an attribute value.",
                                                    "properties": {
                                                      "attribute": {
                                                        "x-scalar-ignore": true,
                                                        "title": "attribute",
                                                        "description": "Filter your audience by attribute.",
                                                        "type": "object",
                                                        "required": [
                                                          "field",
                                                          "operator"
                                                        ],
                                                        "properties": {
                                                          "field": {
                                                            "type": "string",
                                                            "description": "The name of the attribute you want to filter against.",
                                                            "example": "first_name"
                                                          },
                                                          "operator": {
                                                            "type": "string",
                                                            "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                            "enum": [
                                                              "eq",
                                                              "exists"
                                                            ]
                                                          },
                                                          "value": {
                                                            "type": "string",
                                                            "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                          }
                                                        },
                                                        "example": {
                                                          "field": "unsubscribed",
                                                          "operator": "eq",
                                                          "value": true
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "segment",
                                          "type": "object",
                                          "properties": {
                                            "segment": {
                                              "x-scalar-ignore": true,
                                              "title": "segment",
                                              "type": "object",
                                              "description": "Provide the `id` of a segment containing people you want to search for.",
                                              "properties": {
                                                "id": {
                                                  "type": "integer",
                                                  "description": "The ID of the segment you want to return people from.",
                                                  "example": 4
                                                }
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "title": "attribute",
                                          "type": "object",
                                          "properties": {
                                            "attribute": {
                                              "x-scalar-ignore": true,
                                              "title": "attribute",
                                              "description": "Filter your audience by attribute.",
                                              "type": "object",
                                              "required": [
                                                "field",
                                                "operator"
                                              ],
                                              "properties": {
                                                "field": {
                                                  "type": "string",
                                                  "description": "The name of the attribute you want to filter against.",
                                                  "example": "first_name"
                                                },
                                                "operator": {
                                                  "type": "string",
                                                  "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                                  "enum": [
                                                    "eq",
                                                    "exists"
                                                  ]
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                                }
                                              },
                                              "example": {
                                                "field": "unsubscribed",
                                                "operator": "eq",
                                                "value": true
                                              }
                                            }
                                          }
                                        }
                                      ]
                                    },
                                    "segment": {
                                      "x-scalar-ignore": true,
                                      "title": "segment",
                                      "type": "object",
                                      "description": "Provide the `id` of a segment containing people you want to search for.",
                                      "properties": {
                                        "id": {
                                          "type": "integer",
                                          "description": "The ID of the segment you want to return people from.",
                                          "example": 4
                                        }
                                      }
                                    },
                                    "attribute": {
                                      "x-scalar-ignore": true,
                                      "title": "attribute",
                                      "description": "Filter your audience by attribute.",
                                      "type": "object",
                                      "required": [
                                        "field",
                                        "operator"
                                      ],
                                      "properties": {
                                        "field": {
                                          "type": "string",
                                          "description": "The name of the attribute you want to filter against.",
                                          "example": "first_name"
                                        },
                                        "operator": {
                                          "type": "string",
                                          "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                          "enum": [
                                            "eq",
                                            "exists"
                                          ]
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                        }
                                      },
                                      "example": {
                                        "field": "unsubscribed",
                                        "operator": "eq",
                                        "value": true
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          {
                            "title": "segment",
                            "type": "object",
                            "properties": {
                              "segment": {
                                "x-scalar-ignore": true,
                                "title": "segment",
                                "type": "object",
                                "description": "Provide the `id` of a segment containing people you want to search for.",
                                "properties": {
                                  "id": {
                                    "type": "integer",
                                    "description": "The ID of the segment you want to return people from.",
                                    "example": 4
                                  }
                                }
                              }
                            }
                          },
                          {
                            "title": "attribute",
                            "type": "object",
                            "properties": {
                              "attribute": {
                                "x-scalar-ignore": true,
                                "title": "attribute",
                                "description": "Filter your audience by attribute.",
                                "type": "object",
                                "required": [
                                  "field",
                                  "operator"
                                ],
                                "properties": {
                                  "field": {
                                    "type": "string",
                                    "description": "The name of the attribute you want to filter against.",
                                    "example": "first_name"
                                  },
                                  "operator": {
                                    "type": "string",
                                    "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                    "enum": [
                                      "eq",
                                      "exists"
                                    ]
                                  },
                                  "value": {
                                    "type": "string",
                                    "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                                  }
                                },
                                "example": {
                                  "field": "unsubscribed",
                                  "operator": "eq",
                                  "value": true
                                }
                              }
                            }
                          }
                        ]
                      },
                      {
                        "title": "segment",
                        "description": "Filter for people who belong to a segment.",
                        "type": "object",
                        "properties": {
                          "segment": {
                            "x-scalar-ignore": true,
                            "title": "segment",
                            "type": "object",
                            "description": "Provide the `id` of a segment containing people you want to search for.",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "The ID of the segment you want to return people from.",
                                "example": 4
                              }
                            }
                          }
                        }
                      },
                      {
                        "title": "audience",
                        "type": "object",
                        "description": "filter for people who have an attribute or an attribute value.",
                        "properties": {
                          "attribute": {
                            "x-scalar-ignore": true,
                            "title": "attribute",
                            "description": "Filter your audience by attribute.",
                            "type": "object",
                            "required": [
                              "field",
                              "operator"
                            ],
                            "properties": {
                              "field": {
                                "type": "string",
                                "description": "The name of the attribute you want to filter against.",
                                "example": "first_name"
                              },
                              "operator": {
                                "type": "string",
                                "description": "Determine how to evaluate criteria against the field—`exists` returns results if a person in the audience has the attribute; `eq` returns results if the audience has the attribute and the attribute has the `value` you specify.",
                                "enum": [
                                  "eq",
                                  "exists"
                                ]
                              },
                              "value": {
                                "type": "string",
                                "description": "The value you want to match for this attribute. You must include a value if you use the `eq` operator."
                              }
                            },
                            "example": {
                              "field": "unsubscribed",
                              "operator": "eq",
                              "value": true
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              },
              "example": {
                "filter": {
                  "and": [
                    {
                      "attribute": {
                        "field": "email",
                        "operator": "eq",
                        "value": "{{customer.email}}"
                      }
                    },
                    {
                      "not": {
                        "attribute": {
                          "field": "source",
                          "operator": "eq",
                          "value": "website_newsletter"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an array of customers matching your filters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "identifiers": {
                      "type": "array",
                      "description": "An array of objects, where each object represents a customer. Each object contains identifiers for a customer.",
                      "items": {
                        "type": "object",
                        "required": [
                          "email",
                          "id",
                          "cio_id"
                        ],
                        "properties": {
                          "email": {
                            "type": "string",
                            "nullable": true,
                            "format": "email",
                            "description": "A person's email address, if set.",
                            "example": "hugh.mann@example.com"
                          },
                          "id": {
                            "type": "string",
                            "nullable": true,
                            "description": "A person's unique ID, if set.",
                            "example": 2
                          },
                          "cio_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                            "example": "a3000001"
                          }
                        }
                      }
                    },
                    "ids": {
                      "type": "array",
                      "description": "In general, you should use the `identifiers` array. This array contains identifiers for people captured in your filter. However, as of June 2021, some workspaces let you add people without an `id`. Entries without an `id` are empty strings in this array, where the `identifiers` array contains more complete information for each person captured in the filter.\n",
                      "items": {
                        "type": "string"
                      }
                    },
                    "next": {
                      "type": "string",
                      "description": "The `start` value for the next page of results."
                    }
                  },
                  "example": {
                    "identifiers": [
                      {
                        "id": 1,
                        "email": "person@example.com",
                        "cio_id": 3000001
                      },
                      {
                        "id": 2,
                        "email": "second.person@exapmle.com",
                        "cio_id": 3000002
                      }
                    ],
                    "ids": [
                      1,
                      2
                    ],
                    "next": "MDox"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request. Make sure that you provided the right credentials."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"filter\": {\n    \"and\": [\n      {\n        \"attribute\": {\n          \"field\": \"email\",\n          \"operator\": \"eq\",\n          \"value\": \"{{customer.email}}\"\n        }\n      },\n      {\n        \"not\": {\n          \"attribute\": {\n            \"field\": \"source\",\n            \"operator\": \"eq\",\n            \"value\": \"website_newsletter\"\n          }\n        }\n      }\n    ]\n  }\n}"
          },
          {
            "lang": "cURL",
            "source": "curl --request POST \\\n--url 'https://api.customer.io/v1/customers?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE' \\\n--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n--header 'content-type: application/json' \\\n--data '{\"filter\":{\"and\": [{\"segment\":{\"id\": 4}},{\"attribute\":{\"field\": \"likes_pizza\",\"operator\": \"eq\",\"value\": true}}]}}'\n"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url 'https://api.customer.io/v1/customers?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE' \\\n  --header 'content-type: application/json' \\\n  --data '{\"filter\":{\"and\":[{\"or\":[{\"segment\":{\"id\":4}}],\"not\":{\"and\":[{\"segment\":{\"id\":4}}]},\"segment\":{\"id\":4},\"attribute\":{\"field\":\"unsubscribed\",\"operator\":\"eq\",\"value\":true}}]}}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/customers?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({\n  filter: {\n    and: [\n      {\n        or: [{segment: {id: 4}}],\n        not: {and: [{segment: {id: 4}}]},\n        segment: {id: 4},\n        attribute: {field: 'unsubscribed', operator: 'eq', value: true}\n      }\n    ]\n  }\n}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/customers?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"filter\\\":{\\\"and\\\":[{\\\"or\\\":[{\\\"segment\\\":{\\\"id\\\":4}}],\\\"not\\\":{\\\"and\\\":[{\\\"segment\\\":{\\\"id\\\":4}}]},\\\"segment\\\":{\\\"id\\\":4},\\\"attribute\\\":{\\\"field\\\":\\\"unsubscribed\\\",\\\"operator\\\":\\\"eq\\\",\\\"value\\\":true}}]}}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"filter\\\":{\\\"and\\\":[{\\\"or\\\":[{\\\"segment\\\":{\\\"id\\\":4}}],\\\"not\\\":{\\\"and\\\":[{\\\"segment\\\":{\\\"id\\\":4}}]},\\\"segment\\\":{\\\"id\\\":4},\\\"attribute\\\":{\\\"field\\\":\\\"unsubscribed\\\",\\\"operator\\\":\\\"eq\\\",\\\"value\\\":true}}]}}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/customers?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/customers?start=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE\"\n\n\tpayload := strings.NewReader(\"{\\\"filter\\\":{\\\"and\\\":[{\\\"or\\\":[{\\\"segment\\\":{\\\"id\\\":4}}],\\\"not\\\":{\\\"and\\\":[{\\\"segment\\\":{\\\"id\\\":4}}]},\\\"segment\\\":{\\\"id\\\":4},\\\"attribute\\\":{\\\"field\\\":\\\"unsubscribed\\\",\\\"operator\\\":\\\"eq\\\",\\\"value\\\":true}}]}}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/customers/{customer_id}/attributes": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "customer_id",
          "required": true,
          "in": "path",
          "description": "The ID of the customer you want to perform an operation against.",
          "schema": {
            "type": "string",
            "example": 12345
          }
        },
        {
          "name": "id_type",
          "required": false,
          "in": "query",
          "description": "The type of `customer_id` you want to use to reference a person. If you don't provide this parameter, we assume that the `customer_id` in your request is a person's `id`.",
          "schema": {
            "type": "string",
            "enum": [
              "id",
              "email",
              "cio_id"
            ]
          }
        }
      ],
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Lookup a customer's attributes",
        "operationId": "getPersonAttributes",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return a list of attributes for a customer profile. You can use attributes to fashion segments or as liquid merge fields in your messages.",
        "responses": {
          "200": {
            "description": "Returns the `customer` and associated attributes.",
            "content": {
              "application/json": {
                "schema": {
                  "x-scalar-ignore": true,
                  "type": "object",
                  "properties": {
                    "customer": {
                      "type": "object",
                      "description": "The profile you referenced by ID in the request.",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The customer ID referenced in the request."
                        },
                        "identifiers": {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                          "required": [
                            "email",
                            "id",
                            "cio_id"
                          ],
                          "properties": {
                            "email": {
                              "type": "string",
                              "nullable": true,
                              "format": "email",
                              "description": "A person's email address, if set.",
                              "example": "test@example.com"
                            },
                            "id": {
                              "type": "string",
                              "nullable": true,
                              "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                              "example": 2
                            },
                            "cio_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                              "example": "a3000001"
                            }
                          }
                        },
                        "attributes": {
                          "type": "object",
                          "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.",
                          "properties": {
                            "id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                              "nullable": true,
                              "example": "42"
                            },
                            "email": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "The email address of the customer.",
                              "nullable": true,
                              "example": "test@example.com"
                            },
                            "cio_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                              "example": "a3000001"
                            },
                            "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](/subscription-preferences/#backfill-preferences).  \n"
                            }
                          },
                          "additionalProperties": {
                            "x-additionalPropertiesName": "additional attributes",
                            "description": "Non-identifier attributes assigned to this person.",
                            "type": "string"
                          }
                        },
                        "timestamps": {
                          "deprecated": true,
                          "type": "object",
                          "description": "The epoch timestamps when corresponding attributes were set on the customer profile.",
                          "properties": {
                            "cio_id": {
                              "type": "integer",
                              "description": "The date-time when `cio_id` was assigned.",
                              "format": "unix timestamp"
                            },
                            "_last_emailed": {
                              "type": "integer",
                              "description": "The date-time when you last emailed a person.",
                              "format": "unix timestamp"
                            },
                            "email": {
                              "type": "integer",
                              "description": "The date-time when the person's email address was added.",
                              "format": "unix timestamp"
                            },
                            "id": {
                              "type": "integer",
                              "description": "The date-time when the person's ID was generated.",
                              "format": "unix timestamp"
                            },
                            "unsubscribed": {
                              "type": "integer",
                              "description": "The date-time when the person unsubscribed.",
                              "format": "unix timestamp"
                            },
                            "_cio_subscription_preferences_computed": {
                              "type": "integer",
                              "description": "Because this value is computed and not actually set on a person, this value is always 0"
                            },
                            "cio_subscription_preferences": {
                              "type": "integer",
                              "description": "The datetime when a person's subscription preferences were last updated.",
                              "format": "unix timestamp"
                            },
                            "additionalProperties": {
                              "x-additionalPropertiesName": "additional attribute timestamps",
                              "description": "Timestamps when attributes assigned to the person were set.",
                              "format": "unix timestamp"
                            }
                          }
                        },
                        "unsubscribed": {
                          "type": "boolean",
                          "description": "If `true`, a person is unsubscribed from emails, SMS, WhatsApp, and push notifications (not in-app messages). Any casing of \"true\" (i.e. TRUE, true, tRUe, etc.), 1, or \"1\" means the person is unsubscribed. If `false`, absent, or any value not considered \"true\", a person is globally subscribed, or if you enabled a subscription center, a person will receive messages based on their `cio_subscription_preferences`."
                        },
                        "devices": {
                          "type": "array",
                          "description": "Lists the devices associated with the customer profile.",
                          "items": {
                            "x-scalar-ignore": true,
                            "description": "The properties representing an individual device. [Our SDK's](/integrations/sdk/) gather all the properties defined below automatically, unless you disable the `autoTrackDeviceAttributes` setting. You can reference the properties outside the `attributes` object in segments or in Liquid.",
                            "allOf": [
                              {
                                "type": "object",
                                "required": [
                                  "id"
                                ],
                                "properties": {
                                  "id": {
                                    "description": "The device token.",
                                    "type": "string"
                                  }
                                }
                              },
                              {
                                "x-scalar-ignore": true,
                                "type": "object",
                                "description": "Device information common to the v1 and v2 APIs.",
                                "required": [
                                  "platform"
                                ],
                                "properties": {
                                  "last_used": {
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The `timestamp` when you last identified this device. If you don't pass a timestamp when you add or update a device, we use the time of the request itself. Our SDKs identify a device when a person launches their app."
                                  },
                                  "platform": {
                                    "type": "string",
                                    "enum": [
                                      "ios",
                                      "android"
                                    ],
                                    "description": "The device/messaging platform."
                                  },
                                  "attributes": {
                                    "type": "object",
                                    "description": "Attributes that you can reference to segment your audience—like a person's attributes, but specific to a device. These can be either the attributes defined below or custom key-value attributes.",
                                    "properties": {
                                      "device_os": {
                                        "type": "string",
                                        "description": "The operating system, including the version, on the device."
                                      },
                                      "device_model": {
                                        "type": "string",
                                        "description": "The model of the device a person uses."
                                      },
                                      "app_version": {
                                        "type": "string",
                                        "description": "The version of your app that a customer uses. You might target app versions to let people know when they need to update, or expose them to new features when they do."
                                      },
                                      "cio_sdk_version": {
                                        "type": "string",
                                        "description": "The version of the Customer.io SDK in the app."
                                      },
                                      "_last_status": {
                                        "type": "string",
                                        "readOnly": true,
                                        "description": "The delivery status of the last message sent to the device—sent, bounced, or suppressed. An empty string indicates that that the device hasn't received a push yet.",
                                        "enum": [
                                          "",
                                          "bounced",
                                          "sent",
                                          "suppressed"
                                        ]
                                      },
                                      "device_locale": {
                                        "type": "string",
                                        "description": "The four-letter [IETF language code](/localization/#supported-languages) for the device. For example, `en-MX` (indicating an app in Spanish formatted for a user in Mexico) or `es-ES` (indicating an app in Spanish formatted for a user in Spain)."
                                      },
                                      "push_enabled": {
                                        "type": "string",
                                        "description": "If `\"true\"`, the device is opted-in and can receive push notifications.",
                                        "enum": [
                                          "true",
                                          "false"
                                        ]
                                      }
                                    },
                                    "additionalProperties": {
                                      "x-additionalPropertiesName": "Custom Device Attributes",
                                      "description": "Custom properties that you want to associate with the device.",
                                      "type": "string"
                                    }
                                  }
                                }
                              }
                            ]
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "customer": {
                      "id": "1",
                      "attributes": {
                        "_last_emailed": "1528932553",
                        "created_at": "1489014595",
                        "email": "test@example.com",
                        "title": "tester",
                        "department": "qa",
                        "id": "1",
                        "cio_id": "03000001",
                        "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": {
                        "cio_id": 1489014595,
                        "_last_emailed": 1528932553,
                        "created_at": 1489014595,
                        "email": 1508932553,
                        "id": 1489014595,
                        "department": 1508932553,
                        "title": 1508932553,
                        "_cio_subscription_preferences_computed": 0,
                        "cio_subscription_preferences": 1673987303
                      },
                      "unsubscribed": false,
                      "devices": [
                        {
                          "id": "my_android_device_id",
                          "last_used": 1514764800,
                          "platform": "android"
                        },
                        {
                          "id": "my_ios_device_id",
                          "last_used": 1514764800,
                          "platform": "ios"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The `customer_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/customers/{customer_id}/attributes"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/customers/%7Bcustomer_id%7D/attributes\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/attributes\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/customers/%7Bcustomer_id%7D/attributes\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/attributes\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/customers/{customer_id}/relationships": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "customer_id",
          "required": true,
          "in": "path",
          "description": "The ID of the customer you want to perform an operation against.",
          "schema": {
            "type": "string",
            "example": 12345
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer"
          }
        }
      ],
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Lookup a customer's relationships",
        "operationId": "getPersonRelationships",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return a list of objects that a person is related to.\n\nYou can use the `start` parameter with the `next` property in responses to return pages of results. However, it's possible that you'll see duplicate entries across pages. If you want to export objects or relationships, you may want to use the export feature in our UI to return complete results.\n",
        "responses": {
          "200": {
            "description": "Returns an array of `cio_relationships`.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "cio_relationships": {
                      "type": "array",
                      "description": "A list of \"objects\" that the customer is related to; each JSON object in the array represents an \"object\" in Customer.io.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "object_type_id": {
                            "type": "integer",
                            "description": "The type of object that the customer is related to."
                          },
                          "identifiers": {
                            "type": "object",
                            "description": "The `object_id` and `cio_object_id` that a person is related to.",
                            "properties": {
                              "object_id": {
                                "type": "string",
                                "description": "The ID of the object that the customer is related to."
                              },
                              "cio_object_id": {
                                "type": "string",
                                "description": "The canonical, immutable identifier for the object that the customer is related to."
                              }
                            }
                          },
                          "attributes": {
                            "type": "object",
                            "description": "Attributes for the relationship between the person and the object.",
                            "additionalProperties": {
                              "x-additionalPropertiesName": "Object Attributes"
                            }
                          },
                          "timestamps": {
                            "type": "object",
                            "description": "Unix timestamps when the object's attributes were last updated.",
                            "additionalProperties": {
                              "type": "integer",
                              "format": "unix timestamp",
                              "x-additionalPropertiesName": "Object Attribute Timestamps"
                            }
                          }
                        }
                      }
                    },
                    "next": {
                      "x-scalar-ignore": true,
                      "type": "string",
                      "description": "Indicates the next page of results. Add `?start=<next_value>` to the request to get the next page of results."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The `customer_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/customers/{customer_id}/relationships"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/customers/%7Bcustomer_id%7D/relationships\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/relationships\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/customers/%7Bcustomer_id%7D/relationships\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/relationships\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/customers/attributes": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "List customers, attributes, and devices",
        "operationId": "getPeopleById",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return attributes and devices for up to 100 customers by ID. If an ID in the request does not exist, the response omits it.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "ids"
                ],
                "properties": {
                  "ids": {
                    "description": "An array of up to 100 customer IDs.",
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 100,
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an array of `customers`. Each object represents a customer profile.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "customers": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "customer": {
                            "type": "object",
                            "description": "The profile you referenced by ID in the request.",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The customer ID referenced in the request."
                              },
                              "identifiers": {
                                "x-scalar-ignore": true,
                                "type": "object",
                                "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                                "required": [
                                  "email",
                                  "id",
                                  "cio_id"
                                ],
                                "properties": {
                                  "email": {
                                    "type": "string",
                                    "nullable": true,
                                    "format": "email",
                                    "description": "A person's email address, if set.",
                                    "example": "test@example.com"
                                  },
                                  "id": {
                                    "type": "string",
                                    "nullable": true,
                                    "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                                    "example": 2
                                  },
                                  "cio_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                    "example": "a3000001"
                                  }
                                }
                              },
                              "attributes": {
                                "type": "object",
                                "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.",
                                "properties": {
                                  "id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                                    "nullable": true,
                                    "example": "42"
                                  },
                                  "email": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "The email address of the customer.",
                                    "nullable": true,
                                    "example": "test@example.com"
                                  },
                                  "cio_id": {
                                    "x-scalar-ignore": true,
                                    "type": "string",
                                    "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                    "example": "a3000001"
                                  },
                                  "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](/subscription-preferences/#backfill-preferences).  \n"
                                  }
                                },
                                "additionalProperties": {
                                  "x-additionalPropertiesName": "additional attributes",
                                  "description": "Non-identifier attributes assigned to this person.",
                                  "type": "string"
                                }
                              },
                              "timestamps": {
                                "deprecated": true,
                                "type": "object",
                                "description": "The epoch timestamps when corresponding attributes were set on the customer profile.",
                                "properties": {
                                  "cio_id": {
                                    "type": "integer",
                                    "description": "The date-time when `cio_id` was assigned.",
                                    "format": "unix timestamp"
                                  },
                                  "_last_emailed": {
                                    "type": "integer",
                                    "description": "The date-time when you last emailed a person.",
                                    "format": "unix timestamp"
                                  },
                                  "email": {
                                    "type": "integer",
                                    "description": "The date-time when the person's email address was added.",
                                    "format": "unix timestamp"
                                  },
                                  "id": {
                                    "type": "integer",
                                    "description": "The date-time when the person's ID was generated.",
                                    "format": "unix timestamp"
                                  },
                                  "unsubscribed": {
                                    "type": "integer",
                                    "description": "The date-time when the person unsubscribed.",
                                    "format": "unix timestamp"
                                  },
                                  "_cio_subscription_preferences_computed": {
                                    "type": "integer",
                                    "description": "Because this value is computed and not actually set on a person, this value is always 0"
                                  },
                                  "cio_subscription_preferences": {
                                    "type": "integer",
                                    "description": "The datetime when a person's subscription preferences were last updated.",
                                    "format": "unix timestamp"
                                  },
                                  "additionalProperties": {
                                    "x-additionalPropertiesName": "additional attribute timestamps",
                                    "description": "Timestamps when attributes assigned to the person were set.",
                                    "format": "unix timestamp"
                                  }
                                }
                              },
                              "unsubscribed": {
                                "type": "boolean",
                                "description": "If `true`, a person is unsubscribed from emails, SMS, WhatsApp, and push notifications (not in-app messages). Any casing of \"true\" (i.e. TRUE, true, tRUe, etc.), 1, or \"1\" means the person is unsubscribed. If `false`, absent, or any value not considered \"true\", a person is globally subscribed, or if you enabled a subscription center, a person will receive messages based on their `cio_subscription_preferences`."
                              },
                              "devices": {
                                "type": "array",
                                "description": "Lists the devices associated with the customer profile.",
                                "items": {
                                  "x-scalar-ignore": true,
                                  "description": "The properties representing an individual device. [Our SDK's](/integrations/sdk/) gather all the properties defined below automatically, unless you disable the `autoTrackDeviceAttributes` setting. You can reference the properties outside the `attributes` object in segments or in Liquid.",
                                  "allOf": [
                                    {
                                      "type": "object",
                                      "required": [
                                        "id"
                                      ],
                                      "properties": {
                                        "id": {
                                          "description": "The device token.",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    {
                                      "x-scalar-ignore": true,
                                      "type": "object",
                                      "description": "Device information common to the v1 and v2 APIs.",
                                      "required": [
                                        "platform"
                                      ],
                                      "properties": {
                                        "last_used": {
                                          "type": "integer",
                                          "format": "unix timestamp",
                                          "description": "The `timestamp` when you last identified this device. If you don't pass a timestamp when you add or update a device, we use the time of the request itself. Our SDKs identify a device when a person launches their app."
                                        },
                                        "platform": {
                                          "type": "string",
                                          "enum": [
                                            "ios",
                                            "android"
                                          ],
                                          "description": "The device/messaging platform."
                                        },
                                        "attributes": {
                                          "type": "object",
                                          "description": "Attributes that you can reference to segment your audience—like a person's attributes, but specific to a device. These can be either the attributes defined below or custom key-value attributes.",
                                          "properties": {
                                            "device_os": {
                                              "type": "string",
                                              "description": "The operating system, including the version, on the device."
                                            },
                                            "device_model": {
                                              "type": "string",
                                              "description": "The model of the device a person uses."
                                            },
                                            "app_version": {
                                              "type": "string",
                                              "description": "The version of your app that a customer uses. You might target app versions to let people know when they need to update, or expose them to new features when they do."
                                            },
                                            "cio_sdk_version": {
                                              "type": "string",
                                              "description": "The version of the Customer.io SDK in the app."
                                            },
                                            "_last_status": {
                                              "type": "string",
                                              "readOnly": true,
                                              "description": "The delivery status of the last message sent to the device—sent, bounced, or suppressed. An empty string indicates that that the device hasn't received a push yet.",
                                              "enum": [
                                                "",
                                                "bounced",
                                                "sent",
                                                "suppressed"
                                              ]
                                            },
                                            "device_locale": {
                                              "type": "string",
                                              "description": "The four-letter [IETF language code](/localization/#supported-languages) for the device. For example, `en-MX` (indicating an app in Spanish formatted for a user in Mexico) or `es-ES` (indicating an app in Spanish formatted for a user in Spain)."
                                            },
                                            "push_enabled": {
                                              "type": "string",
                                              "description": "If `\"true\"`, the device is opted-in and can receive push notifications.",
                                              "enum": [
                                                "true",
                                                "false"
                                              ]
                                            }
                                          },
                                          "additionalProperties": {
                                            "x-additionalPropertiesName": "Custom Device Attributes",
                                            "description": "Custom properties that you want to associate with the device.",
                                            "type": "string"
                                          }
                                        }
                                      }
                                    }
                                  ]
                                }
                              }
                            }
                          }
                        },
                        "example": {
                          "customer": {
                            "id": "1",
                            "attributes": {
                              "_last_emailed": "1528932553",
                              "created_at": "1489014595",
                              "email": "test@example.com",
                              "title": "tester",
                              "department": "qa",
                              "id": "1",
                              "cio_id": "03000001",
                              "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": {
                              "cio_id": 1489014595,
                              "_last_emailed": 1528932553,
                              "created_at": 1489014595,
                              "email": 1508932553,
                              "id": 1489014595,
                              "department": 1508932553,
                              "title": 1508932553,
                              "_cio_subscription_preferences_computed": 0,
                              "cio_subscription_preferences": 1673987303
                            },
                            "unsubscribed": false,
                            "devices": [
                              {
                                "id": "my_android_device_id",
                                "last_used": 1514764800,
                                "platform": "android"
                              },
                              {
                                "id": "my_ios_device_id",
                                "last_used": 1514764800,
                                "platform": "ios"
                              }
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is malformed."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "json",
            "label": "JSON",
            "source": "{\n  \"ids\": [\n    \"string\"\n  ]\n}"
          },
          {
            "lang": "Shell + Curl",
            "source": "curl --request POST \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/customers/attributes \\\n  --header 'content-type: application/json' \\\n  --data '{\"ids\":[\"string\"]}'"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"POST\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/customers/attributes\",\n  \"headers\": {\n    \"content-type\": \"application/json\"\n  }\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.write(JSON.stringify({ids: ['string']}));\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/customers/attributes\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"content-type\"] = 'application/json'\nrequest.body = \"{\\\"ids\\\":[\\\"string\\\"]}\"\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\npayload = \"{\\\"ids\\\":[\\\"string\\\"]}\"\n\nheaders = { 'content-type': \"application/json\" }\n\nconn.request(\"POST\", \"/v1/customers/attributes\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/customers/attributes\"\n\n\tpayload := strings.NewReader(\"{\\\"ids\\\":[\\\"string\\\"]}\")\n\n\treq, _ := http.NewRequest(\"POST\", url, payload)\n\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/customers/{customer_id}/segments": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "customer_id",
          "required": true,
          "in": "path",
          "description": "The ID of the customer you want to perform an operation against.",
          "schema": {
            "type": "string",
            "example": 12345
          }
        },
        {
          "name": "id_type",
          "required": false,
          "in": "query",
          "description": "The type of `customer_id` you want to use to reference a person. If you don't provide this parameter, we assume that the `customer_id` in your request is a person's `id`.",
          "schema": {
            "type": "string",
            "enum": [
              "id",
              "email",
              "cio_id"
            ]
          }
        }
      ],
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Lookup a customer's segments",
        "operationId": "getPersonSegments",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of segments that a customer profile belongs to.",
        "responses": {
          "200": {
            "description": "Returns an array of segments that the customer belongs to.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "segments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "description": "The segment identifier."
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the segment."
                          },
                          "description": {
                            "type": "string",
                            "description": "The description of the segment, as entered in the UI."
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The `customer_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/customers/{customer_id}/segments"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/customers/%7Bcustomer_id%7D/segments\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/segments\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/customers/%7Bcustomer_id%7D/segments\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/segments\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/customers/{customer_id}/messages": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "customer_id",
          "required": true,
          "in": "path",
          "description": "The ID of the customer you want to perform an operation against.",
          "schema": {
            "type": "string",
            "example": 12345
          }
        },
        {
          "name": "id_type",
          "required": false,
          "in": "query",
          "description": "The type of `customer_id` you want to use to reference a person. If you don't provide this parameter, we assume that the `customer_id` in your request is a person's `id`.",
          "schema": {
            "type": "string",
            "enum": [
              "id",
              "email",
              "cio_id"
            ]
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer",
            "default": 50,
            "maximum": 1000
          }
        },
        {
          "name": "start_ts",
          "in": "query",
          "required": false,
          "description": "The beginning timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        },
        {
          "name": "end_ts",
          "in": "query",
          "required": false,
          "description": "The ending timestamp for your query.",
          "schema": {
            "type": "integer",
            "format": "unix timestamp"
          }
        }
      ],
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Lookup messages sent to a customer",
        "operationId": "getPersonMessages",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns information about the deliveries sent to a person. Provide query parameters to refine the data you want to return.\n\nUse the `start_ts` and `end_ts` to find messages within a time range. If your request doesn't include `start_ts` and `end_ts` parameters, we'll return the most recent 6 months of messages. If your `start_ts` and `end_ts` range is more than 6 months, we'll return 6 months of data from the most recent timestamp in your request. Timestamps reflect when deliveries were created in our system, not when they were actually sent to recipients. There may be a delay between creation and sending.\n",
        "responses": {
          "200": {
            "description": "Returns an array of message objects. Each object represents a message that you sent a customer.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "messages": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The message identifier."
                          },
                          "deduplicate_id": {
                            "type": "string",
                            "description": "A group identifier to deduplicate messages (useful if a customer may have received multiple messages of the same type)."
                          },
                          "msg_template_id": {
                            "type": "string",
                            "deprecated": true,
                            "description": "The message template the message was created from."
                          },
                          "customer_id": {
                            "type": "string",
                            "description": "The customer the message was sent to."
                          },
                          "campaign_id": {
                            "type": "integer",
                            "description": "The campaign the message belongs to."
                          },
                          "action_id": {
                            "type": "integer",
                            "description": "The identifier for the message action within the campaign or broadcast the message belonged to."
                          },
                          "recipient": {
                            "type": "string",
                            "description": "The address of the recipient. May be an email address, MSISDN, or a device UUID."
                          },
                          "subject": {
                            "type": "string",
                            "description": "The subject line of the message."
                          },
                          "metrics": {
                            "type": "object",
                            "description": "Contains information about the send and delivery time of the message.",
                            "properties": {
                              "delivered": {
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date and time when the customer received the message."
                              },
                              "sent": {
                                "type": "integer",
                                "format": "unix timestamp",
                                "description": "The date and time when the message was sent."
                              }
                            }
                          },
                          "created": {
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date and time when the message was created."
                          },
                          "failure_message": {
                            "type": "string",
                            "description": "An error, if the message did not make it to the customer.",
                            "nullable": true
                          },
                          "newsletter_id": {
                            "type": "integer",
                            "description": "The newsletter that the message was sent as a part of, if applicable.",
                            "nullable": true
                          },
                          "content_id": {
                            "type": "integer",
                            "description": "The newsletter variant for the message, if applicable.",
                            "nullable": true
                          },
                          "broadcast_id": {
                            "type": "integer",
                            "description": "The broadcast the message was sent as a part of, if applicable.",
                            "nullable": true
                          },
                          "type": {
                            "type": "string",
                            "description": "The type of message.",
                            "enum": [
                              "email",
                              "webhook",
                              "twilio",
                              "slack",
                              "push",
                              "in_app'",
                              "whatsapp"
                            ]
                          },
                          "forgotten": {
                            "type": "boolean",
                            "description": "If true, the message content was forgotten."
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The `customer_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/customers/{customer_id}/messages"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/customers/%7Bcustomer_id%7D/messages\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/messages\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/customers/%7Bcustomer_id%7D/messages\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/messages\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/customers/{customer_id}/activities": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "customer_id",
          "required": true,
          "in": "path",
          "description": "The ID of the customer you want to perform an operation against.",
          "schema": {
            "type": "string",
            "example": 12345
          }
        },
        {
          "name": "id_type",
          "required": false,
          "in": "query",
          "description": "The type of `customer_id` you want to use to reference a person. If you don't provide this parameter, we assume that the `customer_id` in your request is a person's `id`.",
          "schema": {
            "type": "string",
            "enum": [
              "id",
              "email",
              "cio_id"
            ]
          }
        },
        {
          "name": "start",
          "in": "query",
          "required": false,
          "description": "The token for the page of results you want to return. Responses contain a `next` property. Use this property as the `start` value to return the next page of results.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "limit",
          "in": "query",
          "required": false,
          "description": "The maximum number of results you want to retrieve per page.",
          "schema": {
            "type": "integer",
            "default": 10,
            "maximum": 100
          }
        },
        {
          "name": "type",
          "description": "The type of activity you want to search for. Types with `_o:<object_type_id>` are for objects and types with `_r:<object_type_id>` are for relationships.",
          "in": "query",
          "required": false,
          "schema": {
            "x-scalar-ignore": true,
            "description": "The type of activity. Types with `_o:<object_type_id>` are for objects and types with `_r:<object_type_id>` are for relationships.",
            "type": "string",
            "enum": [
              "add_relationship",
              "anon_merge",
              "attempted_action",
              "attempted_email",
              "attempted_in_app",
              "attempted_push",
              "attempted_slack",
              "attempted_twilio",
              "attempted_webhook",
              "attempted_whatsapp",
              "attribute_change",
              "bounced_action",
              "bounced_email",
              "bounced_push",
              "bounced_twilio",
              "bounced_whatsapp",
              "clicked_action",
              "clicked_content",
              "clicked_email",
              "clicked_in_app",
              "clicked_push",
              "clicked_twilio",
              "clicked_webhook",
              "converted_action",
              "converted_content",
              "converted_email",
              "converted_in_app",
              "converted_slack",
              "converted_twilio",
              "converted_webhook",
              "converted_whatsapp",
              "deferred_action",
              "deferred_email",
              "deferred_in_app",
              "deferred_push",
              "deferred_slack",
              "deferred_twilio",
              "deferred_webhook",
              "deferred_whatsapp",
              "delete_relationship",
              "delivered_action",
              "delivered_email",
              "delivered_push",
              "delivered_twilio",
              "delivered_whatsapp",
              "device_change",
              "drafted_action",
              "drafted_email",
              "drafted_in_app",
              "drafted_push",
              "drafted_slack",
              "drafted_twilio",
              "drafted_webhook",
              "dropped_action",
              "dropped_email",
              "dropped_push",
              "dropped_twilio",
              "dropped_webhook",
              "dropped_whatasapp",
              "event",
              "failed_action",
              "failed_attribute_change",
              "failed_batch_update",
              "failed_email",
              "failed_event",
              "failed_in_app",
              "failed_object_journeys",
              "failed_push",
              "failed_query_collection",
              "failed_slack",
              "failed_twilio",
              "failed_webhook",
              "failed_whatsapp",
              "opened_action",
              "opened_email",
              "opened_in_app",
              "opened_push",
              "page",
              "profile_create",
              "profile_delete",
              "profile_merge",
              "relationship_attribute_change",
              "relationship_failed_attribute_change",
              "screen",
              "sent_action",
              "sent_email",
              "sent_in_app",
              "sent_push",
              "sent_slack",
              "sent_twilio",
              "sent_webhook",
              "sent_whatsapp",
              "skipped_update",
              "spammed_email",
              "suppressed_twilio",
              "suppressed_whatsapp",
              "topic_unsubscribed_email",
              "undeliverable_action",
              "undeliverable_email",
              "undeliverable_in_app",
              "undeliverable_push",
              "undeliverable_slack",
              "undeliverable_twilio",
              "undeliverable_webhook",
              "undeliverable_whatsapp",
              "unsubscribed_action",
              "unsubscribed_email",
              "viewed_content",
              "webhook_event",
              "_o:<object_type_id>:add_relationship",
              "_o:<object_type_id>:attribute_change",
              "_o:<object_type_id>:create",
              "_o:<object_type_id>:delete",
              "_o:<object_type_id>:delete_relationship",
              "_o:<object_type_id>:failed_attribute_change",
              "_r:<object_type_id>:attribute_change",
              "_r:<object_type_id>:failed_attribute_change"
            ],
            "example": "sent_email"
          }
        },
        {
          "name": "name",
          "in": "query",
          "description": "For `event` and `attribute_update` types, you can search by event or attribute name respectively.",
          "required": false,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Lookup a customer's activities",
        "operationId": "getPersonActivities",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Return a list of activities performed by, or for, a customer. Activities are things like attribute changes and message sends. \n\nThis endpoint is guaranteed to return activity history within the past 30 days. It might return data older than 30 days in some circumstances, but activites older than 30 days are not guaranteed.\n",
        "responses": {
          "200": {
            "description": "Returns an array of activity objects. Each object represents an activity that the customer performed, or that you performed on behalf of the customer.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "activities": {
                      "type": "array",
                      "items": {
                        "x-scalar-ignore": true,
                        "type": "object",
                        "properties": {
                          "customer_id": {
                            "x-scalar-ignore": true,
                            "type": "string",
                            "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                            "nullable": true,
                            "example": "42"
                          },
                          "customer_identifiers": {
                            "x-scalar-ignore": true,
                            "type": "object",
                            "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                            "required": [
                              "email",
                              "id",
                              "cio_id"
                            ],
                            "properties": {
                              "email": {
                                "type": "string",
                                "nullable": true,
                                "format": "email",
                                "description": "A person's email address, if set.",
                                "example": "test@example.com"
                              },
                              "id": {
                                "type": "string",
                                "nullable": true,
                                "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                                "example": 2
                              },
                              "cio_id": {
                                "x-scalar-ignore": true,
                                "type": "string",
                                "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                                "example": "a3000001"
                              }
                            }
                          },
                          "data": {
                            "oneOf": [
                              {
                                "title": "Message delivery",
                                "type": "object",
                                "properties": {
                                  "delivered": {
                                    "type": "integer",
                                    "format": "unix timestamp",
                                    "description": "The date-time when the message was delivered, if applicable.",
                                    "nullable": true
                                  },
                                  "delivery_id": {
                                    "type": "string",
                                    "description": "The message ID."
                                  },
                                  "opened": {
                                    "type": "boolean",
                                    "nullable": true,
                                    "description": "Indicates whether or not a customer opened a message, if the message was delivered."
                                  }
                                },
                                "example": {
                                  "delivery_id": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ==",
                                  "opened": null,
                                  "delivered": null
                                }
                              },
                              {
                                "title": "Attribute change",
                                "description": "The name of the object is the attribute that changed.",
                                "type": "object",
                                "additionalProperties": {
                                  "x-scalar-ignore": true,
                                  "type": "object",
                                  "properties": {
                                    "from": {
                                      "type": "string",
                                      "description": "The old attribute value. If empty, the customer probably didn't bear the attribute before this action."
                                    },
                                    "to": {
                                      "type": "string",
                                      "description": "The new attribute value."
                                    }
                                  }
                                },
                                "example": {
                                  "email": {
                                    "from": "newPerson@example.com",
                                    "to": "newPerson@customer.io"
                                  }
                                }
                              }
                            ]
                          },
                          "delivery_id": {
                            "type": "string",
                            "description": "The message ID.",
                            "example": "ZAIAAVTJVG0QcCok0-0ZKj6yiQ=="
                          },
                          "delivery_type": {
                            "type": "string",
                            "description": "The recipient device, if applicable.",
                            "enum": [
                              "ios",
                              "android",
                              "email",
                              "phone"
                            ],
                            "example": "email"
                          },
                          "id": {
                            "description": "The identifier for the action.",
                            "type": "string",
                            "example": "01AK4N8V8G8KVA4HN8Y50CCZ59"
                          },
                          "timestamp": {
                            "type": "integer",
                            "format": "unix timestamp",
                            "description": "The date and time when the action occurred.",
                            "example": 1397566226
                          },
                          "type": {
                            "x-scalar-ignore": true,
                            "description": "The type of activity. Types with `_o:<object_type_id>` are for objects and types with `_r:<object_type_id>` are for relationships.",
                            "type": "string",
                            "enum": [
                              "add_relationship",
                              "anon_merge",
                              "attempted_action",
                              "attempted_email",
                              "attempted_in_app",
                              "attempted_push",
                              "attempted_slack",
                              "attempted_twilio",
                              "attempted_webhook",
                              "attempted_whatsapp",
                              "attribute_change",
                              "bounced_action",
                              "bounced_email",
                              "bounced_push",
                              "bounced_twilio",
                              "bounced_whatsapp",
                              "clicked_action",
                              "clicked_content",
                              "clicked_email",
                              "clicked_in_app",
                              "clicked_push",
                              "clicked_twilio",
                              "clicked_webhook",
                              "converted_action",
                              "converted_content",
                              "converted_email",
                              "converted_in_app",
                              "converted_slack",
                              "converted_twilio",
                              "converted_webhook",
                              "converted_whatsapp",
                              "deferred_action",
                              "deferred_email",
                              "deferred_in_app",
                              "deferred_push",
                              "deferred_slack",
                              "deferred_twilio",
                              "deferred_webhook",
                              "deferred_whatsapp",
                              "delete_relationship",
                              "delivered_action",
                              "delivered_email",
                              "delivered_push",
                              "delivered_twilio",
                              "delivered_whatsapp",
                              "device_change",
                              "drafted_action",
                              "drafted_email",
                              "drafted_in_app",
                              "drafted_push",
                              "drafted_slack",
                              "drafted_twilio",
                              "drafted_webhook",
                              "dropped_action",
                              "dropped_email",
                              "dropped_push",
                              "dropped_twilio",
                              "dropped_webhook",
                              "dropped_whatasapp",
                              "event",
                              "failed_action",
                              "failed_attribute_change",
                              "failed_batch_update",
                              "failed_email",
                              "failed_event",
                              "failed_in_app",
                              "failed_object_journeys",
                              "failed_push",
                              "failed_query_collection",
                              "failed_slack",
                              "failed_twilio",
                              "failed_webhook",
                              "failed_whatsapp",
                              "opened_action",
                              "opened_email",
                              "opened_in_app",
                              "opened_push",
                              "page",
                              "profile_create",
                              "profile_delete",
                              "profile_merge",
                              "relationship_attribute_change",
                              "relationship_failed_attribute_change",
                              "screen",
                              "sent_action",
                              "sent_email",
                              "sent_in_app",
                              "sent_push",
                              "sent_slack",
                              "sent_twilio",
                              "sent_webhook",
                              "sent_whatsapp",
                              "skipped_update",
                              "spammed_email",
                              "suppressed_twilio",
                              "suppressed_whatsapp",
                              "topic_unsubscribed_email",
                              "undeliverable_action",
                              "undeliverable_email",
                              "undeliverable_in_app",
                              "undeliverable_push",
                              "undeliverable_slack",
                              "undeliverable_twilio",
                              "undeliverable_webhook",
                              "undeliverable_whatsapp",
                              "unsubscribed_action",
                              "unsubscribed_email",
                              "viewed_content",
                              "webhook_event",
                              "_o:<object_type_id>:add_relationship",
                              "_o:<object_type_id>:attribute_change",
                              "_o:<object_type_id>:create",
                              "_o:<object_type_id>:delete",
                              "_o:<object_type_id>:delete_relationship",
                              "_o:<object_type_id>:failed_attribute_change",
                              "_r:<object_type_id>:attribute_change",
                              "_r:<object_type_id>:failed_attribute_change"
                            ],
                            "example": "sent_email"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request parameters are malformed."
          },
          "404": {
            "description": "The `customer_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/customers/{customer_id}/activities"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/customers/%7Bcustomer_id%7D/activities\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/activities\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/customers/%7Bcustomer_id%7D/activities\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/activities\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    },
    "/v1/customers/{customer_id}/subscription_preferences": {
      "servers": [
        {
          "url": "https://api.customer.io",
          "description": "This API uses bearer authorization, requiring a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
        }
      ],
      "parameters": [
        {
          "name": "customer_id",
          "required": true,
          "in": "path",
          "description": "The ID of the customer you want to perform an operation against.",
          "schema": {
            "type": "string",
            "example": 12345
          }
        },
        {
          "name": "id_type",
          "required": false,
          "in": "query",
          "description": "The type of `customer_id` you want to use to reference a person. If you don't provide this parameter, we assume that the `customer_id` in your request is a person's `id`.",
          "schema": {
            "type": "string",
            "enum": [
              "id",
              "email",
              "cio_id"
            ]
          }
        },
        {
          "name": "language",
          "required": false,
          "in": "query",
          "description": "A [language tag](/journeys/unsubscribe-faqs/#currently-supported-languages) you want the content translated in. If none is provided, the content will be sent in the default language of your subscription center.",
          "schema": {
            "type": "string"
          }
        },
        {
          "in": "header",
          "name": "Accept-Language",
          "schema": {
            "type": "string",
            "format": "string",
            "description": "The [language tag](/journeys/unsubscribe-faqs/#currently-supported-languages) you want the content translated in. If none is provided, the content will be sent in the default lanauge of your subscription center."
          },
          "required": false
        }
      ],
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Lookup a customer's subscription preferences",
        "operationId": "getPersonSubscriptionPreferences",
        "security": [
          {
            "Bearer-Auth": []
          }
        ],
        "description": "Returns a list of subscription preferences for a person, including the custom header of the subscription preferences page, topic names, and topic descriptions. Returns translated data when you send a language in the query.",
        "responses": {
          "200": {
            "description": "Returns the customer's associated subscription preferences.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "customer": {
                      "type": "object",
                      "description": "The profile you referenced by ID in the request.",
                      "properties": {
                        "id": {
                          "x-scalar-ignore": true,
                          "type": "string",
                          "description": "The ID of a customer profile, analogous to a \"person\" in the UI. If your workspace supports multiple identifiers (email and ID), this value can be null.",
                          "nullable": true,
                          "example": "42"
                        },
                        "identifiers": {
                          "x-scalar-ignore": true,
                          "type": "object",
                          "description": "Contains identifiers for the person represented in a response—`id`, `cio_id`, and `email` (if your workspace uses the *Email or ID* setting). If the person's `id` or `email` is not set, the value will be null.\n\nWe recommend that you use this object rather than the less descriptive `customer_id`.\n",
                          "required": [
                            "email",
                            "id",
                            "cio_id"
                          ],
                          "properties": {
                            "email": {
                              "type": "string",
                              "nullable": true,
                              "format": "email",
                              "description": "A person's email address, if set.",
                              "example": "test@example.com"
                            },
                            "id": {
                              "type": "string",
                              "nullable": true,
                              "description": "A person's unique ID, if set. This is the same as the `customer_id` if present.",
                              "example": 2
                            },
                            "cio_id": {
                              "x-scalar-ignore": true,
                              "type": "string",
                              "description": "A unique identifier set by Customer.io, used to reference a person if you want to update their identifiers.",
                              "example": "a3000001"
                            }
                          }
                        },
                        "topics": {
                          "type": "array",
                          "description": "A list of all subscription preferences for the customer.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "System-generated ID of the topic."
                              },
                              "subscribed": {
                                "type": "boolean",
                                "description": "If true, the customer is subscribed to the topic. If false, the customer is unsubscribed from the topic."
                              },
                              "name": {
                                "type": "string",
                                "description": "The name of the subscription topic."
                              },
                              "description": {
                                "type": "string",
                                "description": "The (optional) description of the topic."
                              }
                            }
                          }
                        },
                        "unsubscribed": {
                          "type": "boolean",
                          "description": "If true, the customer is unsubscribed from all messaging. If false, the customer is subscribed according to their topic preferences."
                        },
                        "header": {
                          "type": "object",
                          "properties": {
                            "title": {
                              "type": "string",
                              "description": "The header of the subscription preferences page."
                            },
                            "subtitle": {
                              "type": "string",
                              "description": "The subtitle or headline beneath the header of the subscription preferences page."
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "customer": {
                    "id": "1",
                    "identifiers": {
                      "cio_id": "01000001",
                      "email": "me@example.com",
                      "id": "1"
                    },
                    "topics": [
                      {
                        "id": 1,
                        "subscribed": true,
                        "name": "Offers",
                        "description": "Description for topic 1, if any"
                      },
                      {
                        "id": 2,
                        "subscribed": true,
                        "name": "News and Programs",
                        "description": "Description for topic 2, if any"
                      },
                      {
                        "id": 3,
                        "subscribed": false,
                        "name": "Feedback",
                        "description": "Description for topic 3, if any"
                      }
                    ],
                    "unsubscribed": false,
                    "header": {
                      "title": "Manage your subscription preferences",
                      "subtitle": "Check the box next to each topic you'd like to subscribe to."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid or malformed request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "meta": {
                      "type": "object",
                      "properties": {
                        "errors": {
                          "type": "array",
                          "description": "An array of errors.",
                          "items": {
                            "type": "string",
                            "description": "Error descriptions."
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The `customer_id` does not exist."
          },
          "429": {
            "description": "Your request is over the 10-per-second limit."
          }
        },
        "x-codeSamples": [
          {
            "lang": "Shell + Curl",
            "source": "curl --request GET \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --url https://api.customer.io/v1/customers/{customer_id}/subscription_preferences"
          },
          {
            "lang": "Node + Native",
            "source": "const http = require(\"https\");\n\nconst options = {\n  \"method\": \"GET\",\n  \"hostname\": \"api.customer.io\",\n  \"port\": null,\n  \"path\": \"/v1/customers/%7Bcustomer_id%7D/subscription_preferences\",\n  \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n  const chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function () {\n    const body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n});\n\nreq.end();"
          },
          {
            "lang": "Ruby + Native",
            "source": "require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI(\"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/subscription_preferences\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\nhttp.verify_mode = OpenSSL::SSL::VERIFY_NONE\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body"
          },
          {
            "lang": "Python + Python3",
            "source": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.customer.io\")\n\nconn.request(\"GET\", \"/v1/customers/%7Bcustomer_id%7D/subscription_preferences\")\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
          },
          {
            "lang": "Go + Native",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://api.customer.io/v1/customers/%7Bcustomer_id%7D/subscription_preferences\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}"
          }
        ]
      }
    }
  },
  "x-webhooks": {
    "reportingWebhook": {
      "post": {
        "summary": "Reporting webhook format",
        "description": "Customer.io sends events to your webhook URL in the following format. Events are generally organized by `object_type`—representing the message or Customer.io action (i.e. `email`, `sms`, etc)—and the specific `metric` pertaining to the type (i.e. `sent`, `bounced`, etc).",
        "operationId": "reportingWebhook",
        "security": [],
        "parameters": [
          {
            "name": "x-cio-timestamp",
            "schema": {
              "type": "integer",
              "format": "unix timestamp"
            },
            "description": "The timestamp when the request was sent.",
            "in": "header",
            "required": true
          },
          {
            "name": "x-cio-signature",
            "in": "header",
            "description": "A string combining your webhook signing key with the body of webhook request using an HMAC-SHA256 hash, used to help you [securely verify requests](/webhooks#securely-verifying-requests). \n",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {},
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/customer_event"
                  },
                  {
                    "$ref": "#/components/schemas/email_event"
                  },
                  {
                    "$ref": "#/components/schemas/push_event"
                  },
                  {
                    "$ref": "#/components/schemas/in_app_event"
                  },
                  {
                    "$ref": "#/components/schemas/sms_event"
                  },
                  {
                    "$ref": "#/components/schemas/slack_event"
                  },
                  {
                    "$ref": "#/components/schemas/webhook_event"
                  }
                ]
              }
            }
          }
        }
      }
    }
  },
  "openapi": "3.0.0",
  "info": {
    "version": "1.0.0",
    "title": "Journeys App API",
    "description": "Our App API provides ways to trigger messages and retrieve information about people, campaigns, broadcasts, and more.\n\n# Overview\n\nThe App API provides methods to send transactional messages and trigger broadcasts. In both cases, your payload acts as a message \"trigger\" and can contain `data` that you reference in your messages using liquid—`{{trigger.<data>}}`.\n\nThe other endpoints help you retrieve information about people, segments, campaigns, broadcasts, etc; it also lets you update campaign actions, messages, newsletter variants, etc. Aside from the [API-triggered broadcast](#triggerBroadcast) (1 per 10 seconds) and [Transactional](#sendEmail) (100 per second) endpoints, requests are limited to 10 per second.\n\n# Use our Postman collection\n\nWe've generated a Postman collection to help you get started with our APIs.\n\nIf you fork this collection, you might want to disable the *Watch original collection* option. We automatically update our Postman collection whenever we release changes to our documentation, even if we don't change our APIs—which happens daily! Rather than being flooded with Postman notifications, you can check out our [Release Notes](/release-notes/) for updates to our APIs.\n\n**NOTE**: Postman endpoints default to our US APIs. If you're in our European (EU) region, you'll need to add `-eu` to the server variables (`track_api_url` and `app_api_url`).\n\n[<img src=\"https://run.pstmn.io/button.svg\" alt=\"Run In Postman\" style=\"width: 128px; height: 32px;\">](https://god.gw.postman.com/run-collection/23697545-2931c004-e63d-4cdc-bf4b-e685ba6da42d?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D23697545-2931c004-e63d-4cdc-bf4b-e685ba6da42d%26entityType%3Dcollection%26workspaceId%3Db886877f-fc09-475f-84fe-6221a98f4d18#?env%5BCustomer.io%20API%20Environment%5D=W3sia2V5IjoidHJhY2tfYXBpX3VybCIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiJ0cmFjay5jdXN0b21lci5pbyIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiYXBwX2FwaV91cmwiLCJ0eXBlIjoiZGVmYXVsdCIsInZhbHVlIjoiYXBpLmN1c3RvbWVyLmlvIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJzaXRlX2lkIiwidHlwZSI6ImRlZmF1bHQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiYXBpX2tleSIsInR5cGUiOiJzZWNyZXQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiYmVhcmVyIiwidHlwZSI6ImRlZmF1bHQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiYnJvYWRjYXN0X2lkIiwidHlwZSI6ImRlZmF1bHQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiaW1wb3J0X2lkIiwidHlwZSI6ImRlZmF1bHQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiZW1haWxfYWRkcmVzcyIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6InN1cHByZXNzaW9uX3R5cGUiLCJ0eXBlIjoiZGVmYXVsdCIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJjb2xsZWN0aW9uX2lkIiwidHlwZSI6ImRlZmF1bHQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5Ijoic25pcHBldF9uYW1lIiwidHlwZSI6ImRlZmF1bHQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5Ijoid2ViaG9va19pZCIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6InNlbmRlcl9pZCIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6ImV4cG9ydF9pZCIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6Im1lc3NhZ2VfaWQiLCJ0eXBlIjoiZGVmYXVsdCIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJzZWdtZW50X2lkIiwidHlwZSI6ImRlZmF1bHQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoibmV3c2xldHRlcl9pZCIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6ImNvbnRlbnRfaWQiLCJ0eXBlIjoiZGVmYXVsdCIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJjYW1wYWlnbl9pZCIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6ImFjdGlvbl9pZCIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6ImN1c3RvbWVyX2lkIiwidHlwZSI6ImRlZmF1bHQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoidHJhbnNhY3Rpb25hbF9pZCIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6InRyaWdnZXJfaWQiLCJ0eXBlIjoiZGVmYXVsdCIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJmb3JtX2lkIiwidHlwZSI6ImRlZmF1bHQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiaWRlbnRpZmllciIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6ImRldmljZV9pZCIsInR5cGUiOiJkZWZhdWx0IiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6ImRlbGl2ZXJ5X2lkIiwidHlwZSI6ImRlZmF1bHQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9XQ==)\n\n# Server addresses: US and EU\n\nCustomer.io hosts services in the United States (US) and European Union. Select the appropriate server address for your region.\n\n| Region | Server Address |\n| :-- | :-- |\n| US | https://api.customer.io |\n| EU | https://api-eu.customer.io |\n\n# Authentication \n\nAll requests to the Customer.io App API use an [App API Key](#App-API-Key).\n\nTo authenticate, provide your key as a Bearer token in a HTTP Authorization header. You can create and manage your API keys—including keys with different scopes—in [your account settings page](https://fly.customer.io/settings/api_credentials?keyType=app). Each operation on this page references the authorization header it requires.\n\n# Rate Limits\n\nMost endpoints on this page are limited to 10 requests per second. The exceptions are:\n* The [transactional email](#operation/sendEmail) endpoint is limited to 100 requests per second. \n* The [API-triggered broadcast endpoint](#operation/triggerBroadcast) is limited to 1 request every 10 seconds. \n"
  },
  "tags": [
    {
      "name": "Send Messages",
      "description": "These two endpoints trigger messages to your audience. They use the same authentication method, but have different limits than the rest of the endpoints.\n\n## API triggered broadcast limits\n\nWhile [API triggered broadcasts](#operation/triggerBroadcast) are limited to 1 request every 10 seconds, they're also limited by the number of triggers you can have queued at a time, as shown in the table below.\n\n| Data Type | Limit | Description |\n| -- | -- | -- |\n| Trigger Payload | 25MB | Max length of the entire Trigger call, larger calls are typically to support `per_user_data` |\n| Trigger Data | 50000 bytes | Max length of the data section in the Trigger call |\n| Recipient List<sup>1</sup> | 10000 recipients | Max number of ids or emails included in the Trigger call |\n| Custom Per User Data<sup>1</sup> | 10000 entries | Max number of entries in `per_user_data` |\n| Custom Per User Data<sup>1</sup> | 2MB | Max length per user in the file referenced by `data_file_url`. |\n| Custom Per User Data<sup>1</sup> | 10GB | Max length of the entire size of the file referenced by `data_file_url` |\n| Trigger Queue | 5 triggers | Max number of triggers waiting to be processed consecutively |\n\n<sup>1</sup>For larger data sets, use `data_file_url` to supply a link to a file that contains your merge data. Attempting to send too much data in a single API call will fail.\n\n## Transactional Message Limits\n\nThe `/send-*` endpoints are limited to 100 requests per second.\n\n| Data Type | Limit | Description |\n| -- | -- | -- |\n| Payload | 1MB | Max length of the payload, excepting attachments |\n| Attachments (email) | 2MB | Maximum size of attachments |\n| Recipients | 15 | Total number of recipients across the `to` and `bcc` fields. |\n"
    },
    {
      "name": "Broadcasts",
      "x-displayName": "Broadcasts",
      "description": "In the UI, we frequently refer to broadcasts that you trigger through these endpoints as \"API triggered\" broadcasts. Use these endpoints to trigger a broadcast and retrieve information about broadcast triggers. When you trigger a broadcast, you can include `data` that you reference in your message (using a liquid `{{trigger.<property>}}` filter).\n\nWhile you can trigger and look up information about broadcasts using the API, you must perform all other create, update, and/or delete operations through the UI.\n"
    },
    {
      "name": "Transactional",
      "x-displayName": "Transactional Messages",
      "description": "Send, and return information about, transactional messages. Transactional messages are messages that your audience explicitly requests or expects, like purchase receipts or password reset requests.\n\nThe `transactional_id` in requests represents the transactional message template. Each individual send—the instance of a message sent to an individual person—is called a \"delivery\".\n"
    },
    {
      "name": "Customers",
      "x-displayName": "Customers",
      "description": "Find people (referred to as \"customers\" in our APIs), their attributes, the segments they belong to, etc. Use the [track API](/api/track/#tag/Track-Customers) to add people to your workspace and assign their attributes. \n"
    },
    {
      "name": "Objects",
      "x-displayName": "Objects",
      "description": "Objects are \"groups\" that you can relate people to in Customer.io—like the companies they work for, the online classes they take, and so on. These APIs help you find objects, their attributes, the people they're related to, etc. Use the [track API v1](/api/track/#tag/Track-Customers) or the [Track v2 API](/api/track/#tag/track_v2) to add and relate people to objects to your workspace and assign their attributes. \n"
    },
    {
      "name": "Campaigns",
      "x-displayName": "Campaigns",
      "description": "A campaign is a workflow that people in your audience trigger and traverse. The items that happen within the workflow—messages, attribute changes, webhooks, etc that your audience triggers—are called actions. \n\nThese endpoints return information about campaigns including metrics and the actions included in campaigns. You can update individual campaign actions from these endpoints, but you must perform all other create, update, and/or delete operations through the UI.\n"
    },
    {
      "name": "Newsletters",
      "description": "A newsletter is a type of broadcast in Customer.io—a one-time, single message that you send to a group of people. You can also set your newsletter up with A/B test variants.\n\nThese endpoints return information about newsletters including metrics and A/B test variants. You can update variants in newsletters from these endpoints, but you must perform all other create, update, and/or delete operations through the UI.\n"
    },
    {
      "name": "Segments",
      "description": "Segments are groups of people, subsets of your audience. You get get information about segments and the customers contained by a segment. You can also create or delete manual segments through the API. Use the UI to create, update, or delete data-driven segments.\n"
    },
    {
      "name": "Messages",
      "description": "Return information about message and webhook \"deliveries\"—the instance of a message or webhook intended for an individual recipient.\n"
    },
    {
      "name": "Design Studio",
      "description": "Use these endpoints to manage emails and components made with Design Studio. You can programmatically manage Design Studio content and migrate templates from an external service.\n",
      "x-scalar-ignore": true
    },
    {
      "name": "Assets",
      "description": "Manage file assets such as images and PDFs and organize them into folders.\n",
      "x-scalar-ignore": true
    },
    {
      "name": "Exports",
      "description": "Export information about people, deliveries, etc. You can also download existing exports from these endpoints.\n"
    },
    {
      "name": "Activities",
      "description": "Return information about activities. Activities are cards in campaigns, broadcasts, etc. They might be messages, webhooks, attribute changes, etc.\n"
    },
    {
      "name": "Sender Identities",
      "description": "Return information about your senders—the addresses that you send messages from—including usage information for your different senders.\n"
    },
    {
      "name": "Reporting Webhooks",
      "description": "Set up webhooks to inform an external service about Customer.io events. Webhooks can notify you immediately when immediately when customer attributes change or when people open your messages.\n"
    },
    {
      "name": "Snippets",
      "description": "Snippets are reusable pieces of messages, like a common email footer or link that you use in your messages. Use these endpoints to create, get, or delete snippets.\n"
    },
    {
      "name": "Info",
      "description": "Returns the list of addresses used by Customer.io. You must add add these addresses to your allowlist when using a custom SMTP provider and blocking unknown IP addresses.\n"
    },
    {
      "name": "Collections",
      "description": "Collections are arbitrary sets of data that you want to use in campaign messages or workflows independent of attributes or events. They might represent things like upcoming events, coupons/promotions, etc.\n"
    },
    {
      "name": "ESP Suppression",
      "description": "If you use Customer.io as your email service provider (ESP), these endpoints help you retrieve information about email addresses suppressed directly by the ESP. ESP-based suppressions are different from suppression in Customer.io: these are addresses that the ESP suppressed automatically because a message bounced, a customer requested they not be contacted again, etc. These are _not_ addresses that you deleted and suppressed either in our UI or through [the API](#operation/suppress).\n"
    },
    {
      "name": "Imports",
      "description": "APIs to upload CSV files containing lists of people. These endpoints provide a convenient way to add and update people without having to make an `identify` call for each individual person.\n"
    },
    {
      "name": "Subscription Center",
      "description": "A subscription center differentiates the types of messages available for your product. Your audience sets subscription preferences by name, but we record subscription preferences by topic ID. You can use these endpoints to get a list of topics and names, helping you understand your audience's subscription preferences.\n"
    },
    {
      "name": "Workspaces",
      "description": "An API to retrieve information about your workspaces in your account. You can use this to look up counts for messages sent, monthly billable emails sent, people, and objects.\n"
    },
    {
      "name": "Data Index",
      "description": "Update descriptions for attributes and events in your workspace. This helps improve AI-generated content and segments.\n"
    }
  ],
  "servers": [
    {
      "url": "https://api.customer.io",
      "description": "The base URL for broadcasts, transactional messages, and data-retrieval APIs. These endpoints use bearer authorization, and require a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
    },
    {
      "url": "https://api-eu.customer.io",
      "description": "The base URL for broadcasts, transactional messages, and data-retrieval APIs (EU region). These endpoints use bearer authorization, and require a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app)."
    }
  ]
}