Do Gooder has two APIs. The first is our native API which is the most data rich and comprehensive and the one used by most customers.
This API includes specific end points for individual Campaign Data, Activity Feeds and Action Logs (which include all data entered by supporters) to ingest that data into your own systems via our endpoints.
Getting started
Our APIs are available on our Goodest Pro Plan. Contact us to upgrade if you are not already on that plan level. If you are already on a Pro plan contact us also and we will set you up a Developer Token. You will then have access to your developer docs and endpoints.
Developer Information
Authentication
At the moment all API endpoints require a token for use. The token provides access to only information within your account. Since tokens provide access to information within your account, they should be kept private. Token can only be created by Do Gooder. If there are no tokens listed below, please contact us.
Token XXXXXX
To access an API endpoint include a valid token in the Authorization HTTP header. The value of the header should be the word Token followed by a space followed by your token. Here is an example:
GET /campaign/ HTTP/1.1 Host: example.com Authorization: Token XXXXX
Campaign Web APIs
The Campaign Web APIs are for accessing data relating to your account's campaigns.
Campaign Information
Returns information about all campaigns in an account. Information includes title, description, urls, actions, etc.
/api/campaigns/
Optional: a comma separated list of campaign IDs specified as a query string campaign_ids.
/api/campaigns/?campaign_ids=[IDs]
Optional: a comma separated list of campaign IDs specified as a query string campaign_ids.
/api/campaigns/?since=[timestamp]
Example requests:
/api/campaigns/?since=2019-03-29T12%3A00%3A00 /api/campaigns/?campaign_ids=2,3,4 /api/campaigns/?campaign_ids=2
Example response:
{ "count": 1, "next": null, "previous": null, "results": [ { "id": 1, "name": "Example cause", "description": "This is an example.", "country": "AU", "country_display": "Australia", "state": "A", "state_display": "Active", "result": "U", "result_display": "Undetermined", "campaign_url": "http://example.good.do/example/", "external_url": "", "image": null, "video": "", "background_image": null, "languages": [ { "code": "en", "display": "English" } ], "actions": [ { "id": 3, "title": "Sign Petition", "description": "Show your support fo example.", "goal_phrase": "signatures" }, { "id": 4, "title": "Email Example Office", "description": "", "goal_phrase": "emails sent" } ], "featured_action": null } ] }
Campaign Action Summary
Returns a summary of actions for campaigns. It includes date and times of first and last actions and counts of each action type. The API can only summarize up to 100 campaigns.
Required: a comma separated list of campaign IDs specified as a query string campaign_ids.
/api/action-summary/?campaign_ids=[IDs]
Example requests:
/api/action-summary/?campaign_ids=2,3,4 /api/action-summary/?campaign_ids=2
Example response:
{ "count": 1, "summary": { "campaign_ids": [ 2 ], "first_action_taken": "2016-08-19T13:51:00.195", "last_action_taken": "2016-08-19T15:39:08.270", "action_count": 2, "emails_sent": 1, "petitions_signed": 1, "donations_made": 0, "calls_made": 0 }, "details": [ { "campaign_id": 2, "campaign_name": "Example cause", "first_action_taken": "2016-08-19T13:51:00.195", "last_action_taken": "2016-08-19T15:39:08.270", "action_count": 2, "emails_sent": 1, "petitions_signed": 1, "donations_made": 0, "calls_made": 0 } ] }
Action Log Feed
Returns a feed the latest action log entries for the entire account. It includes the campaign, action, and form data submitted by the supporter.
Optional: a comma separated list of campaign IDs specified as a query string campaign_ids.
/api/action-log-feed/?campaign_ids=[IDs]
Optional: since
timestamp threshold for the earliest action date.
/api/action-log-feed/?since=[timestamp]
Optional: ordering
by created
(oldest first), or -created
(newest first, default)
/api/action-log-feed/?ordering=created
Example requests:
/api/action-log-feed/ /api/action-log-feed/?campaign_ids=2,3,4 /api/action-log-feed/?campaign_ids=2 /api/action-log-feed/?campaign_ids=2&since=2019-03-29T12%3A00%3A00 /api/action-log-feed/?campaign_ids=2&since=2019-03-29T12%3A00%3A00&ordering=created
Example response:
{ "count": 2, "next": null, "previous": null, "results": [ { "id": 1, "email": "[email protected]", "subscribed_to_campaign": null, "test": false, "created": "2019-03-29T14:55:13.330162", "campaign": { "id": 1, "name": "Campaign Number One" }, "action": { "id": 1, "title": "Action Number One", "action_type": "email_politician" }, "form_data": { "first_name": "Person" "last_name": "One", "utm_source": "google", ... } }, { "id": 2, "email": "[email protected]", "subscribed_to_campaign": null, "test": false, "created": "2019-03-29T14:55:13.330162", "campaign": { "id": 1, "name": "Campaign Number One" }, "action": { "id": 1, "title": "Action Number One", "action_type": "email_politician" }, "form_data": { "first_name": "Person" "last_name": "Two", "utm_source": "my-site", ... } }, ] }
Campaign Activity Feed
Returns a feed of latest activity for campaigns. It includes date and times of first and last actions and counts of each action type. The feed is limited to the latest 100 actions.
Required: a comma separated list of campaign IDs specified as a query string campaign_ids.
/api/activity-feed/?campaign_ids=[IDs]
Example requests:
/api/activity-feed/?campaign_ids=2,3,4 /api/activity-feed/?campaign_ids=2
Example response:
{ "count": 2, "next": null, "previous": null, "results": [ { "name": "Joe", "action_verb": "email", "country_code": "AU", "country_name": "Australia", "timestamp": "2016-08-19T17:06:19.144", "campaign_id": 2, "campaign_name": "Example cause", "message": "Joe in Australia emailed 3 days ago." }, { "name": "Sally", "action_verb": "sign", "country_code": "AU", "country_name": "Australia", "timestamp": "2016-08-19T14:18:38.858", "campaign_id": 2, "campaign_name": "Example cause", "message": "Sally in Australia signed 3 days ago." } ] }
OSDI API
We also have an experimental implementation of Open Supporter Data Interface. It allows campaigners to access their account data, like supporters, actions, and campaigns.
The current implementation is geared toward information access, not content creation. All of the endpoints within the Do Gooder OSDI implementation are read-only.
The OSDI specification documents can be found at https://opensupporter.github.io/osdi-docs/
NOTE: it appears that the OSDI spec has stalled and there is a dispute that has resulted in no further work being done on it so we are not planning to enhance this API at the current time.
Getting started
The OSDI API implements the JSON+HAL spec. The spec makes the API easy to understand and use for both people and machines.
You can browse the API using the HAL browser. You can checkout the various libraries and tools available for HAL based APIs.
The API entry point (AEP) is https://api.good.do/osdi/v1/
The API entry point doesn’t require authentication, but most other endpoints will. Authentication occurs with a token via HTTP header or query string. You can obtain an API token for your account from the token page.
OSDI-API-Token: your_api_key_here
or