Welcome, Guest Login

Support Center

IdeaScale REST API

Last Updated: Jul 10, 2018 08:49PM PDT

IdeaScale REST API

Objective:

Objective of this document is to ensure a proper documentation of the APIs for a community. This document can be used to further automate and integrate your community with any internal/home-grown software solutions.

The architecture and design considerations of IdeaScale software includes maximum integration with custom applications so that customers can best-use the software according to their organization preferences. 

The API library will be enriched over time with more endpoints.

Scope:

This document elaborates the APIs in use in WWF community along with the procedure to use the API. This document serves as an instruction for any future integration needs. This document includes the environment requirement of the systems or applications connecting to ideascale API set. However, the document does not considers the customer environment as a whole.

About the API

The IdeaScale API provides methods for obtaining data from this site for using in mashups and other consumable formats. Anyone can use the API. All it takes is a 10 second signup process to obtain a key -- so we can keep track of how many people are using the API and a way to get in touch with you if there are changes to the API itself.

Using the API

How to request an api token:

To access the API you need to create an API Token. The API Token can be created by community owner's IdeaScale profile. API access is per-member basis (i.e., every member can have one or more API token). The API token will make use of IdeaScale’s user roles (ie. normal members--or end users--will only get be able to use the calls permitted to them and Admin members will get admin level permission. Only community owner who is also a default administrator can request an API Token from Profile >> Communities >> Api Tokens







Once the API token is generated, it can be used to access the IdeaScale API. Every API request must be used with the appropriate members’ API token.
An IdeaScale API token must be provided when making API calls in http request header. The request header field name must be “api_token.

Authentication
Non-SSO communities
Authentication is based on API token. The token generated above must be in every REST call. The token should be present in an HTTP header named “api_token”.

Non-SSO communities with member Token:

Sometimes it may be required that a API call is made on behalf of a community member. IdeaScale supports this by means of Multipass token. If a header named “member_token” contains a valid encrypted multipass token, then the “member_token” is used to identify the actor member. The multipass token named “member_token” is generated using multipass token generation code which is available in https://github.com/ideascale/multipass and has example in many programming languages. In brief, it contains a AES encrypted JSON string which contains at-least the email address of the target member. To learn more about Multipass Token please refer to http://support.ideascale.com/customer/portal/articles/1001474-single-sign-on-multipass-token-based-cookie-based-

The multipass token generation code would need “Site Key” and “API Key”. These keys can be found from Community Settings >> Integration >> Developer





SSO Communities
API requests for single sign-on communities must contain an API token from an admin user of the community in an HTTP header named “api_token”. The request must also provide the SSO credentials of the user for whom the request is being made. The HTTP header name is “sso_token” which is the multipass token used for SSO authentication. For this to work the Multipass Key should be created for the community. This can be set from Community Settings> Single Signon. Example of how to create multipass SSO token can be found at
http://support.ideascale.com/customer/portal/articles/1001474-single-sign-on-multipass-token-based-cookie-based

General REST API Information
The IdeaScale REST API is a RESTful API. It is based on the HTTP protocol and supports JSON format data transfers.

URL
The IdeaScale REST API URL has three components:
1) Community URL - The URL of the community.
2) API Version - Identifies the version of the IdeaScale REST API being used.
3) Method URL - specific call being made.
For example, an API call to get the set of campaigns for the community apitest.ideascale.com, using version 1.0 of the API would be:
https://apitest.ideascale.com/a/rest/v1/campaigns

Please Note: The API will not accept certain types of content submitted as ideas, comments, titles or tags. For example, if the following types of content are POSTed to the API, the API will return an 'INVALID_CONTENT' error:
a. html tags
b. Excessively long text (if the idea length limit is enforced by your moderator)
c. Curse words (if the moderator has enabled curse word filtering)


List of all API Endpoints

Action:  Create New Member
Method URL: /members
EG: https://ideascale.com/a/rest/v1/members
Method: POST

Action:  Create Campaign
Method URL: /campaign
EG: https://ideascale.com/a/rest/v1/campaign
Method: POST

Action: Create New Idea
Method URL: /idea
EG: https://ideascale.com/a/rest/v1/idea
Method: POST

Action: Vote UP An Idea
Method URL: /ideas/{ideaId}/vote/up
EG: https://ideascale.com/a/rest/v1/ideas/3421/vote/up
Method: POST

Action: Vote DOWN An Idea
Method URL: /ideas/{ideaId}/vote/down
EG: https://ideascale.com/a/rest/v1/ideas/3421/vote/down
Method: POST

Action: Add a comment to an Idea
Method URL: /idea/{ideaId}/comment
EG: https://ideascale.com/a/rest/v1/idea/3421/comment
Method: POST

Action: Add a comment to comment
Method URL: /comments/{commentId}/comment
EG: https://ideascale.com/a/rest/v1/comments/745/comment
Method: POST

Action: Approve/Reject Pending member
Method URL: /members/{memberId}/approve
                       /members/{memberId}/reject
EG: https://ideascale.com/a/rest/v1/members/29781/approve
       https://ideascale.com/a/rest/v1/members/29781/reject
Method: POST

Action: Approve/Reject Pending Idea
Method URL: /ideas/{ideaId}/approve
                       /ideas/{ideaId}/reject
EG: https://ideascale.com/a/rest/v1/ideas/3421/approve
       https://ideascale.com/a/rest/v1/ideas/3421/reject
Method: POST

Action: Approve/Reject Pending Comment
Method URL: /comments/{commentId}/approve
                       /comments/{commentId}/reject
EG: https://ideascale.com/a/rest/v1/comments/745/approve
https://ideascale.com/a/rest/v1/comments/745/reject
Method: POST

Action: Delete a comment
Method URL: /comments/{commentId}/delete
EG: https://ideascale.com/a/rest/v1/comments/745/delete
Method: POST

Action: Add owner to an Idea
Method URL: /ideas/owners
EG: https://ideascale.com/a/rest/v1/ideas/owners
Method: POST

