{ "openapi": "3.0.0", "info": { "version": "1.0.0", "title": "8x8 Contact Center Dynamic Campaigns", "contact": { "name": "Dynamic Campaigns Team", "email": "ro-rec@8x8.com" }, "termsOfService": "http://www.8x8.com/terms-and-conditions", "description": "The 8x8 Contact Center Dynamic Campaigns API:\n* Adds and removes records from an active campaign\n* Sends records to a specified campaign via the API\n* Adds records to a live campaign\n* Removes records from a campaign so they are not dialed again\n* Schedules a callback with a possible maximum of 7 days in advance\n* Schedules uploads for a maximum of 5 million records\n\n## Campaign form\n\nYour campaign with associated tenant is of the form:\n\n**`https://{your tenant url}/api/tstats/campaigns/{campaign-id}`**\n\nFor example:\n\n**`https://vcc-eu5.8x8.com/api/tstats/campaigns/101/`**\n## Add a customer to a campaign\nTo add a customer to a campaign:\n\n**`https://{your tenant url}/api/tstats/campaigns/{campaign-id}/customers`**\n\nFor example:\n\n**`https://vcc-eu5.8x8.com/api/tstats/campaigns/101/customers`**\n\n## Delete a customer from a campaign\nTo delete a customer from a campaign take the following form:\n\n**`https://{your tenant url}/api/tstats/campaigns/{campaign-id}/customers/{customer-id}`**\n\nFor example:\n\n**`https://vcc-eu5.8x8.com/api/tstats/campaigns/101/customers/10000111`**\n\nThe complete list of platform URLs is available on the [8x8 Contact Center - Platform URL Guide.](https://files.mtstatic.com/site_12249/2500/3?Expires=1601933655&Signature=ebyMEramVyRMGdgkVXwJH~2~-ovb7XLq5zV4Q3oWfsRa8l-6ZZq~sK64tHhRPU-GW7W~lYw22~gBmPbCop9l~uy10KC6skH0xvMqrIbBCQGwitAc-83vP8Lu6vBIQxWP5sGqS6JXekSgqcq7stTw-RMLsFDT8fXK4~qyGoMlqNs_&Key-Pair-Id=APKAJ5Y6AV4GI7A555NA) \n\nFor further configuration information refer to [8x8 Contact Center Dynamic Campaign API Configuration.](https://support.8x8.com/cloud-contact-center/virtual-contact-center/developers/8x8-contact-center-dynamic-campaign-api-configuration) " }, "servers": [ { "description": "AP1", "url": "https://vcc-ap1.8x8.com/api/tstats/campaigns" }, { "description": "AU1", "url": "https://vcc-au1.8x8.com/api/tstats/campaigns" }, { "description": "BC2", "url": "https://odcc2.bell.ca/api/tstats/campaigns" }, { "description": "CA1", "url": "https://vcc-ca1.8x8.com/api/tstats/campaigns" }, { "description": "CA2", "url": "https://vcc-ca2.8x8.com/api/tstats/campaigns" }, { "description": "EU2", "url": "https://vcc-eu2.8x8.com/api/tstats/campaigns" }, { "description": "EU3", "url": "https://vcc-eu3.8x8.com/api/tstats/campaigns" }, { "description": "EU4", "url": "https://vcc-eu4.8x8.com/api/tstats/campaigns" }, { "description": "EU5", "url": "https://vcc-eu5.8x8.com/api/tstats/campaigns" }, { "description": "EU6", "url": "https://vcc-eu6.8x8.com/api/tstats/campaigns" }, { "description": "EU7", "url": "https://vcc-eu7.8x8.com/api/tstats/campaigns" }, { "description": "EU9", "url": "https://vcc-eu9.8x8.com/api/tstats/campaigns" }, { "description": "EU10", "url": "https://vcc-eu10.8x8.com/api/tstats/campaigns" }, { "description": "EU11", "url": "https://vcc-eu11.8x8.com/api/tstats/campaigns" }, { "description": "EU12", "url": "https://vcc-eu12.8x8.com/api/tstats/campaigns" }, { "description": "NA1", "url": "https://vcc-na1.8x8.com/api/tstats/campaigns" }, { "description": "NA2", "url": "https://vcc-na2.8x8.com/api/tstats/campaigns" }, { "description": "NA3", "url": "https://vcc-na3.8x8.com/api/tstats/campaigns" }, { "description": "NA4", "url": "https://vcc-na4.8x8.com/api/tstats/campaigns" }, { "description": "NA5", "url": "https://vcc-na5.8x8.com/api/tstats/campaigns" }, { "description": "NA6", "url": "https://vcc-na6.8x8.com/api/tstats/campaigns" }, { "description": "NA7", "url": "https://vcc-na7.8x8.com/api/tstats/campaigns" }, { "description": "NA8", "url": "https://vcc-na8.8x8.com/api/tstats/campaigns" }, { "description": "NA9", "url": "https://vcc-na9.8x8.com/api/tstats/campaigns" }, { "description": "NA10", "url": "https://vcc-na10.8x8.com/api/tstats/campaigns" }, { "description": "NA11", "url": "https://vcc-na11.8x8.com/api/tstats/campaigns" }, { "description": "NA12", "url": "https://vcc-na12.8x8.com/api/tstats/campaigns" }, { "description": "NA13", "url": "https://vcc-na13.8x8.com/api/tstats/campaigns" }, { "description": "NA14", "url": "https://vcc-na14.8x8.com/api/tstats/campaigns" }, { "description": "NA15", "url": "https://vcc-na15.8x8.com/api/tstats/campaigns" }, { "description": "NA16", "url": "https://vcc-na16.8x8.com/api/tstats/campaigns" }, { "description": "NA17", "url": "https://vcc-na17.8x8.com/api/tstats/campaigns" }, { "description": "NA18", "url": "https://vcc-na18.8x8.com/api/tstats/campaigns" }, { "description": "NA19", "url": "https://vcc-na19.8x8.com/api/tstats/campaigns" }, { "description": "NA20", "url": "https://vcc-na20.8x8.com/api/tstats/campaigns" }, { "description": "NA27", "url": "https://vcc-na27.8x8.com/api/tstats/campaigns" }, { "description": "NA28", "url": "https://vcc-na28.8x8.com/api/tstats/campaigns" }, { "description": "NA29", "url": "https://vcc-na29.8x8.com/api/tstats/campaigns" }, { "description": "NA30", "url": "https://vcc-na30.8x8.com/api/tstats/campaigns" }, { "description": "NA37", "url": "https://vcc-na37.8x8.com/api/tstats/campaigns" }, { "description": "NA38", "url": "https://vcc-na38.8x8.com/api/tstats/campaigns" }, { "description": "NA39", "url": "https://vcc-na39.8x8.com/api/tstats/campaigns" }, { "description": "NA40", "url": "https://vcc-na40.8x8.com/api/tstats/campaigns" } ], "tags": [ { "name": "Campaign Control", "description": "Start, stop, pause campaigns" }, { "name": "Record Management", "description": "Add and remove records from campaigns" } ], "security": [ { "ccActionBasicAuth": [] } ], "paths": { "/{campaign-id}": { "patch": { "tags": ["Campaign Control"], "summary": "The change status for an existing campaign.", "operationId": "changecampaignstatus", "description": "The change status for an existing campaign. **Note: the campaign must be have dynamic campaign enabled to leverage this feature**", "parameters": [ { "$ref": "#/components/parameters/CampaignId" } ], "requestBody": { "description": "New campaign status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CampaignStatus" } } } }, "responses": { "200": { "description": "The campaign status has changed." }, "400": { "description": "Multiple errors - please check examples", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/internalServerError" }, "examples": { "InvalidStateTransition": { "value": { "message": "Invalid state transition" } }, "NotDynamicCampaign": { "value": { "message": "Not a dynamic campaign" } }, "CampaignNotEnabled": { "value": { "message": "The campaign is not enabled." } } } } } }, "404": { "description": "The campaign cannot be found." }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/internalServerError" }, "examples": { "CampaignStopped": { "value": { "message": "Internal server error" } } } } } } } } }, "/{campaign-id}/customers": { "post": { "tags": ["Record Management"], "summary": "Add a new customer to an existing campaign", "operationId": "addcustomer", "description": "Add a new customer to an existing campaign **Note: the campaign must be have dynamic campaign enabled to leverage this feature**", "parameters": [ { "$ref": "#/components/parameters/CampaignId" } ], "responses": { "207": { "description": "Multi-status result; review the message body to check results for each individual item.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerItemResponseList" } } } }, "400": { "description": "Multiple errors - review examples", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/internalServerError" }, "examples": { "CampaignStopped": { "value": { "message": "The campaign has stopped. No additional customers can be added." } }, "CampaignNew": { "value": { "message": "The operation is invalid for a campaign that has not started." } }, "InvalidCustomer": { "value": { "message": "The provided customer list is invalid." } }, "NotDynamicCampaign": { "value": { "message": "This is not a dynamic campaign." } }, "CampaignNotEnabled": { "value": { "message": "The campaign is not enabled." } } } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/internalServerError" }, "examples": { "CampaignStopped": { "value": { "message": "Internal server error" } } } } } } }, "requestBody": { "description": "Add customer item", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerItemList" } } } } } }, "/{campaign-id}/customers/{customer-id}": { "delete": { "tags": ["Record Management"], "summary": "This method deletes customers from an existing campaign.", "operationId": "deletecustomer", "description": "This method deletes a customer from an existing campaign. You can delete new, queued, or scheduled customers. You should not delete customers that have received, completed, or already deleted offers. If the customer has been offered the delete method it will fail and if the agent rejects the call it be re-queued again. The delete method can then be called again. **Note: the campaign must be have dynamic campaign enabled to leverage this feature**", "parameters": [ { "$ref": "#/components/parameters/CampaignId" }, { "$ref": "#/components/parameters/CustomerId" } ], "responses": { "204": { "description": "the customer has been deleted." }, "400": { "description": "The customer is not available for deletion.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/internalServerError" }, "examples": { "CampaignStopped": { "value": { "message": "The campaign has stopped. No customers can be deleted." } }, "NotDynamicCampaign": { "value": { "message": "This is not a dynamic campaign." } }, "CampaignNotEnabled": { "value": { "message": "This campaign is not enabled." } } } } } }, "404": { "description": "The customer has not been located." }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/internalServerError" }, "examples": { "CampaignStopped": { "value": { "message": "Internal server error" } } } } } } } } } }, "components": { "securitySchemes": { "ccActionBasicAuth": { "type": "http", "scheme": "basic", "description": "The username is the tenantId and the password is the CC action-token." } }, "schemas": { "CustomerItemList": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerItem" }, "example": [ { "customer-id": 1000000, "schedule-date-time": "2016-08-29T09:00:00.000Z" }, { "customer-id": 1000999 }, { "customer-id": 1000777 } ] }, "CustomerItem": { "type": "object", "required": ["customer-id"], "properties": { "customer-id": { "type": "string", "format": "int32", "maximum": 1e22, "example": 1000000 }, "schedule-date-time": { "type": "string", "format": "date-time", "example": "2016-08-29T09:00:00.000Z" } } }, "CustomerItemResponseList": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerItemResponse" }, "example": [ { "customer-id": 1000000, "schedule-date-time": "2016-08-29T09:00:00.000Z", "http-status": 200 }, { "customer-id": 1000001, "http-status": 200 }, { "customer-id": 1000999, "http-status": 400, "message": "Duplicate customer" }, { "customer-id": 1000777, "schedule-date-time": "2016-08-29T 09:00:00.000Z", "http-status": 400, "message": "Invalid schedule-date-time format - please use ISO 8601 format" }, { "customer-id": null, "http-status": 400, "message": "Invalid customer-id" }, { "customer-id": 9, "http-status": 404, "message": "The customer-id has not been found." }, { "customer-id": 10000, "schedule-date-time": "2016-08-29T09:00:00.000Z", "http-status": 400, "message": "The subject schedule-date-time is in the past." }, { "customer-id": 1000778, "schedule-date-time": "2016-08-29T09:00:00.000Z", "http-status": 400, "message": "The subject schedule-date-time is outside the campaign schedule from 2016-08-27T09:00:00.000Z to 2016-08-28T09:00:00.000Z." }, { "customer-id": 100002, "schedule-date-time": "2016-08-29T09:00:00.000Z", "http-status": 400, "message": "The subject schedule-date-time must be within 7 days ahead of a future period." } ] }, "CustomerItemResponse": { "type": "object", "required": ["customer-id", "http-status"], "properties": { "customer-id": { "type": "string", "format": "int32", "maximum": 1e22, "example": 1000000 }, "schedule-date-time": { "type": "string", "format": "date-time", "example": "2016-08-29T09:00:00.000Z" }, "http-status": { "type": "string", "format": "int32", "example": 200 }, "message": { "type": "string", "format": "string", "example": "Duplicate customer" } } }, "internalServerError": { "type": "object", "required": ["message"], "properties": { "message": { "type": "string", "format": "string" } } }, "CampaignStatus": { "type": "object", "required": ["status"], "properties": { "status": { "type": "string", "enum": ["RUNNING", "STOPPED", "PAUSED", "PURGED"] } } } }, "parameters": { "CampaignId": { "name": "campaign-id", "in": "path", "description": "The campaign ID is the unique Campaign ID of the campaign as listed in CC Configuration Manager under Campaigns (column can be added if not visible)", "required": true, "style": "simple", "explode": false, "schema": { "type": "integer", "format": "int32" }, "example": 1 }, "CustomerId": { "name": "customer-id", "in": "path", "description": "The customer ID is the id of the record in the 8x8 Local CRM. This is also known as the `ACCOUNTNUM` or Account Number", "required": true, "style": "simple", "explode": false, "schema": { "type": "string", "format": "int32" }, "example": 1000000 } } }, "x-apigee-id": "Dynamic_campaigns", "x-readme": { "explorer-enabled": true, "proxy-enabled": true } }