Link Search Menu Expand Document

Updated Thu Sep 23rd 2021, 14:29 UTC

Create

POST /:account/campaigns

Create a new campaign.

  • Campaigns may be given the following optional parameters:
    • auto-assign : a boolean that denotes whether the campaign creator should automatically be assigned to the resulting conversations or not.
    • exclusion_time : if this parameter is passed, there will be a check to see if the recipients of the current campaign have received another campaign message recently. If they have, those recipients will not receive a message from the current campaign. exclusion_time takes an integer that denotes how many minutes in the past from the current campaign’s scheduled_at value to check for those recipients.

Examples

Creating a campaign

Request

POST /my_account/campaigns

Body

{
  "title": "My Beautiful Campaign",
  "message_body": "This is the best message ever.",
  "scheduled_at": "2048-11-19T23:00:00Z",
  "recipients": [
    "/contact_phones/mxvbRw"
  ]
}
Example
$ curl -i -H Accept:"application/vnd.textus+jsonld" \
    -H Authorization:"Bearer {token}" \
    -X POST /my_account/campaigns
     -d '{json: "body"}' 

Response

Status

201

Response Type

Campaign

Example
{
  "@type": "Campaign",
  "@context": "/contexts/Campaign.jsonld",
  "id": "/campaigns/joOQd57",
  "title": "The Best Campaign",
  "messageBody": "The best campaign message.",
  "state": "sent",
  "type": "single",
  "schedule": null,
  "createdAt": "2018-11-19T20:51:54.000Z",
  "scheduledAt": "2018-11-19T21:00:54.000Z",
  "sendingStartAt": null,
  "sendingEndAt": null,
  "estimatedStartAt": null,
  "estimatedFinishAt": null,
  "deliveryStatistics": {},
  "delete": "/campaigns/joOQd57",
  "edit": "/campaigns/joOQd57",
  "cancel": "/campaigns/joOQd57/cancel",
  "account": "/accounts/my_account",
  "group": null,
  "user": {
    "@type": "User",
    "@context": "/contexts/User.jsonld",
    "id": "/users/wqyODPA",
    "name": "Chuck Norris",
    "firstName": "Chuck",
    "lastName": "Norris",
    "email": "chuck@textus.example",
    "avatar": null,
    "automatedActor": false,
    "hasPassword": false,
    "discarded": false,
    "settings": {
      "notifications": {
        "email": true
      },
      "customSettings": {}
    },
    "memberships": "/users/wqyODPA/memberships"
  },
  "totalRecipients": "/campaigns/AJoOVb7/campaign_recipients/total",
  "skippedRecipients": "/campaigns/AJoOVb7/campaign_recipients/skipped",
  "sentRecipients": "/campaigns/AJoOVb7/campaign_recipients/sent",
  "deliveredRecipients": "/campaigns/AJoOVb7/campaign_recipients/delivered",
  "repliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/replied",
  "unrepliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/unreplied",
  "failedRecipients": "/campaigns/AJoOVb7/campaign_recipients/failed",
  "lastSentAt": null,
  "attachments": {
    "@type": "hydra:Collection",
    "@context": "/contexts/hydra:Collection.jsonld",
    "id": "/campaigns/AJoOVb7/campaign_attachments",
    "members": [],
    "totalItems": 0
  }
}

Creating a campaign with an imported contacts filter

Request

POST /my_account/campaigns

Body

{
  "title": "My Beautiful Campaign",
  "message_body": "This is the best message ever.",
  "scheduled_at": "2048-11-19T23:00:00Z",
  "contact_filter": "/my_account/contact_filters/import:1pDAaom"
}
Example
$ curl -i -H Accept:"application/vnd.textus+jsonld" \
    -H Authorization:"Bearer {token}" \
    -X POST /my_account/campaigns
     -d '{json: "body"}' 

Response

Status

201

Response Type

Campaign