Action: Assign owner to idea(takes array of member id's on request body, and adds those members to owner list)
Method URL: /ideas/owners
EG: https://ideascale.com/a/rest/v1/ideas/owners
Method: POST

Action: Assign owner to idea
Method URL /ideas/{ideaID}/owners
EG: https://ideascale.com/a/rest/v1/ideas/3421/owners
Method: POST

Action: Delete Ideas
Method URL /idea/{ideaId}/delete
EG: https://ideascale.com/a/rest/v1/idea/3421/delete
Method: DELETE

Action: Delete all Ideas, Comments and Vote
Method URL /community/delete/ideas
EG: https://ideascale.com/a/rest/v1/community/delete/ideas
Method: DELETE

Action: Delete all members and ideas including votes and comments from community
Method URL /community/delete/ideasAndMembers
EG: https://ideascale.com/a/rest/v1/community/delete/ideasAndMembers
Method: DELETE

Action:  Get all Campaigns
Method URL: /campaigns
EG: https://ideascale.com/a/rest/v1/campaigns
Method: GET

Action:  Get Member Information
Method URL: /members/{memberId}
EG: https://ideascale.com/a/rest/v1/members/29781
Method: GET

Action:  Get Member Information By Name
Method URL: /members/name/{name}
EG: https://ideascale.com/a/rest/v1/members/name/John
Method: GET

Action:  Get Member Information By Email
Method URL: /members/email/{email}
EG: https://ideascale.com/a/rest/v1/members/email/john@ideascale.com
Method: GET

Action:  Get Member Ideas
Method URL: /members/{memberId}/ideas
                       /members/{memberId}/ideas/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/members/29781/ideas
       https://ideascale.com/a/rest/v1/members/29781/ideas/1/10
Method: GET

Action:  Get Idea Details
Method URL: /ideas/{ideaId}
EG: https://ideascale.com/a/rest/v1/ideas/3421
Method: GET

Action:  Get All Idea Details
Method URL: /ideas
EG: https://ideascale.com/a/rest/v1/ideas
Method: GET

Action:  Get All Comments
Method URL: /comments
                       /comments/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/comments
       https://ideascale.com/a/rest/v1/comments/1/10
Method: GET

Action:  Get Vote Information of an Idea
Method URL: /ideas/{ideaId}/votes
EG: https://ideascale.com/a/rest/v1/ideas/3421/votes
Method: GET

Action:  Get Vote Information For All Ideas
Method URL: /ideas/votes
EG: https://ideascale.com/a/rest/v1/ideas/votes
Method: GET

Action:  Get Vote Information of a Comment
Method URL: /comments/{commentId}/votes
EG: https://ideascale.com/a/rest/v1//comments/745/votes
Method: GET

Action:  Get Vote Information For All Comments
Method URL: /comments/votes
EG: https://ideascale.com/a/rest/v1/comments/votes
Method: GET

Action:  Get Vote Information For All Ideas of a Member
Method URL: /members/{memberId}/ideas/votes
EG: https://ideascale.com/a/rest/v1/members/29781/ideas/votes
Method: GET

Action:  Get Vote Information For All Comments of a Member
Method URL: /members/{memberId}/comments/votes
EG: https://ideascale.com/a/rest/v1/members/29781/comments/votes
Method: GET

Action:  Get all comments by its ID
Method URL: comments/{commentId}
EG: https://ideascale.com/a/rest/v1comments/745
Method: GET

Action:  Get all comments on an Idea
Method URL: /ideas/{ideaId}/comments
EG: https://ideascale.com/a/rest/v1/ideas/3421/comments
Method: GET

Action:  Get Comment Information By Member ID
Method URL: /members/{memberId}/comments
EG: https://ideascale.com/a/rest/v1/members/29781/comments
Method: GET

Action:  Get All Campaign Ideas
Method URL: /campaigns/{campaignId}/ideas
                       /campaigns/{campaignId}/ideas/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/campaigns/6547/ideas
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/2/10
Method: GET

Action:  Order Campaign by Creation Date in Descending
Method URL: /campaigns/{campaignId}/ideas/{pageNumber}/{pageSize}/{orderkey}
EG: https://ideascale.com/a/rest/v1/campaigns/{campaignId}/ideas/2/10/date-up
Method: GET

Action:  Returns all stages information
Method URL: /stages
EG: https://ideascale.com/a/rest/v1/stages
Method: GET

Action:  Return specific stage information
Method URL: /stages/{StageId}
EG: https://ideascale.com/a/rest/v1/stages/24
Method: GET

Action:  Return custom field for specific stage
Method URL: /stages/{StageId}/fields
EG: https://ideascale.com/a/rest/v1/stages/24/fields
Method: GET

Action:  Return all Ideas in specific stage
Method URL: /stages/{StageId}/ideas
EG: https://ideascale.com/a/rest/v1/stages/24/ideas
Method: GET

Action:  Return all Ideas in a specific stage, display idea by page number and number of ideas
Method URL: /stages/{StageId}/ideas/{PageNumber}/{PageSize}
EG: https://ideascale.com/a/rest/v1/stages/24/ideas/2/10
Method: GET

Action:  Order by Status Changed Date Descending
Method URL: /ideas/status/custom/{statusKey}/{pageNumber}/{pageSize}/{orderkey}
                    /campaigns/{campaignId}/ideas/status/custom/{statusKey}/{pageNumber}/{pageSize}/{orderkey}
EG: https://ideascale.com/a/rest/v1/ideas/status/custom/24/2/10/date-down
Method: GET
Action: Order by Top Ideas in Descending
Method URL: /ideas/top/{pageNumber}/{pageSize}/{orderkey}
                       /campaigns/{campaignId}/ideas/top/{pageNumber}/{pageSize}/{orderkey}
EG: https://ideascale.com/a/rest/v1/ideas/top/1/10/date-down 
       https://ideascale.com/a/rest/v1/​campaigns/6547/ideas/top/1/10/date-down 
Method: GET

Action: Get Recent Ideas
Method URL: /ideas/recent
                       /ideas/recent/{pageNumber}/{pageSize}
                       /campaigns/{campaignId}/ideas/recent
                       /campaigns/{campaignId}/ideas/recent/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/​ideas/recent
        https://ideascale.com/a/rest/v1/​ideas/recent/2/10
        https://ideascale.com/a/rest/v1/​/campaigns/6547/ideas/recent
        https://ideascale.com/a/rest/v1/​/campaigns/6547/ideas/recent/2/10
Method: GET

Action: Order by Recent Ideas in Descending
Method URL: /ideas/recent/{pageNumber}/{pageSize}/{orderkey}
                       /campaigns/{campaignId}/ideas/recent/{pageNumber}/{pageSize}/{orderkey}
EG: https://ideascale.com/a/rest/v1/ideas/recent/1/10/date-down
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/recent/1/10/date-down
Method: GET

Action: Get Hot (Popular) Ideas
Method URL: /ideas/hot
                       /ideas/hot/{pageNumber}/{pageSize}
                       /campaigns/{campaignId}/ideas/hot
                       /campaigns/{campaignId}/ideas/hot/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/ideas/hot
       https://ideascale.com/a/rest/v1/ideas/hot/2/20
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/hot
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/hot/2/20
Method: GET
Action: Get Ideas In Review
Method URL: /ideas/inreview
                       /ideas/inreview/{pageNumber}/{pageSize}
                       /campaigns/{campaignId}/ideas/inreview
                       /campaigns/{campaignId}/ideas/inreview/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/ideas/inreview
       https://ideascale.com/a/rest/v1/ideas/inreview/2/20
       https://ideascale.com/a/rest/v1/campaigns/6547ideas/inreview
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/inreview/2/20
Method: GET

Action: Order by Status Changed (In Review) in Descending
Method URL: /ideas/inreview/{pageNumber}/{pageSize}/{orderkey}
                       /campaigns/{campaignId}/ideas/inreview/{pageNumber}/{pageSize}/{orderkey}
EG: https://ideascale.com/a/rest/v1/ideas/inreview/1/10/date-down
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/inreview/1/10/date-down
Method: GET

Action: Get Ideas In Progress
Method URL: /ideas/inprogress
                       /ideas/inprogress/{pageNumber}/{pageSize}
                       /campaigns/{campaignId}/ideas/inprogress
                       /campaigns/{campaignId}/ideas/inprogress/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/ideas/inprogress
       https://ideascale.com/a/rest/v1/ideas/inprogress/1/10
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/inprogress
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/inprogress/1/10
Method: GET

Action: Order by Status Changed (In Progress) in Descending
Method URL: /ideas/inprogress/{pageNumber}/{pageSize}/{orderkey}
                       /campaigns/{campaignId}/ideas/inprogress/{pageNumber}/{pageSize}/{orderkey}
EG: https://ideascale.com/a/rest/v1/ideas/inprogress/2/20/status.change.date-down
        https://ideascale.com/a/rest/v1/campaigns/6547/ideas/inprogress/2/20/status.change.date-down
Method: GET

Action: Get Ideas in Complete state
Method URL: /ideas/complete
                       /ideas/complete/{pageNumber}/{pageSize}
                       /campaigns/{campaignId}/ideas/complete
                       /campaigns/{campaignId}/ideas/complete/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/ideas/complete
       https://ideascale.com/a/rest/v1/ideas/complete/1/10
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/complete
       https://ideascale.com/a/rest/v1/campaigns/6547ideas/complete/1/10
Method: GET

Action: Order by Status Changed (Complete) in Descending
Method URL: /campaigns/{campaignId}/ideas/complete/{pageNumber}/{pageSize}/{orderkey}
EG: https://ideascale.com/a/rest/v1/campaigns/6547/ideas/complete/1/10/status.change.date-down
Method: GET

Action: Get Ideas by Tag
Method URL: /ideas/tag/{tag}
                       /ideas/tag/{tag}/{pageNumber}/{pageSize}
                       /campaigns/{campaignId}/ideas/tag/{tag}
                       /campaigns/{campaignId}/ideas/tag/{tag}/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/ideas/tag/work
       https://ideascale.com/a/rest/v1/ideas/tag/work/2/20
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/tag/work
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/tag/work/2/20
Method: GET

Action: Get Tag count and size metric
Method URL: /tags/counts
                       /tags/counts/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/tags/counts
        https://ideascale.com/a/rest/v1/tags/counts/2/20
Method: GET

Action: Order by Status Changed (Tags) in Descending
Method URL: /ideas/tag/{tag}/{pageNumber}/{pageSize}/{orderkey}
                       /campaigns/{campaignId}/ideas/tag/{tag}/{pageNumber}/{pageSize}/{orderkey}
EG: https://ideascale.com/a/rest/v1/ideas/tag/{tag}/{2/20/status.change.date-down
       https://ideascale.com/a/rest/v1/campaigns/6547ideas/tag/{tag}/2/20/status.change.date-down
Method: GET

Action: Get All Tags For All Ideas
Method URL: /ideas/tags
EG: https://ideascale.com/a/rest/v1/ideas/tags
Method: GET

Action: Get Pending Ideas
Method URL: /ideas/pending
                       /ideas/pending/{pageNumber}/{pageSize}
                       /campaigns/{campaignId}/ideas/pending
                       /campaigns/{campaignId}/ideas/pending/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/ideas/pending
       https://ideascale.com/a/rest/v1/ideas/pending/1/10
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/pending
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/pending/1/10
Method: GET

Action: Order by Pending in Descending
Method URL: /ideas/pending/{pageNumber}/{pageSize}/{orderkey}
                       /campaigns/{campaignId}/ideas/pending/{pageNumber}/{pageSize}/{orderkey}
EG: https://ideascale.com/a/rest/v1/ideas/pending/1/10/date-up
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/pending/1/10/date-up
Method: GET

Action: Get Pending Comments
Method URL: /comments/pending
                       /comments/pending/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/comments/pending
       https://ideascale.com/a/rest/v1/comments/pending/1/10
Method: GET

Action: Get Pending Members
Method URL: /members/pending
                       /members/pending/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/members/pending
       https://ideascale.com/a/rest/v1/members/pending/1/10
Method: GET

Action: Get Nonpending Ideas of A Campaign
Method URL: /campaigns/{campaignId}/ideas/nonpending/{pageNumber}/{pageSize}
EG: https://ideascale.com/a/rest/v1/campaigns/6547/ideas/nonpending/2/20
Method: GET

Action: Get list of Flag event
Method URL: /ideas/flag/events/{days}
                       /campaigns/{campaignId}/ideas/flag/events/{days}
                       /ideas/{ideaId}/flag/events
EG: https://ideascale.com/a/rest/v1/ideas/flag/events/1
       https://ideascale.com/a/rest/v1/campaigns/6547/ideas/flag/events/1
       https://ideascale.com/a/rest/v1/ideas/3421/flag/events
Method: GET

Action: Get list of Moderation event
Method URL: /ideas/moderation/events/{days}
                       /campaigns/{campaignId}/ideas/moderation/events/{days}
                       /ideas/{ideaId}/moderation/events
                       /comments/moderation/events/{days}
                       /comments/{commentId}/moderation/events
EG: https://ideascale.com/a/rest/v1/ideas/moderation/events/2
        https://ideascale.com/a/rest/v1/campaigns/6547/ideas/moderation/events/2
        https://ideascale.com/a/rest/v1/ideas/3421/moderation/events
        https://ideascale.com/a/rest/v1/comments/moderation/events/2
        https://ideascale.com/a/rest/v1/comments/745/moderation/events
Method: GET

Action: Change Idea Status
Method URL: /idea/{ideaId}/status/set/{statusId}
EG: https://ideascale.com/a/rest/v1/idea/3421/status/set/{statusId}
Method: GET

Action: Get Assign owner to idea(downloads member info of eligible owners)
Method URL: /ideas/owners
EG: https://ideascale.com/a/rest/v1/ideas/owners
Method: GET

Action: Get All Idea status
Method URL: /idea/status/all
EG: https://ideascale.com/a/rest/v1/idea/status/all
Method: GET

Action: Get Idea Information By Idea Number
Method URL: /idea/number/{ideaNumber}
EG: https://ideascale.com/a/rest/v1/idea/number/123
Method: GET

Action: Get Attachment Information By Member ID
Method URL: /members/{memberId}/attachments
EG: https://ideascale.com/a/rest/v1/members/29781/attachments
Method: GET

Action: Get Attachment Information By Idea ID
Method URL: /ideas/{ideaId}/attachments
EG: https://ideascale.com/a/rest/v1/ideas/3421/attachments
Method: GET

Action: Get All Attachment Information
Method URL: /attachments
EG: https://ideascale.com/a/rest/v1/attachments
Method: GET

Action: Filter by campaign template for top and recent (ideation)
Method URL: /campaigns/templates/{templateID}/ideas/top
                      /campaigns/templates/{templateID}/ideas/top/{pageNumber}/{pageSize}
                      /campaigns/templates/{templateID}/ideas/top/{pageNumber}/{pageSize}/{orderkey}
                      /campaigns/templates/{templateID}/ideas/recent
                      /campaigns/templates/{templateID}/ideas/recent/{pageNumber}/{pageSize}
                      /campaigns/templates/{templateID}/ideas/recent/{pageNumber}/{pageSize}/{orderkey}
EG: https://ideascale.com/a/rest/v1/campaigns/templates/0/ideas/top
https://ideascale.com/a/rest/v1/campaigns/templates/0/ideas/top/1/10
https://ideascale.com/a/rest/v1/campaigns/templates/{0/ideas/top/1/10/date-up
https://ideascale.com/a/rest/v1/campaigns/templates/0/ideas/recent
https://ideascale.com/a/rest/v1/campaigns/templates/0ideas/recent/1/10
https://ideascale.com/a/rest/v1/campaigns/templates/0/ideas/recent/1/10/date-up
Method: GET

Action: Get Active ideas contents
Method URL: /campaigns/active
                      /campaigns/active/ideas/status/custom/{statusKey}
                      /campaigns/active/ideas/top
                      /campaigns/active/ideas/recent
                      /campaigns/active/templates/{templateID}/ideas/recent
                      /campaigns/active/ideas/hot
                      /campaigns/active/ideas/inreview
                      /campaigns/active/ideas/inprogress
                      /campaigns/active/ideas/complete
                      /campaigns/active/ideas/tag/{tag}
                      /campaigns/active/ideas
                      /campaigns/active/ideas/pending
EG: https://ideascale.com/a/rest/v1/campaigns/active
       https://ideascale.com/a/rest/v1/campaigns/active/ideas/status/custom/{statusKey}
       https://ideascale.com/a/rest/v1/campaigns/active/ideas/top
       https://ideascale.com/a/rest/v1/campaigns/active/ideas/recent
       https://ideascale.com/a/rest/v1/campaigns/active/templates/0/ideas/recent
       https://ideascale.com/a/rest/v1/campaigns/active/ideas/hot
       https://ideascale.com/a/rest/v1/campaigns/active/ideas/inreview
       https://ideascale.com/a/rest/v1/campaigns/active/ideas/inprogress
       https://ideascale.com/a/rest/v1/campaigns/active/ideas/complete
       https://ideascale.com/a/rest/v1/campaigns/active/ideas/tag/work
       https://ideascale.com/a/rest/v1/campaigns/active/ideas
       https://ideascale.com/a/rest/v1/campaigns/active/ideas/pending
Method: GET

Action: Get Archived idea contents
Method URL: /campaigns/archived
                      /campaigns/archived/ideas/status/custom/{statusKey}
                      /campaigns/archived/ideas/top
                      /campaigns/archived/ideas/recent
                      /campaigns/archived/templates/{templateID}/ideas/recent
                      /campaigns/archived/ideas/hot
                      /campaigns/archived/ideas/inreview
                      /campaigns/archived/ideas/inprogress
                      /campaigns/archived/ideas/complete
                      /campaigns/archived/ideas/tag/{tag}
                      /campaigns/archived/ideas
                      /campaigns/archived/ideas/pending
EG: https://ideascale.com/a/rest/v1/campaigns/archived
https://ideascale.com/a/rest/v1/campaigns/archived/ideas/status/custom/{statusKey}
https://ideascale.com/a/rest/v1/campaigns/archived/ideas/top
https://ideascale.com/a/rest/v1/campaigns/archived/ideas/recent
https://ideascale.com/a/rest/v1/campaigns/archived/templates/0/ideas/recent
https://ideascale.com/a/rest/v1/campaigns/archived/ideas/hot
https://ideascale.com/a/rest/v1/campaigns/archived/ideas/inreview
https://ideascale.com/a/rest/v1/campaigns/archived/ideas/inprogress
https://ideascale.com/a/rest/v1/campaigns/archived/ideas/complete
https://ideascale.com/a/rest/v1/campaigns/archived/ideas/tag/work
https://ideascale.com/a/rest/v1/campaigns/archived/ideas
https://ideascale.com/a/rest/v1/campaigns/archived/ideas/pending
Method: GET

Action: Get custom field info of the campaign including community
Method URL: /customFields/idea/campaigns/{campaignID}
EG: https://ideascale.com/a/rest/v1/customFields/idea/campaigns/6547}
Method: GET

Action: Get list of member custom fields of the community
Method URL: /customFields/member
EG: https://ideascale.com/a/rest/v1/customFields/member
Method: GET

Please Note:
{templateID} should be 0(ideation)

Few {orderkey} points are given below to retrieve data in Descending or Ascending order:

date-down : This orders by creation date Descending.
date-up : This orders by creation date Ascending.
votes-down : This orders by most voted Descending.
votes-up : This orders by most voted Ascending.
comments-down : This orders by most commented Descending.
random-down : This orders by random column Descending.
status-down : This order by status Descending.
status.change.date-down : This orders by status changed date Descending.
amount-pledged-down : This orders by most funded Descending.
vote.and.comments-down : This order by voted and commented most Descending.

How to attach files to an idea using API:

Action:
Upload Attachment to Idea 
Method URL: /a/rest/v1/ideas/{ideaId}/attach
Method: POST

Request Body Parameters:
This resource accepts POST multipart form data, containing a single image in a form-field named 'attachment'.

Sample:

{
"id" : 10647 ,  
"creationDateTime" : "2016-09-01T04:24:25.000-07:00" ,  
"editedAt" : "2016-09-01T04:24:25.000-07:00" ,  
"title" : "tower 2" ,
"text" : "two" ,
"campaignId" : 9573 ,
"authorId" : 1790 ,
"authorInfo" :{
"id" : 1790 ,
"name" : "cartoon" ,
"personId" : 11984 ,  
"email" : "cartoon@yopmail.com" ,  
"emailHash" : "c4ed9f947c79898cd200d239b1afab92" ,  
"userName" : "cartoon3" ,
"globalModerator" : true ,  
"admin" : true ,  
"customRole" : false ,
"registeredDateTime" : "2015-02-14T03:29:08.000-08:00" ,  
"source" : "admin" ,
"status" : "member/verified" ,
"ideaCount" : 129 ,
"voteCount" : 52 ,  
"commentCount" : 54 ,  
"tosAccepted" : true ,
"avatarUrl" : "https://secure.gravatar.com/avatar/c4ed9f947c79898cd200d239b1afa b92.jpg?s=80&d=https%3A%2F%2Fideascale.com%2Fimages%2Favatar%2Finitial-C.png" ,
"points" : 3041 ,  
"profileQuestions" :{
"country" : "BD" ,  
"single textb" : "" ,  
"Food" : ""
},  
}
"voteCount" : 0 ,
"upVoteCount" : 0 ,
"downVoteCount" : 0 ,
"myVote" : 0 ,
"commentCount" : 0 ,  
"url" : "https://stage.ideascale.me/a/dtd/10647-452" ,  
"tags" :[
"goat-5" ,
"goat-6"
],
"funnelId" : 3 ,  
"funnelName" : "Default Workflow" ,  
"statusId" : 122 ,  
"status" : "stage-mybuid763" ,  
"stageId" : 122 ,  
"stageName" : "stage-mybuid763" ,  
"stageLabel" : "mybuid" ,  
"flag" : "default" ,  
"attachments" :[
"/userimages/923/panel_upload_452/skitch.png"
],
"customFields" :{
"How many departments are impacted?" : "none"
},
"campaignCustomFields" :{
"Only in website" : ""
},
"ideaNumber" : 191 ,  
"locationInfo" :{
"city" : null ,  
"country" : null ,  
"states" : null ,  
"areaCode" : 0 ,  
"ip" : "10.11.12.1" ,  
"source" : "ip" ,  
"latitude" : null ,
"longitude" : null
},
"ideaPermissionInfo" :{  
"canVote" : false ,  
"canRetractVote" : false ,
"canComment" : true
},
"attachmentDetails" :[
{
"id" : 179 ,
"ideaId" : 10647 ,
"memberId" : 1790 ,
"fileName" : "skitch.png" ,
"fileSize" : 639463 ,  
"timeStamp" : "2018-02-26T22:39:19.000-08:00" ,
"downloadUrl" : "https://stage.ideascale.me/userimages/923/panel_upload_452/ski
tch.png" , 
"imageFile" : true 
}  
]
}






Below is an example of Idea attachment upload via API Success Status with 200 OK:



How to attach avatar using API:

Action: Attach avatar for a member in a community 
Method URL: /a/rest/v1/members/{memberId}/avatar/upload
Method: POST



Note: Page number starts from 0 (zero). Default page size is 25 when not specified.
When pagination is used, the response headers contain following information.
pager_total_count - total available items
pager_page_size    - current page size
pager_current_page_number - current page number
pager_first_index    - index of first item in current page (starts from 0)
pager_last_index - index of last item in current page

REST Endpoints to Retrieve Data
Get Campaigns

Get Top Ideas

Get Recent Ideas

Get All Campaign Ideas

Get Recent Campaign Ideas

Get Top Campaign Ideas

Get Member Ideas

Get Member Information

Get Member Information by Email

Get Group Information by Email

Sample:

[
{
"id" : 1541 ,
"name" : "admin only" ,
"description" : "" ,
"privateGroup" : true ,
"autoAssignNewMembers" : false ,
"manualAssignment" : true
}
]

Get Assessment Survey Result

  • Sample URL: http://ideascale.com/a/rest/v1/assessment/3456/results
  • Endpoint: /assessment/{assessmentId}/results
  • App Scope Required: Admin
  • Method: GET
  • Expected Response: JSON Member Info structure
Sample:


{
"ideaId" : 56 ,  
"avgScoreOfIdea" : 4.5 ,  
"avgScoreOfQuestions" :[
{
"question" : "Is it good?" ,
"avgScoreOfQuestion" : 3.5
},
{
"question" :  "Does it cover cost?" ,
"avgScoreOfQuestion" : 4
},
{
"question" :  "How likely would you refer?" ,
"avgScoreOfQuestion" : 4.4
}
},
"noOfAccessors" : 35 
}
]

