{
  "service": "braze",
  "displayName": "Braze",
  "categories": [
    "Marketing",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "REST API Key",
      "placeholder": "BRAZE_REST_API_KEY",
      "description": "Braze REST API key sent as Authorization: Bearer <key>. Create or view REST API keys in Braze under Settings > APIs and Identifiers > API Keys: https://www.braze.com/docs/api/basics.",
      "extraFields": [
        {
          "key": "restEndpoint",
          "label": "REST Endpoint",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "https://rest.iad-01.braze.com",
          "description": "Your Braze REST endpoint origin, copied from Settings > APIs and Identifiers > API Keys. Use the REST endpoint, not the SDK endpoint: https://www.braze.com/docs/api/basics#endpoints."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.braze.com",
  "actions": [
    {
      "id": "braze.get_campaign_details",
      "service": "braze",
      "name": "get_campaign_details",
      "description": "Fetch Braze metadata and message details for one campaign.",
      "requiredScopes": [
        "campaigns.details"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "campaignId": {
            "type": "string",
            "minLength": 1,
            "description": "The Braze campaign API identifier."
          },
          "postLaunchDraftVersion": {
            "type": "boolean",
            "description": "Whether Braze should return the post-launch draft version when one exists."
          },
          "includeHasTranslatableContent": {
            "type": "boolean",
            "description": "Whether Braze should include has_translatable_content fields for messages."
          }
        },
        "additionalProperties": false,
        "required": [
          "campaignId"
        ],
        "description": "Input parameters for fetching one Braze campaign details response."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "The Braze response status message."
          },
          "campaign": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Braze campaign API identifier requested by the caller."
              },
              "name": {
                "type": "string",
                "description": "The Braze campaign name."
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Braze campaign description."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "type": "string",
                "description": "The timestamp when the campaign was created."
              },
              "updatedAt": {
                "type": "string",
                "description": "The timestamp when the campaign was last updated."
              },
              "archived": {
                "type": "boolean",
                "description": "Whether the campaign is archived."
              },
              "draft": {
                "type": "boolean",
                "description": "Whether the campaign is a draft."
              },
              "enabled": {
                "type": "boolean",
                "description": "Whether the campaign is active."
              },
              "hasPostLaunchDraft": {
                "type": "boolean",
                "description": "Whether the campaign has a post-launch draft."
              },
              "scheduleType": {
                "type": "string",
                "description": "The campaign schedule type."
              },
              "channels": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One campaign channel name."
                },
                "description": "Channels used by the campaign."
              },
              "firstSent": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The campaign's first sent timestamp."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastSent": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The campaign's last sent timestamp."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One campaign tag name."
                },
                "description": "Tag names associated with the campaign."
              },
              "teams": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One team name."
                },
                "description": "Team names associated with the campaign."
              },
              "messages": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Raw campaign messages keyed by Braze message variation ID."
              },
              "conversionBehaviors": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "One campaign conversion behavior object."
                },
                "description": "Raw campaign conversion behavior objects."
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw Braze campaign details response."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "raw"
            ],
            "description": "The normalized Braze campaign details response."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Braze campaign details response."
          }
        },
        "additionalProperties": false,
        "required": [
          "campaign",
          "raw"
        ],
        "description": "The Braze campaign details action output."
      }
    },
    {
      "id": "braze.get_canvas_details",
      "service": "braze",
      "name": "get_canvas_details",
      "description": "Fetch Braze metadata, variants, steps, and message details for one Canvas.",
      "requiredScopes": [
        "canvas.details"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "canvasId": {
            "type": "string",
            "minLength": 1,
            "description": "The Braze Canvas API identifier."
          },
          "postLaunchDraftVersion": {
            "type": "boolean",
            "description": "Whether Braze should return the post-launch draft version when one exists."
          },
          "includeHasTranslatableContent": {
            "type": "boolean",
            "description": "Whether Braze should include has_translatable_content fields for messages."
          }
        },
        "additionalProperties": false,
        "required": [
          "canvasId"
        ],
        "description": "Input parameters for fetching one Braze Canvas details response."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "The Braze response status message."
          },
          "canvas": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Braze Canvas API identifier requested by the caller."
              },
              "name": {
                "type": "string",
                "description": "The Braze Canvas name."
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Braze Canvas description."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "type": "string",
                "description": "The timestamp when the Canvas was created."
              },
              "updatedAt": {
                "type": "string",
                "description": "The timestamp when the Canvas was last updated."
              },
              "archived": {
                "type": "boolean",
                "description": "Whether the Canvas is archived."
              },
              "draft": {
                "type": "boolean",
                "description": "Whether the Canvas is a draft."
              },
              "enabled": {
                "type": "boolean",
                "description": "Whether the Canvas is active."
              },
              "hasPostLaunchDraft": {
                "type": "boolean",
                "description": "Whether the Canvas has a post-launch draft."
              },
              "scheduleType": {
                "type": "string",
                "description": "The Canvas schedule type."
              },
              "firstEntry": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Canvas first-entry timestamp."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastEntry": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Canvas last-entry timestamp."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "channels": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One Canvas channel name."
                },
                "description": "Channels used by the Canvas."
              },
              "variants": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "One Canvas variant object."
                },
                "description": "Raw Canvas variant objects."
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One Canvas tag name."
                },
                "description": "Tag names associated with the Canvas."
              },
              "teams": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One team name."
                },
                "description": "Team names associated with the Canvas."
              },
              "steps": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "One Canvas step object."
                },
                "description": "Raw Canvas step objects."
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw Braze Canvas details response."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "raw"
            ],
            "description": "The normalized Braze Canvas details response."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Braze Canvas details response."
          }
        },
        "additionalProperties": false,
        "required": [
          "canvas",
          "raw"
        ],
        "description": "The Braze Canvas details action output."
      }
    },
    {
      "id": "braze.list_campaigns",
      "service": "braze",
      "name": "list_campaigns",
      "description": "List Braze campaigns with optional archived, sort, page, and last-edited filters.",
      "requiredScopes": [
        "campaigns.list"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based Braze page number to return."
          },
          "includeArchived": {
            "type": "boolean",
            "description": "Whether archived campaigns or Canvases should be included."
          },
          "sortDirection": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The creation-time sort direction to send to Braze."
          },
          "lastEditedAfter": {
            "type": "string",
            "minLength": 1,
            "description": "Only return items edited after this time, mapped to Braze last_edit.time[gt]. Use Braze's yyyy-MM-DDTHH:mm:ss-compatible timestamp format."
          }
        },
        "additionalProperties": false,
        "description": "Filters and paging parameters for a Braze export list endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "The Braze response status message."
          },
          "campaigns": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Braze campaign API identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The Braze campaign name."
                },
                "lastEdited": {
                  "type": "string",
                  "description": "The last edited timestamp returned by Braze."
                },
                "isApiCampaign": {
                  "type": "boolean",
                  "description": "Whether the campaign is an API campaign."
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "One campaign tag name."
                  },
                  "description": "Tag names associated with the campaign."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Braze campaign list item."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "raw"
              ],
              "description": "One normalized campaign item returned by Braze."
            },
            "description": "The campaigns returned by Braze."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Braze campaign list response."
          }
        },
        "additionalProperties": false,
        "required": [
          "campaigns",
          "raw"
        ],
        "description": "The normalized Braze campaign list response."
      }
    },
    {
      "id": "braze.list_canvases",
      "service": "braze",
      "name": "list_canvases",
      "description": "List Braze Canvases with optional archived, sort, page, and last-edited filters.",
      "requiredScopes": [
        "canvas.list"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based Braze page number to return."
          },
          "includeArchived": {
            "type": "boolean",
            "description": "Whether archived campaigns or Canvases should be included."
          },
          "sortDirection": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The creation-time sort direction to send to Braze."
          },
          "lastEditedAfter": {
            "type": "string",
            "minLength": 1,
            "description": "Only return items edited after this time, mapped to Braze last_edit.time[gt]. Use Braze's yyyy-MM-DDTHH:mm:ss-compatible timestamp format."
          }
        },
        "additionalProperties": false,
        "description": "Filters and paging parameters for a Braze export list endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "The Braze response status message."
          },
          "canvases": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Braze Canvas API identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The Braze Canvas name."
                },
                "lastEdited": {
                  "type": "string",
                  "description": "The last edited timestamp returned by Braze."
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "One Canvas tag name."
                  },
                  "description": "Tag names associated with the Canvas."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Braze Canvas list item."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "raw"
              ],
              "description": "One normalized Canvas item returned by Braze."
            },
            "description": "The Canvases returned by Braze."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Braze Canvas list response."
          }
        },
        "additionalProperties": false,
        "required": [
          "canvases",
          "raw"
        ],
        "description": "The normalized Braze Canvas list response."
      }
    }
  ]
}