Example
{
  "@type": "Campaign",
  "@context": "/contexts/Campaign.jsonld",
  "id": "/campaigns/joOQd57",
  "title": "The Best Campaign",
  "messageBody": "The best campaign message.",
  "state": "sent",
  "type": "single",
  "schedule": null,
  "createdAt": "2018-11-19T20:51:54.000Z",
  "scheduledAt": "2018-11-19T21:00:54.000Z",
  "sendingStartAt": null,
  "sendingEndAt": null,
  "estimatedStartAt": null,
  "estimatedFinishAt": null,
  "deliveryStatistics": {},
  "delete": "/campaigns/joOQd57",
  "edit": "/campaigns/joOQd57",
  "cancel": "/campaigns/joOQd57/cancel",
  "account": "/accounts/my_account",
  "group": null,
  "user": {
    "@type": "User",
    "@context": "/contexts/User.jsonld",
    "id": "/users/wqyODPA",
    "name": "Chuck Norris",
    "firstName": "Chuck",
    "lastName": "Norris",
    "email": "chuck@textus.example",
    "avatar": null,
    "automatedActor": false,
    "hasPassword": false,
    "discarded": false,
    "settings": {
      "notifications": {
        "email": true
      },
      "customSettings": {}
    },
    "memberships": "/users/wqyODPA/memberships"
  },
  "totalRecipients": "/campaigns/AJoOVb7/campaign_recipients/total",
  "skippedRecipients": "/campaigns/AJoOVb7/campaign_recipients/skipped",
  "sentRecipients": "/campaigns/AJoOVb7/campaign_recipients/sent",
  "deliveredRecipients": "/campaigns/AJoOVb7/campaign_recipients/delivered",
  "repliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/replied",
  "unrepliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/unreplied",
  "failedRecipients": "/campaigns/AJoOVb7/campaign_recipients/failed",
  "lastSentAt": null,
  "attachments": {
    "@type": "hydra:Collection",
    "@context": "/contexts/hydra:Collection.jsonld",
    "id": "/campaigns/AJoOVb7/campaign_attachments",
    "members": [],
    "totalItems": 0
  }
}

Creating a campaign with a campaign recipients contacts filter

Request

POST /my_account/campaigns

Body

{
  "title": "My Beautiful Campaign",
  "message_body": "This is the best message ever.",
  "scheduled_at": "2048-11-19T23:00:00Z",
  "contact_filter": "/campaigns/joOQd57/campaign_recipients/total/contact_filter"
}
Example
$ curl -i -H Accept:"application/vnd.textus+jsonld" \
    -H Authorization:"Bearer {token}" \
    -X POST /my_account/campaigns
     -d '{json: "body"}' 

Response

Status

201

Response Type

Campaign

Example
{
  "@type": "Campaign",
  "@context": "/contexts/Campaign.jsonld",
  "id": "/campaigns/joOQd57",
  "title": "The Best Campaign",
  "messageBody": "The best campaign message.",
  "state": "sent",
  "type": "single",
  "schedule": null,
  "createdAt": "2018-11-19T20:51:54.000Z",
  "scheduledAt": "2018-11-19T21:00:54.000Z",
  "sendingStartAt": null,
  "sendingEndAt": null,
  "estimatedStartAt": null,
  "estimatedFinishAt": null,
  "deliveryStatistics": {},
  "delete": "/campaigns/joOQd57",
  "edit": "/campaigns/joOQd57",
  "cancel": "/campaigns/joOQd57/cancel",
  "account": "/accounts/my_account",
  "group": null,
  "user": {
    "@type": "User",
    "@context": "/contexts/User.jsonld",
    "id": "/users/wqyODPA",
    "name": "Chuck Norris",
    "firstName": "Chuck",
    "lastName": "Norris",
    "email": "chuck@textus.example",
    "avatar": null,
    "automatedActor": false,
    "hasPassword": false,
    "discarded": false,
    "settings": {
      "notifications": {
        "email": true
      },
      "customSettings": {}
    },
    "memberships": "/users/wqyODPA/memberships"
  },
  "totalRecipients": "/campaigns/AJoOVb7/campaign_recipients/total",
  "skippedRecipients": "/campaigns/AJoOVb7/campaign_recipients/skipped",
  "sentRecipients": "/campaigns/AJoOVb7/campaign_recipients/sent",
  "deliveredRecipients": "/campaigns/AJoOVb7/campaign_recipients/delivered",
  "repliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/replied",
  "unrepliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/unreplied",
  "failedRecipients": "/campaigns/AJoOVb7/campaign_recipients/failed",
  "lastSentAt": null,
  "attachments": {
    "@type": "hydra:Collection",
    "@context": "/contexts/hydra:Collection.jsonld",
    "id": "/campaigns/AJoOVb7/campaign_attachments",
    "members": [],
    "totalItems": 0
  }
}