Get Members in Group

  • Sample URL: http://ideascale.com/a/rest/v1/groups/1793/members
  • Endpoint: /groups/{groupid}/members
  • App Scope Required: Admin
  • Method: GET
  • Expected Response: JSON Member Info structure
Sample:

[
{
"id" : 1793 ,
"name" : "adib1577" ,
"personId" : 13626 ,  
"email" : "adib1577@gmail.com" ,  
"emailHash" : "f9fcffe1a6484632689a4b4a28ccf9f4" ,  
"globalModerator" : false ,
"admin" : false ,
"customRole" : false ,  
"registeredDateTime" : "2015-02-14T05:07:55.000-08:00" ,  
"source" : "web" ,
"status" : "member/verified" ,
"ideaCount" : 6 ,
"voteCount" : 0 ,
"commentCount" : 0 ,
"tosAccepted" : false ,
"avatarUrl" : "https://secure.gravatar.com/avatar/f9fcffe1a6484632689a4b4a28ccf 9f4.jpg?s=78&d=https%3A%2F%2Fideascale.com%2Fimages%2Favatar%2Finitial-A.png" ,
 "points" : 8 ,
 "profileQuestions" :{  "country" : "BD" ,
 "Food" : ""
}
}
]

 

Get Funnels:

Sample:

