openapi: 3.0.3 info: title: 'Wavo API Reference' description: 'Wavo Platform API reference' version: 1.0.0 servers: - url: 'https://app.wavo.co' paths: /api/v1/campaigns: get: summary: 'Display a listing of campaigns' operationId: displayAListingOfCampaigns description: "Return all campaigns accessible by a user.\nIf used by an agency with white-label dashboard subscription, an optional client_id parameter can be defined to return the campaigns of a specific client." parameters: - in: query name: client_id description: 'The id of a client.' example: ah83445df46as5432mga required: false schema: type: string description: 'The id of a client.' example: ah83445df46as5432mga - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 3q4gezj87m5gn65x9rpo name: 'Cremin LLC 13' timezone: US/Mountain status: DRAFT created_at: 1677779927 client: id: xvey7lp3gzxew408zr9n name: 'Cremin LLC' max_emails: 3 created_at: 1677779927 - id: 9zk26m1el250lpj8xvr3 name: 'Brekke LLC 4' timezone: US/Mountain status: DRAFT created_at: 1677779927 client: id: dxj2z7kno39yo9lyv5qp name: 'Brekke LLC' max_emails: 3 created_at: 1677779927 properties: data: type: array example: - id: 3q4gezj87m5gn65x9rpo name: 'Cremin LLC 13' timezone: US/Mountain status: DRAFT created_at: 1677779927 client: id: xvey7lp3gzxew408zr9n name: 'Cremin LLC' max_emails: 3 created_at: 1677779927 - id: 9zk26m1el250lpj8xvr3 name: 'Brekke LLC 4' timezone: US/Mountain status: DRAFT created_at: 1677779927 client: id: dxj2z7kno39yo9lyv5qp name: 'Brekke LLC' max_emails: 3 created_at: 1677779927 items: type: object properties: id: type: string example: 3q4gezj87m5gn65x9rpo name: type: string example: 'Cremin LLC 13' timezone: type: string example: US/Mountain status: type: string example: DRAFT created_at: type: integer example: 1677779927 client: type: object properties: id: type: string example: xvey7lp3gzxew408zr9n name: type: string example: 'Cremin LLC' max_emails: type: integer example: 3 created_at: type: integer example: 1677779927 tags: - Campaigns post: summary: 'Create a new campaign' operationId: createANewCampaign description: 'Create a new campaign for a client.' parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: id: 8rp5dxyqljmol4mv0goe name: 'Satterfield and Sons 11' timezone: US/Mountain status: DRAFT created_at: 1677779927 client: id: 26mzne14wynrokl5djpq name: 'Satterfield and Sons' max_emails: 3 created_at: 1677779927 properties: data: type: object properties: id: type: string example: 8rp5dxyqljmol4mv0goe name: type: string example: 'Satterfield and Sons 11' timezone: type: string example: US/Mountain status: type: string example: DRAFT created_at: type: integer example: 1677779927 client: type: object properties: id: type: string example: 26mzne14wynrokl5djpq name: type: string example: 'Satterfield and Sons' max_emails: type: integer example: 3 created_at: type: integer example: 1677779927 tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The campaign name.' example: aut client_id: type: string description: 'The id of the client.' example: 4a83445df46as5432mga timezone: type: string description: "The timezone that the campaign's schedule should use." example: US/Mountain required: - name - client_id - timezone '/api/v1/campaigns/{campaign_id}/daily-stats': get: summary: 'Fetch the daily campaign stats of a campaign' operationId: fetchTheDailyCampaignStatsOfACampaign description: "Return all daily campaign stats of a campaign.\nTo limit results, a query parameter `start` can be sent, so that the response contains only stats for days after a specific timestamp." parameters: - in: query name: start description: 'The timestamp after which to show stats.' example: '1662940800' required: false schema: type: string description: 'The timestamp after which to show stats.' example: '1662940800' - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - day: '2022-09-12T00:00:00.000000Z' contacted: 11 replied: 1 autoreplied: 0 bounced: 4 positive: 1 neutral: 0 negative: 4 messages_clicked: 5 messages_opened: 0 messages_sent: 15 - day: '2022-09-13T00:00:00.000000Z' contacted: 15 replied: 3 autoreplied: 1 bounced: 2 positive: 2 neutral: 1 negative: 2 messages_clicked: 6 messages_opened: 0 messages_sent: 17 properties: data: type: array example: - day: '2022-09-12T00:00:00.000000Z' contacted: 11 replied: 1 autoreplied: 0 bounced: 4 positive: 1 neutral: 0 negative: 4 messages_clicked: 5 messages_opened: 0 messages_sent: 15 - day: '2022-09-13T00:00:00.000000Z' contacted: 15 replied: 3 autoreplied: 1 bounced: 2 positive: 2 neutral: 1 negative: 2 messages_clicked: 6 messages_opened: 0 messages_sent: 17 items: type: object properties: day: type: string example: '2022-09-12T00:00:00.000000Z' contacted: type: integer example: 11 replied: type: integer example: 1 autoreplied: type: integer example: 0 bounced: type: integer example: 4 positive: type: integer example: 1 neutral: type: integer example: 0 negative: type: integer example: 4 messages_clicked: type: integer example: 5 messages_opened: type: integer example: 0 messages_sent: type: integer example: 15 tags: - Campaigns parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 1 required: true schema: type: integer '/api/v1/campaigns/{campaign_id}/stats': get: summary: 'Fetch the total stats of a campaign' operationId: fetchTheTotalStatsOfACampaign description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: contacted: 5 replied: 1 autoreplied: 0 bounced: 0 positive: 1 neutral: 0 negative: 0 messages_clicked: 0 messages_opened: 0 messages_sent: 5 campaign_steps: - number: 1 sent: 5 queued: 0 contacted: 5 replied: 1 positive: 1 bounced: 0 messages_clicked: 0 messages_opened: 0 - number: 2 sent: 0 queued: 4 contacted: 0 replied: 0 positive: 0 bounced: 0 messages_clicked: 0 messages_opened: 0 properties: data: type: object properties: contacted: type: integer example: 5 replied: type: integer example: 1 autoreplied: type: integer example: 0 bounced: type: integer example: 0 positive: type: integer example: 1 neutral: type: integer example: 0 negative: type: integer example: 0 messages_clicked: type: integer example: 0 messages_opened: type: integer example: 0 messages_sent: type: integer example: 5 campaign_steps: type: array example: - number: 1 sent: 5 queued: 0 contacted: 5 replied: 1 positive: 1 bounced: 0 messages_clicked: 0 messages_opened: 0 - number: 2 sent: 0 queued: 4 contacted: 0 replied: 0 positive: 0 bounced: 0 messages_clicked: 0 messages_opened: 0 items: type: object properties: number: type: integer example: 1 sent: type: integer example: 5 queued: type: integer example: 0 contacted: type: integer example: 5 replied: type: integer example: 1 positive: type: integer example: 1 bounced: type: integer example: 0 messages_clicked: type: integer example: 0 messages_opened: type: integer example: 0 tags: - Campaigns parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 1 required: true schema: type: integer /api/v1/clients: get: summary: "Display a user's accessible clients" operationId: displayAUsersAccessibleClients description: 'This will return an array of 1 or more clients (for users on white-label dashboard subscription).' parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - id: kn9x5qyro086w4z6pd37 name: 'Roberts PLC' max_emails: 3 created_at: 1677779927 - id: 41z52kqnwjepoxplrv80 name: 'Feeney LLC' max_emails: 3 created_at: 1677779927 properties: data: type: array example: - id: kn9x5qyro086w4z6pd37 name: 'Roberts PLC' max_emails: 3 created_at: 1677779927 - id: 41z52kqnwjepoxplrv80 name: 'Feeney LLC' max_emails: 3 created_at: 1677779927 items: type: object properties: id: type: string example: kn9x5qyro086w4z6pd37 name: type: string example: 'Roberts PLC' max_emails: type: integer example: 3 created_at: type: integer example: 1677779927 tags: - Clients post: summary: 'Create a new client' operationId: createANewClient description: "Add a new client to the user's agency" parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 201: description: '' content: application/json: schema: type: object example: data: id: l8re092o9qv7w745jmpk name: 'Thompson LLC' max_emails: 3 created_at: 1580411327 properties: data: type: object properties: id: type: string example: l8re092o9qv7w745jmpk name: type: string example: 'Thompson LLC' max_emails: type: integer example: 3 created_at: type: integer example: 1580411327 tags: - Clients requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The client name or title.' example: 'Thompson LLC' max_emails: type: integer description: 'The amount of max emails the client can add manually.' example: 3 required: - name - max_emails '/api/v1/clients/{client_id}/users': get: summary: "Display a client's users" operationId: displayAClientsUsers description: 'Show all active users of a client as well as pending user invitations, with their assigned roles.' parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: users: - name: 'Mike Jones' email: mike@wavo.co created_at: 1580412998 roles: - view_campaigns - name: 'Bill Scott' email: bill@wavo.co created_at: 1580412998 roles: - view_campaigns - create_campaigns invitations: - email: mike1@wavo.co created_at: 1580412998 roles: - create_campaigns - export_data - view_campaigns properties: data: type: object properties: users: type: array example: - name: 'Mike Jones' email: mike@wavo.co created_at: 1580412998 roles: - view_campaigns - name: 'Bill Scott' email: bill@wavo.co created_at: 1580412998 roles: - view_campaigns - create_campaigns items: type: object properties: name: type: string example: 'Mike Jones' email: type: string example: mike@wavo.co created_at: type: integer example: 1580412998 roles: type: array example: - view_campaigns items: type: string invitations: type: array example: - email: mike1@wavo.co created_at: 1580412998 roles: - create_campaigns - export_data - view_campaigns items: type: object properties: email: type: string example: mike1@wavo.co created_at: type: integer example: 1580412998 roles: type: array example: - create_campaigns - export_data - view_campaigns items: type: string tags: - Clients post: summary: 'Add a new client user' operationId: addANewClientUser description: "Add a new user to a client. Specify the user's email address and the roles he should have.\nAvailable roles are:\n- view_campaigns\n- create_campaigns\n- export_campaigns" parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: message: 'An invitation was sent to mike@wavo.co' properties: message: type: string example: 'An invitation was sent to mike@wavo.co' tags: - Clients requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'The email address of the user.' example: mike@wavo.co view_campaigns: type: boolean description: 'Whether the user will be able to view campaigns.' example: true create_campaigns: type: boolean description: 'Whether the user will be able to create new campaigns.' example: true export_campaigns: type: boolean description: 'Whether the user will be able export campaign contacts.' example: true required: - email put: summary: 'Update a client user' operationId: updateAClientUser description: "Update a client user's roles. Can update roles of active users or user invitations.\nAvailable roles are:\n- view_campaigns\n- create_campaigns\n- export_campaigns" parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: message: 'Success. Updated user roles.' properties: message: type: string example: 'Success. Updated user roles.' tags: - Clients requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'The email address of the user.' example: mike@wavo.co view_campaigns: type: boolean description: 'Whether the user will be able to view campaigns.' example: true create_campaigns: type: boolean description: 'Whether the user will be able to create new campaigns.' example: true export_campaigns: type: boolean description: 'Whether the user will be able export campaign contacts.' example: true required: - email delete: summary: 'Delete a client user' operationId: deleteAClientUser description: 'Remove a user from a client.' parameters: - in: query name: email description: 'The email address of the user.' example: mike@wavo.co required: true schema: type: string description: 'The email address of the user.' example: mike@wavo.co - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 204: description: '' tags: - Clients requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address. Must not be greater than 255 characters.' example: daugherty.elsie@example.org required: - email parameters: - in: path name: client_id description: 'The id of a client.' example: a83445df46as5432mga required: true schema: type: string /api/v1/contacts: post: summary: 'Create a new contact' operationId: createANewContact description: 'A new contact can be attached to an existing campaign. As such the campaign_id is required' parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 201: description: '' content: application/json: schema: type: object example: data: - id: we52o4rv130mz1qxyzk8pmljd email: aditya.kohler@example.org first_name: Aditya last_name: Kohler company: 'Gerlach, Ziemann and Reilly' industry: 'Nonprofit Organization Management' website: kunde.com title: Ms. phone: 219-959-5166 address: '41164 Osvaldo Row' city: Baileyborough state: 'New Hampshire' country: US custom_merge_fields: 'fav color': purple sport: running os: 'Windows NT 5.0' timezone: US/Mountain status: OK interest: null emails_sent: 0 completed_steps: 0 is_missing_data: false is_suppressed: false created_at: 1579888600 campaign: id: fkjtf4390kfgu8903nsk name: 'Grady-Runolfsson 16' timezone: US/Mountain status: DRAFT created_at: 1579888600 client: id: a83445df46as5432mga name: Grady-Runolfsson created_at: 1579888600 properties: data: type: array example: - id: we52o4rv130mz1qxyzk8pmljd email: aditya.kohler@example.org first_name: Aditya last_name: Kohler company: 'Gerlach, Ziemann and Reilly' industry: 'Nonprofit Organization Management' website: kunde.com title: Ms. phone: 219-959-5166 address: '41164 Osvaldo Row' city: Baileyborough state: 'New Hampshire' country: US custom_merge_fields: 'fav color': purple sport: running os: 'Windows NT 5.0' timezone: US/Mountain status: OK interest: null emails_sent: 0 completed_steps: 0 is_missing_data: false is_suppressed: false created_at: 1579888600 campaign: id: fkjtf4390kfgu8903nsk name: 'Grady-Runolfsson 16' timezone: US/Mountain status: DRAFT created_at: 1579888600 client: id: a83445df46as5432mga name: Grady-Runolfsson created_at: 1579888600 items: type: object properties: id: type: string example: we52o4rv130mz1qxyzk8pmljd email: type: string example: aditya.kohler@example.org first_name: type: string example: Aditya last_name: type: string example: Kohler company: type: string example: 'Gerlach, Ziemann and Reilly' industry: type: string example: 'Nonprofit Organization Management' website: type: string example: kunde.com title: type: string example: Ms. phone: type: string example: 219-959-5166 address: type: string example: '41164 Osvaldo Row' city: type: string example: Baileyborough state: type: string example: 'New Hampshire' country: type: string example: US custom_merge_fields: type: object properties: 'fav color': type: string example: purple sport: type: string example: running os: type: string example: 'Windows NT 5.0' timezone: type: string example: US/Mountain status: type: string example: OK interest: type: string example: null emails_sent: type: integer example: 0 completed_steps: type: integer example: 0 is_missing_data: type: boolean example: false is_suppressed: type: boolean example: false created_at: type: integer example: 1579888600 campaign: type: object properties: id: type: string example: fkjtf4390kfgu8903nsk name: type: string example: 'Grady-Runolfsson 16' timezone: type: string example: US/Mountain status: type: string example: DRAFT created_at: type: integer example: 1579888600 client: type: object properties: id: type: string example: a83445df46as5432mga name: type: string example: Grady-Runolfsson created_at: type: integer example: 1579888600 tags: - Contacts requestBody: required: true content: application/json: schema: type: object properties: campaign_id: type: string description: 'The id of the campaign.' example: fkjtf4390kfgu8903nsk email: type: string description: 'The email address of the contact.' example: daugherty.elsie@example.org custom_merge_fields: type: object description: '' example: null properties: [] first_name: type: string description: 'The first name of the contact.' example: aut last_name: type: string description: 'The last name of contact.' example: aut company: type: string description: 'The company of the contact.' example: aut industry: type: string description: 'The industry of the contact.' example: aut website: type: string description: 'The website of the contact.' example: aut title: type: string description: 'The job title of the contact.' example: aut phone: type: string description: 'The phone of the contact.' example: aut address: type: string description: 'The address of the contact.' example: aut city: type: string description: 'The city of the contact.' example: aut state: type: string description: 'The state of the contact.' example: aut country: type: string description: 'The country of the contact.' example: aut 'custom_merge_fields[]': type: array description: 'An array of merge data to be used in email messages.' example: - aut items: type: string required: - campaign_id - email get: summary: 'Search for contacts' operationId: searchForContacts description: 'Find contacts of a specific email address.' parameters: - in: query name: email description: 'The email address we are searching for.' example: aditya.kohler@example.org required: true schema: type: string description: 'The email address we are searching for.' example: aditya.kohler@example.org - in: query name: client_id description: 'The id of a client.' example: a83445df46as5432mga required: false schema: type: string description: 'The id of a client.' example: a83445df46as5432mga - in: query name: campaign_id description: 'The id of a campaign.' example: fkjtf4390kfgu8903nsk required: false schema: type: string description: 'The id of a campaign.' example: fkjtf4390kfgu8903nsk - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - id: we52o4rv130mz1qxyzk8pmljd email: aditya.kohler@example.org first_name: Aditya last_name: Kohler company: 'Gerlach, Ziemann and Reilly' industry: 'Nonprofit Organization Management' website: kunde.com title: Ms. phone: 219-959-5166 address: '41164 Osvaldo Row' city: Baileyborough state: 'New Hampshire' country: US custom_merge_fields: 'fav color': purple sport: running os: 'Windows NT 5.0' timezone: US/Mountain status: OK interest: null emails_sent: 0 completed_steps: 0 is_missing_data: 0 is_suppressed: 0 created_at: 1579888600 campaign: id: fkjtf4390kfgu8903nsk name: 'Grady-Runolfsson 16' timezone: US/Mountain status: DRAFT created_at: 1579888600 client: id: a83445df46as5432mga name: Grady-Runolfsson created_at: 1579888600 properties: data: type: array example: - id: we52o4rv130mz1qxyzk8pmljd email: aditya.kohler@example.org first_name: Aditya last_name: Kohler company: 'Gerlach, Ziemann and Reilly' industry: 'Nonprofit Organization Management' website: kunde.com title: Ms. phone: 219-959-5166 address: '41164 Osvaldo Row' city: Baileyborough state: 'New Hampshire' country: US custom_merge_fields: 'fav color': purple sport: running os: 'Windows NT 5.0' timezone: US/Mountain status: OK interest: null emails_sent: 0 completed_steps: 0 is_missing_data: 0 is_suppressed: 0 created_at: 1579888600 campaign: id: fkjtf4390kfgu8903nsk name: 'Grady-Runolfsson 16' timezone: US/Mountain status: DRAFT created_at: 1579888600 client: id: a83445df46as5432mga name: Grady-Runolfsson created_at: 1579888600 items: type: object properties: id: type: string example: we52o4rv130mz1qxyzk8pmljd email: type: string example: aditya.kohler@example.org first_name: type: string example: Aditya last_name: type: string example: Kohler company: type: string example: 'Gerlach, Ziemann and Reilly' industry: type: string example: 'Nonprofit Organization Management' website: type: string example: kunde.com title: type: string example: Ms. phone: type: string example: 219-959-5166 address: type: string example: '41164 Osvaldo Row' city: type: string example: Baileyborough state: type: string example: 'New Hampshire' country: type: string example: US custom_merge_fields: type: object properties: 'fav color': type: string example: purple sport: type: string example: running os: type: string example: 'Windows NT 5.0' timezone: type: string example: US/Mountain status: type: string example: OK interest: type: string example: null emails_sent: type: integer example: 0 completed_steps: type: integer example: 0 is_missing_data: type: integer example: 0 is_suppressed: type: integer example: 0 created_at: type: integer example: 1579888600 campaign: type: object properties: id: type: string example: fkjtf4390kfgu8903nsk name: type: string example: 'Grady-Runolfsson 16' timezone: type: string example: US/Mountain status: type: string example: DRAFT created_at: type: integer example: 1579888600 client: type: object properties: id: type: string example: a83445df46as5432mga name: type: string example: Grady-Runolfsson created_at: type: integer example: 1579888600 tags: - Contacts requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address. Must not be greater than 255 characters.' example: daugherty.elsie@example.org required: - email '/api/v1/contacts/{contact_id}': get: summary: 'Display a contact' operationId: displayAContact description: 'Find a contact by id and display its details.' parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: id: we52o4rv130mz1qxyzk8pmljd email: aditya.kohler@example.org first_name: Aditya last_name: Kohler company: 'Gerlach, Ziemann and Reilly' industry: 'Nonprofit Organization Management' website: kunde.com title: Ms. phone: 219-959-5166 address: '41164 Osvaldo Row' city: Baileyborough state: 'New Hampshire' country: US custom_merge_fields: 'fav color': purple sport: running os: 'Windows NT 5.0' timezone: US/Mountain status: OK interest: null emails_sent: 0 completed_steps: 0 is_missing_data: false is_suppressed: false created_at: 1579888600 campaign: id: fkjtf4390kfgu8903nsk name: 'Grady-Runolfsson 16' timezone: US/Mountain status: DRAFT created_at: 1579888600 client: id: a83445df46as5432mga name: Grady-Runolfsson created_at: 1579888600 properties: data: type: object properties: id: type: string example: we52o4rv130mz1qxyzk8pmljd email: type: string example: aditya.kohler@example.org first_name: type: string example: Aditya last_name: type: string example: Kohler company: type: string example: 'Gerlach, Ziemann and Reilly' industry: type: string example: 'Nonprofit Organization Management' website: type: string example: kunde.com title: type: string example: Ms. phone: type: string example: 219-959-5166 address: type: string example: '41164 Osvaldo Row' city: type: string example: Baileyborough state: type: string example: 'New Hampshire' country: type: string example: US custom_merge_fields: type: object properties: 'fav color': type: string example: purple sport: type: string example: running os: type: string example: 'Windows NT 5.0' timezone: type: string example: US/Mountain status: type: string example: OK interest: type: string example: null emails_sent: type: integer example: 0 completed_steps: type: integer example: 0 is_missing_data: type: boolean example: false is_suppressed: type: boolean example: false created_at: type: integer example: 1579888600 campaign: type: object properties: id: type: string example: fkjtf4390kfgu8903nsk name: type: string example: 'Grady-Runolfsson 16' timezone: type: string example: US/Mountain status: type: string example: DRAFT created_at: type: integer example: 1579888600 client: type: object properties: id: type: string example: a83445df46as5432mga name: type: string example: Grady-Runolfsson created_at: type: integer example: 1579888600 tags: - Contacts parameters: - in: path name: contact_id description: 'The id of the contact.' example: we52o4rv130mz1qxyzk8pmljd required: true schema: type: string /api/v1/contact-interest: put: summary: 'Update contact interest' operationId: updateContactInterest description: "Set a contact's interest to a value of POSITIVE, NEUTRAL, or NEGATIVE." parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: message: 'Interest updated.' properties: message: type: string example: 'Interest updated.' tags: - Contacts requestBody: required: true content: application/json: schema: type: object properties: contact_id: type: string description: 'The contact ID.' example: fkjtf4390kfgu8903nsk interest: type: string description: 'The interest to set.' example: POSITIVE required: - contact_id - interest delete: summary: 'Remove contact interest' operationId: removeContactInterest description: "Set a contact's interest to UNMARKED." parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: message: 'Interest UNMARKED.' properties: message: type: string example: 'Interest UNMARKED.' tags: - Contacts requestBody: required: true content: application/json: schema: type: object properties: contact_id: type: string description: 'The contact ID.' example: fkjtf4390kfgu8903nsk required: - contact_id '/api/v1/campaigns/{campaign_id}/contacts': get: summary: 'Display a listing of contacts' operationId: displayAListingOfContacts description: 'Return all contacts of a campaign.' parameters: - in: query name: status description: 'Get contacts of a specific status. Can be one of: ok, replied, unsubscribed, bounced, autoreplied, stopped.' example: replied required: false schema: type: string description: 'Get contacts of a specific status. Can be one of: ok, replied, unsubscribed, bounced, autoreplied, stopped.' example: replied - in: query name: is_missing_data description: 'Get contacts with missing data.' example: '0' required: false schema: type: string description: 'Get contacts with missing data.' example: '0' - in: query name: is_suppressed description: 'Get contacts that are suppressed.' example: '1' required: false schema: type: string description: 'Get contacts that are suppressed.' example: '1' - in: query name: interest description: 'Get contacts that have a specific interest level. Can be one of: unmarked, positive, neutral, negative.' example: positive required: false schema: type: string description: 'Get contacts that have a specific interest level. Can be one of: unmarked, positive, neutral, negative.' example: positive - in: query name: emails_sent description: 'Get contacts that have been contacted a specific number of times.' example: 3 required: false schema: type: integer description: 'Get contacts that have been contacted a specific number of times.' example: 3 - in: query name: limit description: 'The number of objects to return. Defaults to 100. Maximum 500.' example: 2 required: false schema: type: integer description: 'The number of objects to return. Defaults to 100. Maximum 500.' example: 2 - in: query name: offset description: 'The zero-based offset for the default object sorting.' example: '0' required: false schema: type: string description: 'The zero-based offset for the default object sorting.' example: '0' - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - id: j5ropgvndm6l1v0z7lwe9481y email: corwin.velda@example.com first_name: Vincent last_name: Kemmer company: 'Hartmann, Lockman and Thompson' industry: 'Luxury Goods & Jewelry' website: mosciski.com title: Mr. phone: 1-213-895-2923 address: '6166 Jakubowski Cliff Suite 605' city: 'Port Reidville' state: 'North Carolina' country: US custom_merge_fields: 'fav color': teal sport: tennis os: 'Windows NT 6.2' timezone: US/Mountain status: OK interest: null emails_sent: 1 completed_steps: 1 is_missing_data: 1 is_suppressed: 0 created_at: 1579888424 - id: ny4j2vd8k56248q1wzgeo9r3p email: mschowalter@example.com first_name: Jacquelyn last_name: Okuneva company: 'Armstrong, Ferry and Nolan' industry: Design website: sanford.com title: Prof. phone: '(828) 344-5044 x05539' address: '1971 Colten Ways' city: Batzland state: Kansas country: US custom_merge_fields: 'fav color': silver sport: tennis os: 'Windows 95' timezone: US/Mountain status: REPLIED interest: POSITIVE emails_sent: 2 completed_steps: 2 is_missing_data: 1 is_suppressed: 0 created_at: 1579888424 properties: data: type: array example: - id: j5ropgvndm6l1v0z7lwe9481y email: corwin.velda@example.com first_name: Vincent last_name: Kemmer company: 'Hartmann, Lockman and Thompson' industry: 'Luxury Goods & Jewelry' website: mosciski.com title: Mr. phone: 1-213-895-2923 address: '6166 Jakubowski Cliff Suite 605' city: 'Port Reidville' state: 'North Carolina' country: US custom_merge_fields: 'fav color': teal sport: tennis os: 'Windows NT 6.2' timezone: US/Mountain status: OK interest: null emails_sent: 1 completed_steps: 1 is_missing_data: 1 is_suppressed: 0 created_at: 1579888424 - id: ny4j2vd8k56248q1wzgeo9r3p email: mschowalter@example.com first_name: Jacquelyn last_name: Okuneva company: 'Armstrong, Ferry and Nolan' industry: Design website: sanford.com title: Prof. phone: '(828) 344-5044 x05539' address: '1971 Colten Ways' city: Batzland state: Kansas country: US custom_merge_fields: 'fav color': silver sport: tennis os: 'Windows 95' timezone: US/Mountain status: REPLIED interest: POSITIVE emails_sent: 2 completed_steps: 2 is_missing_data: 1 is_suppressed: 0 created_at: 1579888424 items: type: object properties: id: type: string example: j5ropgvndm6l1v0z7lwe9481y email: type: string example: corwin.velda@example.com first_name: type: string example: Vincent last_name: type: string example: Kemmer company: type: string example: 'Hartmann, Lockman and Thompson' industry: type: string example: 'Luxury Goods & Jewelry' website: type: string example: mosciski.com title: type: string example: Mr. phone: type: string example: 1-213-895-2923 address: type: string example: '6166 Jakubowski Cliff Suite 605' city: type: string example: 'Port Reidville' state: type: string example: 'North Carolina' country: type: string example: US custom_merge_fields: type: object properties: 'fav color': type: string example: teal sport: type: string example: tennis os: type: string example: 'Windows NT 6.2' timezone: type: string example: US/Mountain status: type: string example: OK interest: type: string example: null emails_sent: type: integer example: 1 completed_steps: type: integer example: 1 is_missing_data: type: integer example: 1 is_suppressed: type: integer example: 0 created_at: type: integer example: 1579888424 tags: - Contacts parameters: - in: path name: campaign_id description: 'The id of a campaign.' example: fkjtf4390kfgu8903nsk required: true schema: type: string '/api/v1/campaigns/{campaign_id}/replies': get: summary: "Display a listing of a campaign's replies." operationId: displayAListingOfACampaignsReplies description: 'Return all email message replies of a campaign.' parameters: - in: query name: limit description: 'The number of objects to return. Defaults to 10. Maximum 20.' example: 2 required: false schema: type: integer description: 'The number of objects to return. Defaults to 10. Maximum 20.' example: 2 - in: query name: offset description: 'The zero-based offset for the default object sorting.' example: '0' required: false schema: type: string description: 'The zero-based offset for the default object sorting.' example: '0' - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 2dpkq21yvjn4r530y56gzwlm3e08ox thread_id: l12zpqxdn36mwrog08e5mwrkj contact_id: 83jm7zlgve0nlzq4d15orxywn from_email: john.jacksom@example.com to_email: corwin.velda@example.com from_name: 'John Jackson' to_name: 'Corwin Velda' submitted_at: 1597066351 created_at: 1597066376 subject: 'Re: Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' - id: 66lgem812pz0w7y6g9yoj3nr4kvqdx thread_id: rdle34wnjy94qj6m178p0gz5v contact_id: 8j5orm17lnqgpkqvg9pk4z3ew from_email: ella.jones@example.com to_email: corwin.velda@example.com from_name: 'Ella Jones' to_name: 'Corwin Velda' submitted_at: 1597066351 created_at: 1597066376 subject: 'Re: Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' properties: data: type: array example: - id: 2dpkq21yvjn4r530y56gzwlm3e08ox thread_id: l12zpqxdn36mwrog08e5mwrkj contact_id: 83jm7zlgve0nlzq4d15orxywn from_email: john.jacksom@example.com to_email: corwin.velda@example.com from_name: 'John Jackson' to_name: 'Corwin Velda' submitted_at: 1597066351 created_at: 1597066376 subject: 'Re: Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' - id: 66lgem812pz0w7y6g9yoj3nr4kvqdx thread_id: rdle34wnjy94qj6m178p0gz5v contact_id: 8j5orm17lnqgpkqvg9pk4z3ew from_email: ella.jones@example.com to_email: corwin.velda@example.com from_name: 'Ella Jones' to_name: 'Corwin Velda' submitted_at: 1597066351 created_at: 1597066376 subject: 'Re: Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' items: type: object properties: id: type: string example: 2dpkq21yvjn4r530y56gzwlm3e08ox thread_id: type: string example: l12zpqxdn36mwrog08e5mwrkj contact_id: type: string example: 83jm7zlgve0nlzq4d15orxywn from_email: type: string example: john.jacksom@example.com to_email: type: string example: corwin.velda@example.com from_name: type: string example: 'John Jackson' to_name: type: string example: 'Corwin Velda' submitted_at: type: integer example: 1597066351 created_at: type: integer example: 1597066376 subject: type: string example: 'Re: Test message subject' snippet: type: string example: 'Short Message Body...' message_body: type: string example: 'Message body text...' message_raw: type: string example: 'Raw Message text with html tags...' tags: - 'Email Messages' parameters: - in: path name: campaign_id description: 'The id of a campaign.' example: fkjtf4390kfgu8903nsk required: true schema: type: string '/api/v1/contacts/{contact_id}/replies': get: summary: "Display a listing of a contact's replies." operationId: displayAListingOfAContactsReplies description: 'Return all email message replies of a contact.' parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 2dpkq21yvjn4r530y56gzwlm3e08ox thread_id: l12zpqxdn36mwrog08e5mwrkj contact_id: 83jm7zlgve0nlzq4d15orxywn from_email: john.jacksom@example.com to_email: corwin.velda@example.com from_name: 'John Jackson' to_name: 'Corwin Velda' submitted_at: 1597066351 created_at: 1597066376 subject: 'Re: Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' - id: rgr8yd4lkzvp05dw29nxe1w62m3qoj thread_id: l12zpqxdn36mwrog08e5mwrkj contact_id: 83jm7zlgve0nlzq4d15orxywn from_email: john.jacksom@example.com to_email: corwin.velda@example.com from_name: 'John Jackson' to_name: 'Corwin Velda' submitted_at: 1597066499 created_at: 1597066528 subject: 'Re: Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' properties: data: type: array example: - id: 2dpkq21yvjn4r530y56gzwlm3e08ox thread_id: l12zpqxdn36mwrog08e5mwrkj contact_id: 83jm7zlgve0nlzq4d15orxywn from_email: john.jacksom@example.com to_email: corwin.velda@example.com from_name: 'John Jackson' to_name: 'Corwin Velda' submitted_at: 1597066351 created_at: 1597066376 subject: 'Re: Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' - id: rgr8yd4lkzvp05dw29nxe1w62m3qoj thread_id: l12zpqxdn36mwrog08e5mwrkj contact_id: 83jm7zlgve0nlzq4d15orxywn from_email: john.jacksom@example.com to_email: corwin.velda@example.com from_name: 'John Jackson' to_name: 'Corwin Velda' submitted_at: 1597066499 created_at: 1597066528 subject: 'Re: Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' items: type: object properties: id: type: string example: 2dpkq21yvjn4r530y56gzwlm3e08ox thread_id: type: string example: l12zpqxdn36mwrog08e5mwrkj contact_id: type: string example: 83jm7zlgve0nlzq4d15orxywn from_email: type: string example: john.jacksom@example.com to_email: type: string example: corwin.velda@example.com from_name: type: string example: 'John Jackson' to_name: type: string example: 'Corwin Velda' submitted_at: type: integer example: 1597066351 created_at: type: integer example: 1597066376 subject: type: string example: 'Re: Test message subject' snippet: type: string example: 'Short Message Body...' message_body: type: string example: 'Message body text...' message_raw: type: string example: 'Raw Message text with html tags...' tags: - 'Email Messages' parameters: - in: path name: contact_id description: 'The id of a contact.' example: 83jm7zlgve0nlzq4d15orxywn required: true schema: type: string '/api/v1/email-threads/{email_thread_id}': get: summary: 'Display an email thread.' operationId: displayAnEmailThread description: 'Return an email thread with all its messages.' parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: id: rdle34wnjy94qj6m178p0gz5v campaign_id: jxv8qkeml4ml1g69y3w5 contact_id: 8j5orm17lnqgpkqvg9pk4z3ew email_messages: - id: 2dpkq21yvjn4r530y56gzwlm3e08ox thread_id: l12zpqxdn36mwrog08e5mwrkj contact_id: 83jm7zlgve0nlzq4d15orxywn from_email: corwin.velda@example.com to_email: ella.jones@example.com from_name: 'Corwin Velda' to_name: 'Ella Jones' submitted_at: 1597066219 created_at: 1597066208 subject: 'Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' - id: 66lgem812pz0w7y6g9yoj3nr4kvqdx thread_id: rdle34wnjy94qj6m178p0gz5v contact_id: 8j5orm17lnqgpkqvg9pk4z3ew from_email: ella.jones@example.com to_email: corwin.velda@example.com from_name: 'Ella Jones' to_name: 'Corwin Velda' submitted_at: 1597066351 created_at: 1597066376 subject: 'Re: Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' properties: data: type: object properties: id: type: string example: rdle34wnjy94qj6m178p0gz5v campaign_id: type: string example: jxv8qkeml4ml1g69y3w5 contact_id: type: string example: 8j5orm17lnqgpkqvg9pk4z3ew email_messages: type: array example: - id: 2dpkq21yvjn4r530y56gzwlm3e08ox thread_id: l12zpqxdn36mwrog08e5mwrkj contact_id: 83jm7zlgve0nlzq4d15orxywn from_email: corwin.velda@example.com to_email: ella.jones@example.com from_name: 'Corwin Velda' to_name: 'Ella Jones' submitted_at: 1597066219 created_at: 1597066208 subject: 'Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' - id: 66lgem812pz0w7y6g9yoj3nr4kvqdx thread_id: rdle34wnjy94qj6m178p0gz5v contact_id: 8j5orm17lnqgpkqvg9pk4z3ew from_email: ella.jones@example.com to_email: corwin.velda@example.com from_name: 'Ella Jones' to_name: 'Corwin Velda' submitted_at: 1597066351 created_at: 1597066376 subject: 'Re: Test message subject' snippet: 'Short Message Body...' message_body: 'Message body text...' message_raw: 'Raw Message text with html tags...' items: type: object properties: id: type: string example: 2dpkq21yvjn4r530y56gzwlm3e08ox thread_id: type: string example: l12zpqxdn36mwrog08e5mwrkj contact_id: type: string example: 83jm7zlgve0nlzq4d15orxywn from_email: type: string example: corwin.velda@example.com to_email: type: string example: ella.jones@example.com from_name: type: string example: 'Corwin Velda' to_name: type: string example: 'Ella Jones' submitted_at: type: integer example: 1597066219 created_at: type: integer example: 1597066208 subject: type: string example: 'Test message subject' snippet: type: string example: 'Short Message Body...' message_body: type: string example: 'Message body text...' message_raw: type: string example: 'Raw Message text with html tags...' tags: - 'Email Messages' parameters: - in: path name: email_thread_id description: 'The id of the email thread.' example: rdle34wnjy94qj6m178p0gz5v required: true schema: type: string /api/v1/suppressions/emails: post: summary: 'Add new email address to suppression list' operationId: addNewEmailAddressToSuppressionList description: "This will add new email addresses to a client's suppression list.\nAny contacts matching these emails, will be set as unsubscribed." parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 201: description: '' content: application/json: schema: type: object example: data: - alicia.hammes@example.com - douglas.herman@example.com properties: data: type: array example: - alicia.hammes@example.com - douglas.herman@example.com items: type: string tags: - Suppression requestBody: required: true content: application/json: schema: type: object properties: client_id: type: string description: 'The id of a client.' example: a83445df46as5432mga emails: type: array description: "List of emails that should be put on client's suppression list." example: - alicia.hammes@example.com - douglas.herman@example.com items: type: string required: - client_id - emails /api/v1/suppressions/domains: post: summary: 'Add new domain address to suppression list' operationId: addNewDomainAddressToSuppressionList description: "This will add new domains to a client's suppression list.\nAny contacts matching these domains, will be set as unsubscribed." parameters: - in: header name: Authorization description: '' example: 'Bearer {token}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 201: description: '' content: application/json: schema: type: object example: data: - domain1.com - domain2.com properties: data: type: array example: - domain1.com - domain2.com items: type: string tags: - Suppression requestBody: required: true content: application/json: schema: type: object properties: client_id: type: string description: 'The id of a client.' example: a83445df46as5432mga domains: type: array description: "List of domains that should be put on client's suppression list." example: - domain1.com - domain2.com items: type: string required: - client_id - domains tags: - name: Campaigns description: "\nAPIs for managing campaigns." - name: Clients description: "\nAPIs for managing clients." - name: Contacts description: "\nAPIs for managing contacts." - name: 'Email Messages' description: "\nAPIs for managing email messages." - name: Suppression description: "\nAPIs for managing suppression list." components: securitySchemes: default: type: http scheme: bearer description: '' security: - default: []