Creating a campaign with a searched contacts filter

Request

POST /my_account/campaigns

Body

{
  "title": "My Beautiful Campaign",
  "message_body": "This is the best message ever.",
  "scheduled_at": "2048-11-19T23:00:00Z",
  "contact_filter": "/my_account/contact_filters/all?q=lucille"
}
Example
$ curl -i -H Accept:"application/vnd.textus+jsonld" \
    -H Authorization:"Bearer {token}" \
    -X POST /my_account/campaigns
     -d '{json: "body"}' 

Response

Status

201

Response Type

Campaign

Example
{
  "@type": "Campaign",
  "@context": "/contexts/Campaign.jsonld",
  "id": "/campaigns/joOQd57",
  "title": "The Best Campaign",
  "messageBody": "The best campaign message.",
  "state": "sent",
  "type": "single",
  "schedule": null,
  "createdAt": "2018-11-19T20:51:54.000Z",
  "scheduledAt": "2018-11-19T21:00:54.000Z",
  "sendingStartAt": null,
  "sendingEndAt": null,
  "estimatedStartAt": null,
  "estimatedFinishAt": null,
  "deliveryStatistics": {},
  "delete": "/campaigns/joOQd57",
  "edit": "/campaigns/joOQd57",
  "cancel": "/campaigns/joOQd57/cancel",
  "account": "/accounts/my_account",
  "group": null,
  "user": {
    "@type": "User",
    "@context": "/contexts/User.jsonld",
    "id": "/users/wqyODPA",
    "name": "Chuck Norris",
    "firstName": "Chuck",
    "lastName": "Norris",
    "email": "chuck@textus.example",
    "avatar": null,
    "automatedActor": false,
    "hasPassword": false,
    "discarded": false,
    "settings": {
      "notifications": {
        "email": true
      },
      "customSettings": {}
    },
    "memberships": "/users/wqyODPA/memberships"
  },
  "totalRecipients": "/campaigns/AJoOVb7/campaign_recipients/total",
  "skippedRecipients": "/campaigns/AJoOVb7/campaign_recipients/skipped",
  "sentRecipients": "/campaigns/AJoOVb7/campaign_recipients/sent",
  "deliveredRecipients": "/campaigns/AJoOVb7/campaign_recipients/delivered",
  "repliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/replied",
  "unrepliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/unreplied",
  "failedRecipients": "/campaigns/AJoOVb7/campaign_recipients/failed",
  "lastSentAt": null,
  "attachments": {
    "@type": "hydra:Collection",
    "@context": "/contexts/hydra:Collection.jsonld",
    "id": "/campaigns/AJoOVb7/campaign_attachments",
    "members": [],
    "totalItems": 0
  }
}

API user creates campaign from group ID

Request

POST /my_account/campaigns

Body

{
  "title": "The Best Campaign",
  "message_body": "The best campaign message.",
  "contact_collection": "<%= group_contacts_path(groups(:my_group)) %>"
}
Example
$ curl -i -H Accept:"application/vnd.textus+jsonld" \
    -H Authorization:"Bearer {token}" \
    -X POST /my_account/campaigns
     -d '{json: "body"}' 

Response

Status

201

Response Type

Campaign