{
"id" : 130 ,
"name" : "Ideate only" ,
"description" : "Holding funnel for CVT campaign." ,  
"defaultStageId" : -1 ,
"stages" :[
{
"id" : 1307 ,
"key" : "stage-ideate676" ,  
"label" : "Ideate" ,  
"description" : "Default Ideate Stage" ,  
"enabled" : true ,
"funnelId" : 130 ,  
"funnelName" : "Ideate only" ,  
"functionId" : 0 ,  
"functionName" : "Ideate" ,  
"emailNotificationEnabled" : false ,  
"ownershipEnabled" : false ,  
"ownerCanMoveIdea" : false ,  
"customIntroductionEnabled" : false ,
"stageTypeId" : 0 ,
"stageTypeName" : "Default"  
}
]
}

 

Get Campaign Groups:

  • Sample URL: http://ideascale.com/a/rest/v1/campaigns/group
  • Endpoint: /campaigns/groups
  • App Scope Required: Admin
  • Method: GET
  • Expected Response: JSON Member Info structure
Sample:

[
{
"id" : 0 ,
"name" : "Ungrouped Campaigns" ,  
"ideaCount" : 466 ,  
"campaigns" :[
{
"id" : 311 ,
"name" : "CVT Ideas" ,
"description" : "This is a holding campaign for the CVT ideas. <strong>It is only visible to administrators.</strong>" ,
"templateId" : 0 ,
"template" : "ideation" ,  
"privateCampaign" : true ,  
"votingAllowed" : false ,
"groupId" : 0 ,
"groupName" : "" ,
"archivedCampaign" : false ,  
"startDate" : "2017-08-06T19:25:58.000-07:00" ,  
"hideIdeaAuthor" : false ,
"hideCommentAuthor" : false ,
"bannerImage" : "https://ideascale.club" ,
"ideaCount" : 3
},
{
"id" : 4 ,
"name" : "Website" ,
"description" : "" ,
"templateId" : 0 ,
"template" : "ideation" ,  
"privateCampaign" : false ,  
"votingAllowed" : true ,
"groupId" : 0 ,
"groupName" : "" ,
"archivedCampaign" : false ,  
"startDate" : "2014-04-30T00:00:00.000-07:00" ,  
"hideIdeaAuthor" : false ,  "hideCommentAuthor" : false ,  
"bannerImage" : "https://ideascale.club" ,
"ideaCount" : 448
},
{
"id" : 5 ,
"name" : "Products" ,
"description" : "" ,
"templateId" : 0 ,
"template" : "ideation" ,  
"privateCampaign" : false ,  "votingAllowed" : true ,
"groupId" : 0 ,
"groupName" : "" ,
"archivedCampaign" : false ,  
"startDate" : "2014-04-30T00:00:00.000-07:00" ,  
"hideIdeaAuthor" : false ,  "hideCommentAuthor" : false ,  
"bannerImage" : "https://ideascale.club" ,
"ideaCount" : 8
},
{
"id" : 6 ,
"name" : "Customer Service" , 
"description" : "" , 
"templateId" : 0 , 
"template" : "ideation" , 
"privateCampaign" : false , 
"votingAllowed" : true ,

"groupId" : 0 ,
"groupName" : "" ,
"archivedCampaign" : false , 
"startDate" : "2014-04-30T00:00:00.000-07:00" ,
"hideIdeaAuthor" : false , 
"hideCommentAuthor" : false , 
"bannerImage" : "https://ideascale.club" ,
"ideaCount" : 7

}
]
}
]


