{
"openapi": "3.0.3",
"info": {
"title": "BoothMaven Zapier Integration API",
"version": "1.0.0",
"description": "Comprehensive API documentation for BoothMaven's Zapier integration. BoothMaven is an event engagement, lead capture, and digital business card platform. This API enables seamless synchronization of contacts captured during live events and meetings with external CRMs, spreadsheets, and marketing automation tools via Zapier.\n\n### Authentication\nAuthentication is powered by **OAuth 2.0 Authorization Code Grant** (Laravel Passport). All API requests must include a valid Bearer token in the `Authorization` header.\n\n### Base URLs\n* **Production**: `https://api.boothmaven.com`\n* **Staging / Testing**: `https://alpha-api.boothmaven.com`\n\n### Support & Inquiries\nFor integration support or developer inquiries, contact [[email protected]](mailto:[email protected]).",
"contact": {
"name": "BoothMaven Developer Support",
"url": "https://boothmaven.com",
"email": "[email protected]"
}
},
"servers": [
{
"url": "https://api.boothmaven.com",
"description": "Production Server"
},
{
"url": "https://alpha-api.boothmaven.com",
"description": "Staging / Alpha Server"
}
],
"tags": [
{
"name": "Authentication (OAuth 2.0)",
"description": "OAuth 2.0 Authorization Code grant and token exchange endpoints."
},
{
"name": "Account",
"description": "Identity verification and connection testing."
},
{
"name": "Trigger: New Contact (REST Hooks)",
"description": "Webhook subscriptions and sample contact polling for real-time lead sync."
},
{
"name": "Action: Create Contact",
"description": "Inbound endpoint to create new contacts in BoothMaven from third-party apps."
},
{
"name": "Trigger: New Meeting (REST Hooks)",
"description": "Webhook subscriptions and sample meeting polling for real-time meeting sync."
},
{
"name": "Action: Create Meeting",
"description": "Inbound endpoint to schedule new meetings in BoothMaven from external calendars and scheduling tools."
}
],
"paths": {
"/oauth/authorize": {
"get": {
"tags": ["Authentication (OAuth 2.0)"],
"summary": "Request Authorization Code",
"description": "Initiates the standard OAuth 2.0 authorization code flow. Directs users to the BoothMaven login and consent screen where they grant permission to access their BoothMaven contacts.",
"parameters": [
{
"name": "client_id",
"in": "query",
"required": true,
"description": "OAuth 2.0 Client ID issued to the Zapier application.",
"schema": {
"type": "string",
"example": "9a123456-7890-abcd-ef01-234567890abc"
}
},
{
"name": "redirect_uri",
"in": "query",
"required": true,
"description": "The exact callback URL registered with BoothMaven (e.g. `https://zapier.com/dashboard/auth/oauth/return/App12345CLIAPI/`).",
"schema": {
"type": "string",
"format": "uri",
"example": "https://zapier.com/dashboard/auth/oauth/return/App12345CLIAPI/"
}
},
{
"name": "response_type",
"in": "query",
"required": true,
"description": "Must be set to `code`.",
"schema": {
"type": "string",
"default": "code",
"enum": ["code"]
}
},
{
"name": "scope",
"in": "query",
"required": false,
"description": "Permissions requested. Supported scope: `contacts:read`.",
"schema": {
"type": "string",
"default": "contacts:read",
"example": "contacts:read"
}
},
{
"name": "state",
"in": "query",
"required": false,
"description": "Unique cryptographic state parameter to prevent CSRF attacks.",
"schema": {
"type": "string",
"example": "d98f7e2c-b51a-4c28-98e3-0d5b47a6cf81"
}
}
],
"responses": {
"302": {
"description": "Redirects to login page if unauthenticated, or redirects to `redirect_uri` with `code` and `state` upon user authorization."
},
"400": {
"description": "Bad Request - Invalid client ID or redirect URI mismatch.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/oauth/token": {
"post": {
"tags": ["Authentication (OAuth 2.0)"],
"summary": "Exchange Authorization Code / Refresh Access Token",
"description": "Exchanges an authorization code for an access token and refresh token, or refreshes an expired access token using a refresh token.",
"requestBody": {
"required": true,
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/TokenRequest"
}
}
}
},
"responses": {
"200": {
"description": "Token issued successfully.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TokenResponse"
}
}
}
},
"400": {
"description": "Bad Request - Invalid grant, invalid credentials, or expired authorization code.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized - Client authentication failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/api/zapier/me": {
"get": {
"tags": ["Account"],
"summary": "Get Authenticated User Profile (Connection Test)",
"description": "Returns the authenticated user's profile information. Used by Zapier during initial account connection testing and to display dynamic connection labels (e.g. `[email protected]` or `Jane Doe ([email protected])` without app name per Zapier publishing conventions).",
"security": [{ "bearerAuth": [] }, { "oauth2": ["contacts:read"] }],
"responses": {
"200": {
"description": "Authenticated user profile.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/User"
}
}
}
},
"401": {
"description": "Unauthorized - Missing, invalid, or expired Bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/api/zapier/hooks/contacts/subscribe": {
"post": {
"tags": ["Trigger: New Contact (REST Hooks)"],
"summary": "Subscribe to New Contact Webhook",
"description": "Registers a REST hook subscription for the authenticated user. When a Zap containing the **New Contact** trigger is activated in Zapier, Zapier calls this endpoint with a unique webhook target URL. When a contact is captured in BoothMaven, a webhook event is dispatched to this target URL.",
"security": [{ "bearerAuth": [] }, { "oauth2": ["contacts:read"] }],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscribeInput"
}
}
}
},
"responses": {
"201": {
"description": "Webhook subscription created successfully.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscribeResponse"
}
}
}
},
"401": {
"description": "Unauthorized - Missing or invalid Bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"422": {
"description": "Validation Error - Missing or invalid targetUrl.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationError"
}
}
}
}
},
"callbacks": {
"onNewContact": {
"{$request.body#/targetUrl}": {
"post": {
"summary": "Outbound Webhook Delivery: New Contact Captured",
"description": "When a new contact is captured in BoothMaven, BoothMaven delivers this HTTP POST payload to the registered Zapier `targetUrl` in near real-time.",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Contact"
}
}
}
},
"responses": {
"200": {
"description": "Zapier acknowledges receipt of the webhook event."
}
}
}
}
}
}
},
"delete": {
"tags": ["Trigger: New Contact (REST Hooks)"],
"summary": "Unsubscribe from New Contact Webhook",
"description": "Deactivates and removes an existing webhook subscription for the authenticated user. Called automatically by Zapier when a Zap is turned off, paused, or deleted.",
"security": [{ "bearerAuth": [] }, { "oauth2": ["contacts:read"] }],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnsubscribeInput"
}
}
}
},
"responses": {
"200": {
"description": "Webhook subscription removed successfully.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnsubscribeResponse"
}
}
}
},
"401": {
"description": "Unauthorized - Missing or invalid Bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"422": {
"description": "Validation Error - Neither `id` nor `targetUrl` provided.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationError"
}
}
}
}
}
}
},
"/api/zapier/contacts": {
"get": {
"tags": ["Trigger: New Contact (REST Hooks)"],
"summary": "List Recent Contacts (Perform List / Sample Data)",
"description": "Retrieves up to 20 of the most recently created contacts for the authenticated user, including linked event details. Used by the Zap Editor to display real sample data for field mapping during Zap creation.",
"security": [{ "bearerAuth": [] }, { "oauth2": ["contacts:read"] }],
"responses": {
"200": {
"description": "Array of recent contact records.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Contact"
}
}
}
}
},
"401": {
"description": "Unauthorized - Missing or invalid Bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"post": {
"tags": ["Action: Create Contact"],
"summary": "Create Contact (Inbound Action)",
"description": "Creates a new contact in BoothMaven under the authenticated user's account. This powers the Zapier Action allowing third-party tools (Google Sheets, Typeform, Webforms, CRMs) to push leads directly into BoothMaven.",
"security": [{ "bearerAuth": [] }, { "oauth2": ["contacts:read"] }],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ContactCreateInput"
}
}
}
},
"responses": {
"201": {
"description": "Contact created successfully.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Contact"
}
}
}
},
"401": {
"description": "Unauthorized - Missing or invalid Bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"422": {
"description": "Validation Error - Missing required fields or invalid data format.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationError"
}
}
}
}
}
}
},
"/api/zapier/hooks/meetings/subscribe": {
"post": {
"tags": ["Trigger: New Meeting (REST Hooks)"],
"summary": "Subscribe to New Meeting Webhook",
"description": "Registers a new REST Hook subscription URL for the authenticated user. Whenever a meeting is scheduled in BoothMaven, BoothMaven sends an HTTP POST with the meeting payload to this URL.",
"security": [{ "bearerAuth": [] }, { "oauth2": ["contacts:read"] }],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscribeInput"
}
}
}
},
"responses": {
"201": {
"description": "Webhook subscription created successfully.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscribeResponse"
}
}
}
},
"401": {
"description": "Unauthorized - Missing or invalid Bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"422": {
"description": "Validation Error - Missing targetUrl.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationError"
}
}
}
}
}
},
"delete": {
"tags": ["Trigger: New Meeting (REST Hooks)"],
"summary": "Unsubscribe from New Meeting Webhook",
"description": "Removes a meeting webhook subscription for the authenticated user.",
"security": [{ "bearerAuth": [] }, { "oauth2": ["contacts:read"] }],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnsubscribeInput"
}
}
}
},
"responses": {
"200": {
"description": "Webhook subscription removed successfully.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnsubscribeResponse"
}
}
}
},
"401": {
"description": "Unauthorized - Missing or invalid Bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"422": {
"description": "Validation Error - Neither `id` nor `targetUrl` provided.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationError"
}
}
}
}
}
}
},
"/api/zapier/meetings": {
"get": {
"tags": ["Trigger: New Meeting (REST Hooks)"],
"summary": "List Recent Meetings (Perform List / Sample Data)",
"description": "Retrieves up to 20 of the most recently scheduled meetings for the authenticated user. Used by the Zap Editor to display sample meeting data for field mapping.",
"security": [{ "bearerAuth": [] }, { "oauth2": ["contacts:read"] }],
"responses": {
"200": {
"description": "Array of recent meeting records.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Meeting"
}
}
}
}
},
"401": {
"description": "Unauthorized - Missing or invalid Bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
},
"post": {
"tags": ["Action: Create Meeting"],
"summary": "Create Meeting (Inbound Action)",
"description": "Schedules a new meeting in BoothMaven under the authenticated user's account. Used by Zapier to schedule meetings from external tools (Google Calendar, Calendly, Typeform, CRM).",
"security": [{ "bearerAuth": [] }, { "oauth2": ["contacts:read"] }],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MeetingCreateInput"
}
}
}
},
"responses": {
"201": {
"description": "Meeting created successfully.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Meeting"
}
}
}
},
"401": {
"description": "Unauthorized - Missing or invalid Bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"422": {
"description": "Validation Error - Missing required fields or invalid data format.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationError"
}
}
}
}
}
}
}
},
"components": {
"securitySchemes": {
"oauth2": {
"type": "oauth2",
"description": "OAuth 2.0 Authorization Code Grant",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://api.boothmaven.com/oauth/authorize",
"tokenUrl": "https://api.boothmaven.com/oauth/token",
"refreshUrl": "https://api.boothmaven.com/oauth/token",
"scopes": {
"contacts:read": "Read-only access to captured contacts and event details"
}
}
}
},
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
"description": "Include your OAuth access token: `Authorization: Bearer <access_token>`"
}
},
"schemas": {
"User": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"example": 42,
"description": "Unique BoothMaven user ID"
},
"name": {
"type": "string",
"example": "Jane Doe",
"description": "Full name of the user"
},
"username": {
"type": "string",
"example": "janedoe",
"description": "BoothMaven username"
},
"email": {
"type": "string",
"format": "email",
"example": "[email protected]",
"description": "Primary email address"
}
},
"required": ["id", "name", "username", "email"]
},
"Contact": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"example": 1001,
"description": "Unique identifier of the contact in BoothMaven"
},
"first_name": {
"type": "string",
"example": "John",
"description": "First name"
},
"last_name": {
"type": "string",
"nullable": true,
"example": "Smith",
"description": "Last name"
},
"email": {
"type": "string",
"format": "email",
"nullable": true,
"example": "[email protected]",
"description": "Primary email address"
},
"phone": {
"type": "string",
"nullable": true,
"example": "+64 21 123 4567",
"description": "Primary phone number"
},
"company": {
"type": "string",
"nullable": true,
"example": "ABC Limited",
"description": "Company or organization name"
},
"job_title": {
"type": "string",
"nullable": true,
"example": "Marketing Manager",
"description": "Job title or designation"
},
"event_id": {
"type": "integer",
"nullable": true,
"example": 25,
"description": "ID of the event where contact was captured"
},
"event_name": {
"type": "string",
"nullable": true,
"example": "BoothMaven Expo 2026",
"description": "Title of the associated event"
},
"created_at": {
"type": "string",
"format": "date-time",
"example": "2026-09-14T10:30:00Z",
"description": "Creation timestamp in UTC ISO 8601 format"
}
},
"required": ["id", "first_name", "created_at"]
},
"ContactCreateInput": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"maxLength": 255,
"example": "Alice",
"description": "Contact first name (required)"
},
"last_name": {
"type": "string",
"maxLength": 255,
"nullable": true,
"example": "Williams",
"description": "Contact last name"
},
"email": {
"type": "string",
"format": "email",
"maxLength": 255,
"nullable": true,
"example": "[email protected]",
"description": "Contact email address"
},
"phone": {
"type": "string",
"maxLength": 50,
"nullable": true,
"example": "+1 555 234 5678",
"description": "Contact phone number"
},
"company": {
"type": "string",
"maxLength": 255,
"nullable": true,
"example": "Tech Innovators Inc",
"description": "Company name"
},
"job_title": {
"type": "string",
"maxLength": 255,
"nullable": true,
"example": "Senior Solutions Architect",
"description": "Job title / designation"
}
},
"required": ["first_name"]
},
"Meeting": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"example": 5002,
"description": "Unique identifier of the meeting"
},
"meeting_name": {
"type": "string",
"example": "Enterprise Demo Call",
"description": "Title or subject of the meeting"
},
"meeting_status": {
"type": "string",
"example": "scheduled",
"description": "Meeting status"
},
"meeting_format": {
"type": "string",
"nullable": true,
"example": "virtual",
"description": "Format (virtual, hybrid, inPerson)"
},
"priority": {
"type": "string",
"nullable": true,
"example": "high",
"description": "Priority level"
},
"meeting_date": {
"type": "string",
"format": "date",
"example": "2026-11-01",
"description": "Date of the meeting"
},
"meeting_time": {
"type": "string",
"example": "14:00:00",
"description": "Time of the meeting"
},
"meeting_duration": {
"type": "integer",
"nullable": true,
"example": 45,
"description": "Duration in minutes"
},
"timezone": {
"type": "string",
"example": "UTC",
"description": "Timezone identifier"
},
"meeting_location": {
"type": "string",
"nullable": true,
"example": "https://meet.google.com/xyz",
"description": "Meeting location or conference link"
},
"meeting_agenda": {
"type": "string",
"nullable": true,
"example": "Review enterprise features and answer questions",
"description": "Meeting agenda or notes"
},
"meeting_url": {
"type": "string",
"nullable": true,
"example": "https://view.boothmaven.com/cards/meeting/xyz987",
"description": "Public meeting card or booking link"
},
"booking_source": {
"type": "string",
"example": "zapier",
"description": "Origin of the meeting booking"
},
"event_id": {
"type": "integer",
"nullable": true,
"example": 25,
"description": "Linked BoothMaven event ID"
},
"event_name": {
"type": "string",
"nullable": true,
"example": "BoothMaven Expo 2026",
"description": "Title of the associated event"
},
"primary_contact_id": {
"type": "integer",
"nullable": true,
"example": 1001,
"description": "Primary attendee contact ID"
},
"primary_contact_name": {
"type": "string",
"nullable": true,
"example": "Lead Person",
"description": "Primary attendee name"
},
"primary_contact_email": {
"type": "string",
"nullable": true,
"example": "[email protected]",
"description": "Primary attendee email"
},
"contacts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MeetingContact"
}
},
"created_at": {
"type": "string",
"format": "date-time",
"example": "2026-09-23T10:15:00Z",
"description": "Creation timestamp in UTC ISO 8601 format"
}
},
"required": [
"id",
"meeting_name",
"meeting_status",
"meeting_date",
"meeting_time",
"created_at"
]
},
"MeetingContact": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"example": 1001
},
"name": {
"type": "string",
"example": "Lead Person"
},
"email": {
"type": "string",
"nullable": true,
"example": "[email protected]"
},
"phone": {
"type": "string",
"nullable": true,
"example": "+1234567890"
},
"company": {
"type": "string",
"nullable": true,
"example": "Acme Inc"
}
}
},
"MeetingCreateInput": {
"type": "object",
"properties": {
"meeting_name": {
"type": "string",
"maxLength": 191,
"example": "Enterprise Demo Call",
"description": "Meeting title or subject (required)"
},
"meeting_date": {
"type": "string",
"format": "date",
"example": "2026-11-01",
"description": "Date of meeting in YYYY-MM-DD format (required)"
},
"meeting_time": {
"type": "string",
"maxLength": 50,
"example": "14:00:00",
"description": "Time of meeting e.g. 14:00 or 14:00:00 (required)"
},
"meeting_duration": {
"type": "integer",
"nullable": true,
"example": 45,
"description": "Meeting duration in minutes (default 30)"
},
"meeting_format": {
"type": "string",
"enum": ["virtual", "hybrid", "inPerson"],
"nullable": true,
"example": "virtual",
"description": "Format of meeting"
},
"priority": {
"type": "string",
"nullable": true,
"example": "high",
"description": "Priority level (high, medium, low)"
},
"meeting_location": {
"type": "string",
"maxLength": 191,
"nullable": true,
"example": "https://meet.google.com/xyz",
"description": "Physical location or video call link"
},
"meeting_agenda": {
"type": "string",
"maxLength": 1000,
"nullable": true,
"example": "Review enterprise features and answer questions",
"description": "Agenda or notes"
},
"timezone": {
"type": "string",
"maxLength": 100,
"nullable": true,
"example": "America/New_York",
"description": "Timezone identifier (default UTC)"
},
"event_id": {
"type": "integer",
"nullable": true,
"example": 25,
"description": "Linked BoothMaven event ID"
},
"contact_id": {
"oneOf": [
{ "type": "integer" },
{ "type": "array", "items": { "type": "integer" } }
],
"nullable": true,
"example": 1001,
"description": "ID(s) of existing BoothMaven contact(s) to attach"
},
"contact_email": {
"type": "string",
"format": "email",
"nullable": true,
"example": "[email protected]",
"description": "Email of existing contact to link if contact_id is unknown"
}
},
"required": ["meeting_name", "meeting_date", "meeting_time"]
},
"SubscribeInput": {
"type": "object",
"properties": {
"targetUrl": {
"type": "string",
"format": "uri",
"example": "https://hooks.zapier.com/hooks/catch/123456/abcdef/",
"description": "Webhook callback URL provided by Zapier (camelCase)"
},
"target_url": {
"type": "string",
"format": "uri",
"example": "https://hooks.zapier.com/hooks/catch/123456/abcdef/",
"description": "Webhook callback URL provided by Zapier (snake_case alternative)"
}
}
},
"SubscribeResponse": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"example": 15,
"description": "Subscription record ID"
},
"targetUrl": {
"type": "string",
"format": "uri",
"example": "https://hooks.zapier.com/hooks/catch/123456/abcdef/"
},
"target_url": {
"type": "string",
"format": "uri",
"example": "https://hooks.zapier.com/hooks/catch/123456/abcdef/"
}
},
"required": ["id", "targetUrl", "target_url"]
},
"UnsubscribeInput": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"example": 15,
"description": "Subscription record ID"
},
"targetUrl": {
"type": "string",
"format": "uri",
"example": "https://hooks.zapier.com/hooks/catch/123456/abcdef/",
"description": "Target webhook URL to delete"
},
"target_url": {
"type": "string",
"format": "uri",
"example": "https://hooks.zapier.com/hooks/catch/123456/abcdef/"
}
}
},
"UnsubscribeResponse": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"example": true
}
},
"required": ["success"]
},
"TokenRequest": {
"type": "object",
"properties": {
"grant_type": {
"type": "string",
"enum": ["authorization_code", "refresh_token"],
"example": "authorization_code"
},
"client_id": {
"type": "string",
"example": "9a123456-7890-abcd-ef01-234567890abc"
},
"client_secret": {
"type": "string",
"example": "sec_abc123xyz789..."
},
"redirect_uri": {
"type": "string",
"format": "uri",
"example": "https://zapier.com/dashboard/auth/oauth/return/App12345CLIAPI/"
},
"code": {
"type": "string",
"example": "def50200...",
"description": "Required when grant_type is authorization_code"
},
"refresh_token": {
"type": "string",
"example": "def50200...",
"description": "Required when grant_type is refresh_token"
}
},
"required": ["grant_type", "client_id", "client_secret"]
},
"TokenResponse": {
"type": "object",
"properties": {
"token_type": {
"type": "string",
"example": "Bearer"
},
"expires_in": {
"type": "integer",
"example": 31536000,
"description": "Token validity duration in seconds (1 year)"
},
"access_token": {
"type": "string",
"example": "eyJ0eXAiOiJKV1QiLC..."
},
"refresh_token": {
"type": "string",
"example": "def50200..."
}
},
"required": [
"token_type",
"expires_in",
"access_token",
"refresh_token"
]
},
"ValidationError": {
"type": "object",
"properties": {
"message": {
"type": "string",
"example": "The targetUrl or target_url field is required and must be a valid URL."
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"example": {
"targetUrl": ["A valid target URL is required."]
}
}
},
"required": ["message", "errors"]
},
"ErrorResponse": {
"type": "object",
"properties": {
"message": {
"type": "string",
"example": "Unauthenticated."
}
},
"required": ["message"]
}
}
}
}