Example
{
  "@type": "Campaign",
  "@context": "/contexts/Campaign.jsonld",
  "id": "/campaigns/joOQd57",
  "title": "The Best Campaign",
  "messageBody": "The best campaign message.",
  "state": "sent",
  "type": "single",
  "schedule": null,
  "createdAt": "2018-11-19T20:51:54.000Z",
  "scheduledAt": "2018-11-19T21:00:54.000Z",
  "sendingStartAt": null,
  "sendingEndAt": null,
  "estimatedStartAt": null,
  "estimatedFinishAt": null,
  "deliveryStatistics": {},
  "delete": "/campaigns/joOQd57",
  "edit": null,
  "cancel": "/campaigns/joOQd57/cancel",
  "account": "/accounts/my_account",
  "group": "/groups/joOQd57",
  "user": {
    "@type": "User",
    "@context": "/contexts/User.jsonld",
    "id": "/users/wqyODPA",
    "name": "Chuck Norris",
    "firstName": "Chuck",
    "lastName": "Norris",
    "email": "chuck@textus.example",
    "avatar": null,
    "automatedActor": false,
    "hasPassword": false,
    "discarded": false,
    "settings": {
      "notifications": {
        "email": true
      },
      "customSettings": {}
    },
    "memberships": "/users/wqyODPA/memberships"
  },
  "totalRecipients": "/campaigns/AJoOVb7/campaign_recipients/total",
  "skippedRecipients": "/campaigns/AJoOVb7/campaign_recipients/skipped",
  "sentRecipients": "/campaigns/AJoOVb7/campaign_recipients/sent",
  "deliveredRecipients": "/campaigns/AJoOVb7/campaign_recipients/delivered",
  "repliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/replied",
  "unrepliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/unreplied",
  "failedRecipients": "/campaigns/AJoOVb7/campaign_recipients/failed",
  "lastSentAt": null,
  "attachments": {
    "@type": "hydra:Collection",
    "@context": "/contexts/hydra:Collection.jsonld",
    "id": "/campaigns/AJoOVb7/campaign_attachments",
    "members": [],
    "totalItems": 0
  }
}

User creates recurring campaign

Request

POST /my_account/campaigns

Body

{
  "title": "My Recurring Campaign",
  "message_body": "Everyone should get this daily for 100 days at 3:03pm!!!",
  "schedule": "FREQ=DAILY;BYHOUR=15;BYMINUTE=3;COUNT=100",
  "type": "recurring",
  "contact_collection": "<%= group_contacts_path(groups(:my_group)) %>"
}
Example
$ curl -i -H Accept:"application/vnd.textus+jsonld" \
    -H Authorization:"Bearer {token}" \
    -X POST /my_account/campaigns
     -d '{json: "body"}' 

Response

Status

201

Response Type

Campaign

Example
{
  "@type": "Campaign",
  "@context": "/contexts/Campaign.jsonld",
  "id": "/campaigns/joOQd57",
  "title": "The Best Campaign",
  "messageBody": "The best campaign message.",
  "state": "sent",
  "type": "recurring",
  "schedule": "FREQ=DAILY;BYHOUR=15;BYMINUTE=3;COUNT=100",
  "createdAt": "2018-11-19T20:51:54.000Z",
  "scheduledAt": null,
  "sendingStartAt": null,
  "sendingEndAt": null,
  "estimatedStartAt": null,
  "estimatedFinishAt": null,
  "deliveryStatistics": {},
  "delete": "/campaigns/joOQd57",
  "edit": "/campaigns/joOQd57",
  "cancel": "/campaigns/joOQd57/cancel",
  "account": "/accounts/my_account",
  "group": "/groups/joOQd57",
  "user": {
    "@type": "User",
    "@context": "/contexts/User.jsonld",
    "id": "/users/wqyODPA",
    "name": "Chuck Norris",
    "firstName": "Chuck",
    "lastName": "Norris",
    "email": "chuck@textus.example",
    "avatar": null,
    "automatedActor": false,
    "hasPassword": false,
    "discarded": false,
    "settings": {
      "notifications": {
        "email": true
      },
      "customSettings": {}
    },
    "memberships": "/users/wqyODPA/memberships"
  },
  "totalRecipients": "/campaigns/AJoOVb7/campaign_recipients/total",
  "skippedRecipients": "/campaigns/AJoOVb7/campaign_recipients/skipped",
  "sentRecipients": "/campaigns/AJoOVb7/campaign_recipients/sent",
  "deliveredRecipients": "/campaigns/AJoOVb7/campaign_recipients/delivered",
  "repliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/replied",
  "unrepliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/unreplied",
  "failedRecipients": "/campaigns/AJoOVb7/campaign_recipients/failed",
  "lastSentAt": null,
  "attachments": {
    "@type": "hydra:Collection",
    "@context": "/contexts/hydra:Collection.jsonld",
    "id": "/campaigns/AJoOVb7/campaign_attachments",
    "members": [],
    "totalItems": 0
  }
}