Note: This endpoint is only available to Community Administrators for SSO communities.


Common JSON Structures for Date Retrieval
Campaign Info JSON Structure (Returned by):
/campaigns

Field Name

Type

Description

id

Number

Capaign ID

name

String

Campaign name

description

String

Campaign description

Sample:
[ { "name" : "User Interface", "id" : 12358, "description" : "Suggested changes or enhancements to the User Interface or workflow within the UI." }, { "name" : "Moderation", "id" : 12046, "description" : "Items related to community moderation (editing ideas, changing status, etc)." }, { "name" : "iPhone SDK", "id" : 12339, "description" : "Feedback related to the IdeaScale iPhone SDK. Learn more at http://ideascale.com/iphone" }, { "name" : "Facebook App", "id" : 12341, "description" : "Tell us what you think of our Facebook app. What can we improve to make it better?" }, { "name" : "Community Development", "id" : 10709, "description" : "Ideas and suggestions around community development" }, { "name" : "API", "id" : 12038, "description" : "Issues and enhancements with the API" }, { "name" : "Bugs/Issues", "id" : 10710, "description" : "Any bugs and issues related to IdeaScale. Note: if the issue is urgent, please post to http://support.ideascale.com or email support@ideascale.com." } ]

Member Info JSON Structure (Returned by):
/members/{memberId}

Field Name

Type

Description

id

Number

Member ID within this community

name

String

Member name

email

String

Member email address *Note: This field is only populated for Admin users or SSO communties.*

personId

Number

Person ID. Member ID is specific to the community; while Person ID is IdeaScale-wide


Sample:
{ "name" : "Christoph Schebel", "id" : 131455, "personId" : 2448182 }

Idea Info JSON Structure (Returned by):
/ideas
/ideas/{ideaId}/votes
/ideas/{ideaId}/comments
/ideas/top
/ideas/recent
/campaigns/{campaignId}/ideas/top
/campaigns/{campaignId}/ideas/recent
/ideas/tag/{tag}
/campaigns/{campaignId}/ideas/tag/{tag}
/members/{memberId}/ideas

Field Name

Type

Description

id

Number

Idea ID

creationDateTime

Datetime

Time the idea was created

title

String

Idea title

text

String

Idea text

campaignId

Number

Campaign ID

authorId

Number

Author ID

authorInfo

Object

Member Info Structure for the Idea's author

voteCount

Number

Total votes

myVote

Number

Vote for the current user. Zero if this user has not voted.

commentCount

Number

Number of comments.

url

String

Idea URL

tags

Array

String array of tags for the idea.


Sample:
[ { "id" : 26197, "text" : "I would like to use the Ideascale application on multiple Facebook Pages, but the current design only allows one. Could you make it so we could put multiple Facebook Page ID's in so the application could point to the same community from a variety of Facebook pages.", "tags" : [ "facebook app", "ideascale" ], "url" : "http://ideas.ideascale.com/a/dtd/26197-3339", "title" : "Allow same Ideascale Facebook App on Multiple FB Pages", "campaignId" : 12341, "commentCount" : 2, "voteCount" : 4, "creationDateTime" : "2010-05-25T10:44:58.000-07:00", "authorId" : 112445, "authorInfo" : { "name" : "Jonathan Brier", "id" : 112445, "personId" : 927039 }, "myVote" : 0 }, { "id" : 26156, "text" : "add a link to Facebook page in addition to:\n \nSubscribe\n\nFollow us on Twitter\nNew Ideas RSS Feed\nTop Ideas RSS Feed\nNew Comments RSS Feed", "tags" : [ ], "url" : "http://ideas.ideascale.com/a/dtd/26156-3339", "title" : "add a link to Facebook page ", "campaignId" : 12341, "commentCount" : 0, "voteCount" : 3, "creationDateTime" : "2010-05-20T13:03:17.000-07:00", "authorId" : 113253, "authorInfo" : { "name" : "greencentralar", "id" : 113253, "personId" : 927043 }, "myVote" : 0 }, { "id" : 23087, "text" : "i would like to have my fb page visitors contribute ideas directly from FB", "tags" : [ ], "url" : "http://ideas.ideascale.com/a/dtd/23087-3339", "title" : "idea posting from facebook", "campaignId" : 12341, "commentCount" : 0, "voteCount" : 5, "creationDateTime" : "2009-09-18T23:46:32.000-07:00", "authorId" : 95559, "authorInfo" : { "name" : "spikmattansandraliv", "id" : 95559, "personId" : 602177 }, "myVote" : 0

Error Info JSON Structure
Returned by: All calls with errors

Field Name

Type

Description

Code

String

Error code

description

String

Error description


Sample:
{ "code" : "555", "description" : “Invalid api token” }

REST Endpoints to Create/Update Data

Create New Idea

Create Idea JSON Structure
Used by: /idea

Field Name

Type

Required

Description

title

String

Required

Idea title

text

String

Required

Idea text

campaign Id

Number

Optional

Campaign ID

tags

Array

Optional

String array of tags for the idea

customFields

Array

Optional

String array of custom fields choices


Sample:
Create Idea using JSON Structure:
{
"id" : 165994 ,
"text" : "Mood OFF New Idea Description" ,  "title" : "Mood OFF new nice Idea Title rest" ,  "campaignId" : 517
}


Sample Successful Response:

{
"id" : 165994 , 
"creationDateTime" : "2018-01-22T19:19:47.574-08:00" , 
"editedAt" : "2018-01-22T19:19:47.574-08:00" , 
"title" : "Mood OFF new nice Idea Title rest" , 
"text" : "Mood OFF New Idea Description" ,  "campaignId" : 165994 ,

"authorId" : 141586 ,
"authorInfo" :{
"id" : 141586 ,
"name" : "James Baillie" ,
"personId" : 3787156 , 
"email" : "james.baillie@ideascale.com" , 
"emailHash" : "fee4a8a710b2675d3eb99879476f4979" , 
"globalModerator" : true ,

"admin" : true ,
"customRole" : false , 
"registeredDateTime" : "2014-04-10T16:27:26.000-07:00" , 
"source" : "web" ,

"status" : "member/verified" ,
"ideaCount" : 180 , 
"voteCount" : 600 , 
"commentCount" : 656 , 
"tosAccepted" : false ,

"avatarUrl" : "https://ideascale.com/userimages/avatar/378/3787156/Photo-on-4-1 1-14-at-11.48-AM.jpg" ,
"points" : 18812 ,  "profileQuestions" :{
"Please let us know your Community URL (your response will only appear to IdeaScale staff)" : "https://ideas.ideascale.com" ,
"What is your role within the IdeaScale communities you are part of?" : "Innovation Manager, Day-to-Day community administrator"
}, 
}

"voteCount" : 1 ,
"upVoteCount" : 1 ,
"downVoteCount" : 0 ,
"myVote" : 1 ,
"commentCount" : 0 , 
"url" : "https://ideas.ideascale.com/a/dtd/165994-3339" ,  "tags" :[

],
"statusId" : 1909 , 
"status" : "stage-openvoting503" , 
"stageLabel" : "Open Voting" , 
"flag" : "default" , 
"ideaNumber" : 870 , 
"locationInfo" :{

"city" : "CA" , 
"country" : "US" , 
"states" : "Palm Springs" , 
"areaCode" : 0 , 
"ip" : "72.132.0.111" , 
"source" : "ip" , 
"latitude" : null ,

}, 
"longitude" : null

"ideaPermissionInfo" :{  "canVote" : true ,
"canRetractVote" : true ,  },  "canComment" : true
"hideAuthor" : false }



Create Idea with custom field value:
For example we have a multi-select custom field named "Department" and three choices "Account", "Admin" and "HR". The following request body will create an idea with the custom field value.
{"text":"My first idea from API call","title":"More Idea","tags":["API","SDK"],"campaignId":261,"customFields":{"Department":"Account"}}

Create New Campaign

Create Idea JSON Structure
Used by: /campaign

Field Name

Type

Required

Description

title

String

Required

Campaign title

text

String

Required

Campaign description


Sample:

Create campaign using JSON Structure:

{"name":"Improving \"Access\" for IdeaScale: how do we get 20% ideas this
year?", "description":"Hello", "templateId":0, "groupId":6, "privateCampaign":true, "votingAllowed":true, "funnelId": 109,
"ideaFromUnauthorizedMemberAllowed": true, "memberIdeaSubmissionAllowed": true, "authorizedGroupIds": [1541, 980],
"archivedCampaign":true, "startDate":"2017-11-17T11:20:00.000-08:00", "endDate":"2018-11-17T11:20:00.000-08:00", "hideIdeaAuthor":true, "hideCommentAuthor":true,
"authorEdit": true,
"userSubscriptionAllowed": true }


Sample Successful Response:

{"id": 10222,
"name": "Improving "Access" for IdeaScale: how do we get 20% ideas this year?",
"description": "Hello",
"templateId": 0,
"template": "ideation",
"privateCampaign": true,
"votingAllowed": true,
"groupId": 6,
"funnelId": 109,
"groupName": "oo",
"archivedCampaign": false,
"startDate": "2017-11-17T11:20:00.000-08:00",
"endDate": "2018-11-17T11:20:00.000-08:00",
"hideIdeaAuthor": true,
"hideCommentAuthor": true,
"bannerImage": "https://ideascale.me",
"ideaCount": 0,
"authorizedGroupIds": [
980,
1541 ],
"ideaFromUnauthorizedMemberAllowed": true, "memberIdeaSubmissionAllowed": true, "memberIdeaAttachmentAllowed": false, "authorEdit": true, "userSubscriptionAllowed": true}


Create New Members


Member JSON Structure
Used by: /members

Field Name

Type

Required

Description

name

String

Required

Name of Member

email

String

Required

Email address of member


Sample:
{"name" : "John Doe", "email" : "john.doe@domain.com"}


Vote on Idea:

 

Vote Up on Idea JSON Structure
Used by: /ideas/{ideaId}/vote/up

Field Name

Type

Required

Description

MyVote

Number

Optional

1 for agree


Sample:
{ "myVote":1 }


Vote Down on Idea JSON Structure
Used by: /ideas/{ideaId}/vote/down

Field Name

Type

Required

Description

MyVote

Number

Optional

1 for disagree


Sample:
{ "myVote":1 }

Add a comment to an Idea


Comment on Idea JSON Structure
Used by: /ideas/{ideaId}/comment

Field Name

Type

Required?

Description

comment

String

Required

Comment to add


Sample:
{"text":"Text of new comment"}


Create a New Assessment Survey:
Used by: /assessment
 

  • Sample URL: http://deascale.com/a/rest/v1/assessment
  • Method:  Post
  • Endpoint:  /assessment
  • App Scope Required:  Admin
  • Response content type:  JSON
Request Body Parameters:
“assessmentTitle” : string (required)
“welcomeMessage” : string
“thankYouMessage” : string
“startDate” : date (ISO)
“endDate” : date (ISO)
“imageDisplayOption” : integer , options : 0 = No image , 2 = Display , 3 = Image Only “ showDetailsAndAuthor” : boolean
“commentsRequired” : boolean

Sample:

{
"assessmentTitle" : "CRT Assessment [01]" ,  "welcomeMessage" : "Welcome to the assessment" ,  "thankYouMessage" : "Thank you for your survey" ,  "startDate" : "2018-10-31T01:30:00.000-05:00" ,  "endDate" : "2018-11-31T01:30:00.000-05:00" ,
"imageDisplayOption" : 3 ,  "showDetailsAndAuthor" : true ,  "commentsRequired" : "true"
}


Sample Successful Response:

{
"id" : 3456 ,
"assessmentTitle" : "CRT Assessment [01]" ,  "welcomeMessage" : "Welcome to the asessment" ,  "thankYouMessage" : "Thank you for your survey" ,  "startDate" : "2018-10-31T01:30:00.000-05:00" ,  "endDate" : "2018-11-31T01:30:00.000-05:00" ,  "imageDisplayOption" : 3 ,  "showDetailsAndAuthor" : true ,  "commentsRequired" : "true" ,
"enabled" : "false" ,
"questions" :[
 ], 
"ideas" :[
 ], 
"members" :[ 
]
}


Add Question to Assessment survey:
Used by: /assessment/{assessmentId}/question
 

  • Sample URL: http://deascale.com/a/rest/v1/assessment/3456/question
  • Method:  POST
  • Endpoint:  /assessment/{assessmentId}/question
  • App Scope Required:  Admin
  • Response content type:  JSON

Request Body Parameters:
"questions”: array of string (required)

Sample:

[
"Is the idea worth implementing?" ,
"How good is the idea?" ,
"Does it require funding?"
]


Sample Successful Response:

{
"id" : 3456 ,
"assessmentTitle" : "CRT Assessment [01]" ,  "welcomeMessage" : "Welcome to the assessment" ,  "thankYouMessage" : "Thank you for your survey" ,  "startDate" : "2018-10-31T01:30:00.000-05:00" ,  "endDate" : "2018-11-31T01:30:00.000-05:00" ,  "imageDisplayOption" : 3 ,  "showDetailsAndAuthor" : true ,  "commentsRequired" : "true" ,
"enabled" : "false" ,
"questions" :[
"Is the idea worth implementing?"    "How good is the idea?"
"Does it require funding?"
 ], 
"ideas" :[
 ], 
"members" :[
 ]
}



Delete Question from Assessment survey:
Used by: /assessment/{assessmentId}/question

  • Sample URL: http://deascale.com/a/rest/v1/assessment/3456/question
  • Method:  DELETE
  • Endpoint:  /assessment/{assessmentId}/question 
  • App Scope Required:  Admin
  • Response content type:  JSON

Note: Assessment must have at least one question.

Request Body Parameters:
"questions”: array of long (required)

Sample:

[
"How good is the idea?"
]


Sample Successful Response:

{
"id" : 3456 ,
"assessmentTitle" : "CRT Assessment [01]" ,  "welcomeMessage" : "Welcome to the asessment" ,  "thankYouMessage" : "Thank you for your survey" ,  "startDate" : "2018-10-31T01:30:00.000-05:00" ,  "endDate" : "2018-11-31T01:30:00.000-05:00" ,  "imageDisplayOption" : 3 ,  "showDetailsAndAuthor" : true ,  "commentsRequired" : "true" ,
"enabled" : "false" ,
"questions" :[  ],  "Is it good?"
"ideas" :[  ],
"members" :[ 
]
}


Add Idea to Assessment survey:
Used by: /assessment/{assessmentId}/ideas
 

  • Sample URL: http://deascale.com/a/rest/v1/assessment/3456/ideas
  • Method:  Post
  • Endpoint:  /assessment/{assessmentId}/ideas 
  • App Scope Required:  Admin
  • Response content type:  JSON

Request Body Parameters:
"ideaIds”: array of long (required)

Sample:

[
123 ,
435 ,
6322
]


Sample Successful Response:

{
"id" : 3456 ,
"assessmentTitle" : "CRT Assessment [01]" ,  
"welcomeMessage" : "Welcome to the asessment" ,  
"thankYouMessage" : "Thank you for your survey" ,  "startDate" : "2018-10-31T01:30:00.000-05:00" ,  
"endDate" : "2018-11-31T01:30:00.000-05:00" ,  
"imageDisplayOption" : 3 ,
"showDetailsAndAuthor" : true ,  
"commentsRequired" : "true" ,  
"enabled" : "false" ,  
"questions" :[
"Is it good?",
"Does it cover cost?",
"How likely would you refer?"
], 
"ideas" :[ 
123 ,
435 ,
6322
],  
"members" :[  
]
}



Remove Idea from Assessment survey:
Used by: /assessment/{assessmentId}/ideas

Sample URL: http://deascale.com/a/rest/v1/assessment/3456/ideas
Method:  DELETE
Endpoint:  /assessment/{assessmentId}/ideas 
App Scope Required:  Admin
Response content type:  JSON

Note: Assessment must have at least one question.

Request Body Parameters:
"ideaIds”: array of long (required)

Sample:

[
123 ,
435 ,
6322
]

Sample Successful Response:

{
"id" : 3456 ,
"assessmentTitle" : "CRT Assessment [01]" ,  
"welcomeMessage" : "Welcome to the asessment" ,  
"thankYouMessage" : "Thank you for your survey" ,  
"startDate" : "2018-10-31T01:30:00.000-05:00" ,  
"endDate" : "2018-11-31T01:30:00.000-05:00" ,  
"imageDisplayOption" : 3 ,  
"showDetailsAndAuthor" : true ,  
"commentsRequired" : "true" ,
"enabled" : "false" ,
"questions" :[
"Is it good?",
"Does it cover cost?",
"How likely would you refer?"
],  
"ideas" :[ 
234 ,
563 , 
546 , 
744
],  
"members" :[  
]
}


Add Member to Assessment survey:
Used by: /assessment/{assessmentId}/member

  • Sample URL: http://deascale.com/a/rest/v1/assessment/3456/member
  • Method:  Post
  • Endpoint:  /assessment/{assessmentId}/member 
  • App Scope Required:  Admin
  • Response content type:  JSON

Note: This will add members to assessment and send them email invitation.

Request Body Parameters:
"memberIds”: array of long (required)

Sample:

[
980601 ,
980523 ,
980695
]

Sample Successful Response:

{
"id" : 3456 ,
"assessmentTitle" : "CRT Assessment [01]" ,  
"welcomeMessage" : "Welcome to the asessment" ,  
"thankYouMessage" : "Thank you for your survey" ,  "startDate" : "2018-10-31T01:30:00.000-05:00" ,  
"endDate" : "2018-11-31T01:30:00.000-05:00" ,  
"imageDisplayOption" : 3 ,  "showDetailsAndAuthor" : true ,  
"commentsRequired" : "true" ,
"enabled" : "false" ,
"questions" :[
"Is it good?",
"Does it cover cost?",
"How likely would you refer?"
],  
"ideas" :[
234, 
563, 
546, 
744, 
123, 
435,
6322
],  
"members" :[
980601,
980523,
980695

}


Delete Member from Assessment survey:
Used by: /assessment/{assessmentId}/member

  • Sample URL: http://deascale.com/a/rest/v1/assessment/3456/member
  • Method:  DELETE
  • Endpoint:  /assessment/{assessmentId}/member 
  • App Scope Required:  Admin
  • Response content type:  JSON

Note: Assessment must have at least one Member.

Request Body Parameters:
"memberIds”: array of long (required)

Sample:

[
980601 ,
980523 ,
980695
]

Sample Successful Response:

{
"id" : 3456 ,
"assessmentTitle" : "CRT Assessment [01]" ,  
"welcomeMessage" : "Welcome to the asessment" ,  
"thankYouMessage" : "Thank you for your survey" ,  
"startDate" : "2018-10-31T01:30:00.000-05:00" ,  
"endDate" : "2018-11-31T01:30:00.000-05:00" ,  
"imageDisplayOption" : 3 ,  
"showDetailsAndAuthor" : true ,  
"commentsRequired" : "true" ,
"enabled" : "false" ,
"questions" :[
"Is it good?",
"Does it cover cost?",
"How likely would you refer?"
],  
"ideas" :[
234 , 
563 , 
546 , 
744
],  
"members" :[
223

}


Edit Assessment survey:
Used by: /assessment/edit
  • Sample URL: http://deascale.com/a/rest/v1/assessment/edit
  • Method: Post
  • Endpoint:  /assessment/edit
  • App Scope Required:  Admin
  • Response content type:  JSON

Request Body Parameters:

"Id": long (required)
"assessmentTitle” : string (required) "welcomeMessage” : string "thankYouMessage” : string "startDate” : date (ISO)
"endDate” : date (ISO)
"imageDisplayOption” : integer , options : 0 = No image , 2 = Display , 3 = Image Only " showDetailsAndAuthor” : boolean
"commentsRequired” : boolean

Sample:

{
"id":3456 ,
"assessmentTitle":"CRT Assessment [01]" ,
"welcomeMessage" : "Welcome to the assessment" , 
"thankYouMessage" : "Thank you for your survey. Have a nice day" , 
"startDate" : "2018-10-3T01:30:00.000-05:00" , 

"endDate" : "2018-11-31T01:30:00.000-05:00" , 
"imageDisplayOption" : 3 ,
"showDetailsAndAuthor" : true ,
"commentsRequired" : "false"
}

Sample Response:

{
"id" : 3456 ,
"assessmentTitle" : "CRT Assessment [01]" ,  
"welcomeMessage" : "Welcome to the assessment" ,  
"thankYouMessage" : "Thank you for your survey.  Have a nice day " ,  "startDate" : "2018-10-31T01:30:00.000-05:00" ,  
"endDate" : "2018-11-31T01:30:00.000-05:00" ,  
"imageDisplayOption" : 3 ,
"showDetailsAndAuthor" : true ,
"commentsRequired" : " false " ,
"enabled" : "false" ,
"questions" :[
"Is it good?" ,
"Does it cover cost?" ,
"How likely would you refer?"
],  
"ideas" :[
234 , 
563 , 
546 , 
744
],  
"members" :[
6322 , 
6234 , 
6211

}


Enable Assessment Survey:
Used by: /assessment/{id}/enable/{true|false}
  • Sample URL: http://deascale.com/a/rest/v1/assessment/3456/enable/true
  • Method:  Post
  • Endpoint:   /assessment/{id}/enable/{true|false} 
  • App Scope Required:  Admin
  • Response content type:  JSON

Note: If enable is set to true, this will enable assessment. Reviewers can start reviewing.

Sample Response:

{
"id" : 3456 ,
"assessmentTitle" : "CRT Assessment [01]" ,  
"welcomeMessage" : "Welcome to the asessment" ,  
"thankYouMessage" : "Thank you for your survey" ,  
"startDate" : "2018-10-31T01:30:00.000-05:00" ,  
"endDate" : "2018-11-31T01:30:00.000-05:00" ,  
"imageDisplayOption" : 3 ,  
"showDetailsAndAuthor" : true ,  
"commentsRequired" : "true" ,
"enabled" : "true" ,  
"questions" :[
"Is it good?",
"Does it cover cost?",
"How likely would you refer?"
],  
"ideas" :[
234 , 
563 , 
546 , 
744
],  
"members" :[
6322 , 
6234 , 
6211

}


Email Members:
Used by: /email/group/{id}
  • Sample URL: http://deascale.com/a/rest/v1/email/group/75
  • Method:  Post
  • Endpoint:  /email/group/{id} 
  • App Scope Required:  Admin 
  • Response content type:  JSON

Note: Only Admin will be able to sent email to a group

Query Parameter
"Id": Group Id. Group can be "moderators", "admins" or a "group"

Request Body Parameters: 
"subject" : String (required) 
"body" : String (required)

Sample:

{
"subject" : "Are you ready for the survey",
"body" : "Hey, You will receive another email shortly"
}




Errors

All error response will be in the format shown below. HTTP status code can any be except 200. You can use the field  ‘message’  to understand the root cause of the error.

{
"apiToken" : "ee94e089-2daf-41d9-8283-c9c75d3786bf" ,
"apiVersion" : "v1" ,
"cause" : "" ,
"memberName" : "cartoon" ,
"communityName" : "stage" ,  
"requestUri" : "/a/rest/v1/ideas/9846/comments" ,
"communityId" : 452 ,
"message" : "Idea not found" ,
"key" : "IDEA_NOT_FOUND" ,
"memberId" : 1790
}


 

Key

Message

HTTP Code

UNEXPECTED

Unexpected Error

500

INVALID_HEADER

Invalid HTTP Header for API Request

400

NO_AUTHENTICATION_HEADER

No Header containing authentication data

400

NO_API_TOKEN

No API Token provided

400

NO_CAMPAIGN

No Campaign provided

400

INVALID_API_TOKEN

Invalid API Token

400

INVALID_OAUTH_TOKEN

Invalid OAuth Token

400

INVALID_SSO_TOKEN

Invalid SSO Token

400

INVALID_MEMBER_TOKEN

Invalid Member Token

400

MULTIPASS_SSO_NOT_ENABLED

Multipass SSO not enabled

400

MULTIPASS_KEYS_NOT_CONFIGURED

Multipass Keys not configured

400

SSO_MEMBER_NOT_FOUND

SSO Member not found

404

PERMISSION_DENIED

Permission Denied

403

RESTRICTED_TO_ADMIN

Resource is restricted to ADMIN

403

NO_SECURE_CHANNEL

Secure channel required

403

NO_SSO_TOKEN

No SSO token provided by SSO community

403

LICENSE_NOT_ALLOWED

Resource not accessible to current license

403

COMMUNITY_NOT_FOUND

Community not found

404

MEMBER_NOT_FOUND

Member not found

404

MEMBER_NAME_NOT_FOUND

Member name not provided

404

PERSON_NOT_FOUND

Person not found

404

CAMPAIGN_NOT_FOUND

Campaign not found

404

IDEA_NOT_FOUND

Idea not found

404

STATUS_NOT_FOUND

custom status not found

404

MISSING_REMOTE_IDENTITY_DATA

Authentication missing expected Remote identity Data

400

INVALID_CREDENTIALS

Authentication data contains invalid credentials

403

INVALID_STATUS_CHANGE

Invalid Status Change

400

INVALID_CONTENT

Invalid Content

400

COMMENT_NOT_FOUND

Comment not found

404

OWNERSHIP_DISABLED

Idea ownership is not enabled

400

MULTIPLE_OWNERSHIP_DISABLED

Mulitple ownership is not enabled

400

INVALID_EMAIL

Invalide Email

400

UNSUPPORTED_FILE_EXTENSION

Unsupported file extension

400

FILE_STORAGE_LIMIT

You have exceeded the storage limit

400

FILE_EXIST

A file with the same name already exists

400

EMAIL_ALREADY_REGISTERED

Email already registered

400

INVALID_EMAIL_OR_ALREADY_REGISTERED

Invalid email or already registered, try a different email.

400

IDENTITY_NOT_FOUND

Identity not found

404

PRIVATE_COMMUNITY_NOT_ALLOWED

Private community is not allowed for research

403

ACTOR_IS_LOCKED

Actor is locked

403

HTML_TAGS_NOT_ALLOWED

Html tags not allowed

400

TEXT_CONTAINS_FORBIDDEN_CHARACTERS

Text Contains forbidden characters

400

ABUSIVE_WORD_FOUND

Abusive/Inflammatory/Curse words found

400

PERSON_LOCKED

Person is locked

403

REVIEWSCALE_NOT_FOUND

Reviewscale not found

404

STAGE_NOT_FOUND

Stage not found

404

FUNNEL_NOT_FOUND

Funnel not found

404

BADGE_NOT_FOUND

Badge not found

404

CAMPAIGN_CHANGE_NOT_ALLOWED

Campaign change not allowed

403

REQUIRED_FIELD_MISSING

Required data not found

400

INVALID_ORDER_BY_KEY

Invalid order by key

400

CAMPAIGN_GROUP_NOT_FOUND

Campaign Group not found

400

INVALID_INPUT

Invalid input value

400

ASSESSMENT_NOT_FOUND

Assessment Not Found

400

GROUP_NOT_FOUND

Group not found

400



Known API Issues:
  • top ideas are sometimes not ordered correctly
  • specifying version as “v1.0” returns 404

Assumptions

This API documentation will have the below two items as mandatory environmental considerations.

Host: 
https://ideascale.com/a/rest/v1/

Header: 
All API call should provide these header values.

Parameter name: api_token
Value: {Value provided by ideascale}

Contact Us

support@ideascale.com
https://cdn.desk.com/
false
ideascale
Loading
seconds ago
a minute ago
minutes ago
an hour ago
hours ago
a day ago
days ago
about
false
Invalid characters found
/customer/en/portal/articles/autocomplete