User creates campaign with attachments

Request

POST /my_account/campaigns

Body

  {
    "title": "My Beautiful Campaign",
    "message_body": "This is the best message ever.",
    "scheduled_at": "2048-11-19T23:00:00Z",
    "recipients": [
      "/contact_phones/mxvbRw"
],
"attachments": [
{
        "file":        "blob:bobloblawsballerblob",
        "size":        6829,
        "width":       101,
        "height":      128,
        "contentType": "image/png",
        "key":         "abc123.png"
      }
]
  }
Example
$ curl -i -H Accept:"application/vnd.textus+jsonld" \
    -H Authorization:"Bearer {token}" \
    -X POST /my_account/campaigns
     -d '{json: "body"}' 

Response

Status

201

Response Type

Campaign

Example
{
  "@type": "Campaign",
  "@context": "/contexts/Campaign.jsonld",
  "id": "/campaigns/joOQd57",
  "title": "The Best Campaign",
  "messageBody": "The best campaign message.",
  "state": "sent",
  "type": "single",
  "schedule": null,
  "createdAt": "2018-11-19T20:51:54.000Z",
  "scheduledAt": "2018-11-19T21:00:54.000Z",
  "sendingStartAt": null,
  "sendingEndAt": null,
  "estimatedStartAt": null,
  "estimatedFinishAt": null,
  "deliveryStatistics": {},
  "delete": "/campaigns/joOQd57",
  "edit": "/campaigns/joOQd57",
  "cancel": "/campaigns/joOQd57/cancel",
  "account": "/accounts/my_account",
  "group": null,
  "user": {
    "@type": "User",
    "@context": "/contexts/User.jsonld",
    "id": "/users/wqyODPA",
    "name": "Chuck Norris",
    "firstName": "Chuck",
    "lastName": "Norris",
    "email": "chuck@textus.example",
    "avatar": null,
    "automatedActor": false,
    "hasPassword": false,
    "discarded": false,
    "settings": {
      "notifications": {
        "email": true
      },
      "customSettings": {}
    },
    "memberships": "/users/wqyODPA/memberships"
  },
  "totalRecipients": "/campaigns/AJoOVb7/campaign_recipients/total",
  "skippedRecipients": "/campaigns/AJoOVb7/campaign_recipients/skipped",
  "sentRecipients": "/campaigns/AJoOVb7/campaign_recipients/sent",
  "deliveredRecipients": "/campaigns/AJoOVb7/campaign_recipients/delivered",
  "repliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/replied",
  "unrepliedRecipients": "/campaigns/AJoOVb7/campaign_recipients/unreplied",
  "failedRecipients": "/campaigns/AJoOVb7/campaign_recipients/failed",
  "lastSentAt": null,
  "attachments": {
    "@type": "hydra:Collection",
    "@context": "/contexts/hydra:Collection.jsonld",
    "id": "/campaigns/AJoOVb7/campaign_attachments",
    "members": [
      {
        "@type": "Attachment",
        "@context": "/contexts/Attachment.jsonld",
        "id": "/campaign_attachments/7LdVlM",
        "url": "https://foo.cloudfront.net/bar1234=",
        "downloadUrl": "https://s3.amazonaws.com/attachments",
        "key": "abc123.png",
        "contentType": "image/png",
        "size": 6829,
        "width": 101,
        "height": 128
      }
    ],
    "totalItems": 1
  }
}

© 2021 TextUs