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 from your 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. You can request an API 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 https://support.ideascale.com/overview-articles/single-sign-on-multipass-saml-yammer
 
 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
https://support.ideascale.com/overview-articles/single-sign-on-multipass-saml-yammer

 
 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/[email protected]
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} OR /ideas/{ideaId}/changeStage/{stageId}”
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 Idea contributor/ co-submitter Information By Idea ID
Method URL: /ideas/{ideaID}/contributors
EG: http://ideascale.com/a/rest/v1/ideas/{ideaID}/contributors
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/1(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" : "[email protected]" ,  
"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" : "[email protected]" ,  
"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:

[
{
"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     Campaign 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 [email protected]" } ]
 
 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:
 { "text":"Idea description via rest API", "tags":["API","SDK"], "title":"Idea Title via rest API", "campaignId":202 }
 

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" : "[email protected]" ,
"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" : "[email protected]"}
 
 
 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
 

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
 

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

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
 

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

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

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

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}

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}

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"
}

Get Idea Owners: 

[
  {
    "id": 335,
    "name": "Maruf bhai",
    "personId": 1342,
    "email": "[email protected]",
    "emailHash": "d22d5635242c15c6eac3cb706381d048",
    "userName": "marufbhai",
    "globalModerator": false,
    "admin": false,
    "customRole": false,
    "registeredDateTime": "2018-10-10T22:24:05.000-07:00",
    "source": "web",
    "status": "member/Verified",
    "ideaCount": 7,
    "voteCount": 9,
    "commentCount": 4,
    "tosAccepted": false,
    "avatarUrl": "https://secure.gravatar.com/avatar/d22d5635242c15c6eac3cb706381d048.jpg?s=80&d=https%3A%2F%2Fideascale.com%2Fimages%2Favatar%2Finitial-M.png",
    "points": 355,
    "profileQuestions": {
      " Member Profile Question Single Line Text Box": "2  Member Profile Question Single Line Text Box",
      "Member Profile Question Single Choice": "Single Choice"
    }
  },
  {
    "id": 335,
    "name": "Maruf bhai",
    "personId": 1342,
    "email": "[email protected]",
    "emailHash": "d22d5635242c15c6eac3cb706381d048",
    "userName": "marufbhai",
    "globalModerator": false,
    "admin": false,
    "customRole": false,
    "registeredDateTime": "2018-10-10T22:24:05.000-07:00",
    "source": "web",
    "status": "member/Verified",
    "ideaCount": 7,
    "voteCount": 9,
    "commentCount": 4,
    "tosAccepted": false,
    "avatarUrl": "https://secure.gravatar.com/avatar/d22d5635242c15c6eac3cb706381d048.jpg?s=80&d=https%3A%2F%2Fideascale.com%2Fimages%2Favatar%2Finitial-M.png",
    "points": 355,
    "profileQuestions": {
      " Member Profile Question Single Line Text Box": "2  Member Profile Question Single Line Text Box",
      "Member Profile Question Single Choice": "Single Choice"
    }
  }
]

Post Idea Owners: 

[
    {
        "id": 337,
        "name": "alim",
        "personId": 1344,
        "email": "[email protected]",
        "emailHash": "1bd1fb4bdf0e82c7a88a205ff7033c2f",
        "userName": "alim00",
        "globalModerator": false,
        "admin": false,
        "customRole": false,
        "registeredDateTime": "2018-10-10T22:35:43.000-07:00",
        "source": "web",
        "status": "member/Verified",
        "ideaCount": 0,
        "voteCount": 0,
        "commentCount": 0,
        "tosAccepted": false,
        "avatarUrl": "https://secure.gravatar.com/avatar/1bd1fb4bdf0e82c7a88a205ff7033c2f.jpg?s=80&d=https%3A%2F%2Fideascale.com%2Fimages%2Favatar%2Finitial-A.png",
        "points": 0,
        "profileQuestions": {
            " Member Profile Question Single Line Text Box": "",
            "Member Profile Question Single Choice": "Single Choice"
        }
    }
]


Pull all Global Moderator, Campaign Moderator and Group Moderator in the community

{
   "communityModeratorGroups": [
       {
           "id": 12,
           "name": "Community Level Group: 1",
           "groupId": 150983,
           "groupName": "Test Group"
       },
       {
           "id": 16,
           "name": "Community Level Group: 2",
           "groupId": 150983,
           "groupName": "Test Group"
       }
   ],
   "campaignModeratorGroups": [
       {
           "id": 13,
           "name": "websitegroup",
           "groupId": 150983,
           "groupName": "Test Group",
           "campaignId": 821,
           "campaignName": "Website",
           "moderators": [
               {
                   "id": 6985,
                   "name": "Community Member",
                   "email": "[email protected]"
               }
           ]
       },
       {
           "id": 14,
           "name": "Campaign level moderation group",
           "groupId": 150983,
           "groupName": "Test Group",
           "campaignId": 825,
           "campaignName": "StageAutomation"
       },
       {
           "id": 15,
           "name": "Campaign Level Group: 1",
           "groupId": 150982,
           "groupName": "Test Campaign Group4",
           "campaignId": 825,
           "campaignName": "StageAutomation"
       }
   ]
} (edited)

Pull Group Moderator by Group:

● Endpoint: http://{uri}/a/rest/v1/moderator/groupModerators/{groupId}
●Method: GET
●Sample Url: https://ideascale.com/a/rest/v1/moderator/groupModerators/13
●Response:
{
   "id": 13,
   "name": "websitegroup",
   "groupId": 150983,
   "groupName": "Test Group",
   "campaignId": 821,
   "campaignName": "Website",
   "moderators": [
       {
           "id": 6985,
           "name": "Community Member",
           "email": "[email protected]"
       }
   ]
}

Create new community group

● Endpoint:  http://{uri}/a/rest/v1/moderator/groupModerators/communityGroup
● Method:  POST

● Sample Url: https://ideascale.com/a/rest/v1/moderator/groupModerators/communityGroup

Body: json object representing the form data. here's an example for creating new community group:
● Response:

{
   "name": "Community Level Group: 3",
   "groupId": 150983
}


Updating existing group:

● Sample Url: https://ideascale.com/a/rest/v1/moderator/groupModerators/communityGroup

Body: json object representing the form data. here's an example for updating existing group:

● Response:

{
   "id": 17,
   "name": "Community Level Group: 4",
   "groupId": 150982
} (edited)

 Creating new campaign group:
● Endpoint:  http://{uri}/a/rest/v1/moderator/groupModerators/campaignGroup
● Method:  POST

● Sample Url:  https://ideascale.com/a/rest/v1/moderator/groupModerators/campaignGroup

Body: json object representing the form data. here's an example for creating new campaign group:
● Response:

{
   "name": "Campaign Level Group: 5",
   "groupId": 150982,
   "campaignId": 821
}

Updating existing campaign group

● Endpoint: http://{uri}/a/rest/v1/moderator/groupModerators/campaignGroup
● Method: POST

● Sample Url:  https://ideascale.com/a/rest/v1/moderator/groupModerators/campaignGroup

Body: json object representing the form data. here's an example for updating existing campaign group:

● Response:
{
   "id": 17,
   "name": "Campaign Level Group: 6",
   "groupId": 150982,
   "campaignId": 821
}

Endpoint: http://{uri}/a/rest/v1/moderator/groupModerators/{groupId}
Method: DELETE

Assign Group Moderator for Campaign based Group Moderation
● Endpoint: http://{uri}/a/rest/v1/moderator/groupModerators/{groupId}/assign
● Method: POST

● Sample Url:  https://ideascale.com/a/rest/v1/moderator/groupModerators/150982/assign

Body: json object representing the form data. Provide moderation group id and email list of moderators. here's an example:

     ["[email protected]"]
● Response

{
   "id": 12,
   "name": "Community Level Group: 1",
   "groupId": 150983,
   "groupName": "Test Group",
   "campaignId": 0,
   "moderators": [
       {
           "id": 6985,
           "name": "Community Member",
           "email": "[email protected]"
       },
       {
           "id": 6989,
           "name": "Rezvi",
           "email": "[email protected]"
       }
   ]
}

Unassign Group Moderator for Campaign based Group Moderation

● Endpoint: http://{uri}/a/rest/v1/moderator/groupModerators/{groupId}/unassign
● Method: POST

● Sample Url: https://ideascale.com/a/rest/v1/moderator/groupModerators/150982/unassign

Body: json object representing the form data. Provide moderation group id and email list of moderators. here's an example:

  ["[email protected]"]

● Response

{
   "id": 12,
   "name": "Community Level Group: 1",
   "groupId": 150983,
   "groupName": "Test Group",
   "campaignId": 0,
   "moderators": [
       {
           "id": 6985,
           "name": "Community Member",
           "email": "[email protected]"
       }
   ]
}

Action: Assign Co-submitter
Method URL: /idea/{ideaId}/assign-co-submitter**
Method: POST
Sample:
[340, 1504]
Response:
[
{
"id": 340,
"name": "xyz",
"personId": 1347,
"email": "[email protected]",
"emailHash": "eb4466b40d23d497678e7db638de0d62",
"userName": "ttc004",
"globalModerator": false,
"admin": false,
"customRole": false,
"registeredDateTime": "2018-10-10T22:37:47.000-07:00",
"source": "web",
"status": "member/Verified",
"ideaCount": 0,
"voteCount": 1,
"commentCount": 1,
"tosAccepted": false,
"avatarUrl": "https://secure.gravatar.com/avatar/eb4466b40d23d497678e7db638de0d62.jpg?s=80&d=https%3A%2F%2Fideascale.com%2Fimages%2Favatar%2Finitial-A.png",
"points": 64,
"profileQuestions": {
"Department": "",
"For Auto Assign Goup": "",
"SubBusiness": "",
"Multi choice": "",
"recombination dna": "",
"how-to-enter": "",
"Check box": "false"
}
},
{
"id": 1504,
"name": "abc abc",
"personId": 1590,
"email": "[email protected]",
"emailHash": "0f668517ea21c083ea15f0613fe9bda7",
"userName": "",
"globalModerator": false,
"admin": false,
"customRole": false,
"registeredDateTime": "2018-12-19T21:34:49.000-08:00",
"source": "web",
"status": "member/Verified",
"ideaCount": 0,
"voteCount": 0,
"commentCount": 0,
"tosAccepted": false,
"avatarUrl": "https://secure.gravatar.com/avatar/0f668517ea21c083ea15f0613fe9bda7.jpg?s=80&d=https%3A%2F%2Fideascale.com%2Fimages%2Favatar%2Finitial-R.png",
"points": 10,
"profileQuestions": {
"Department": "",
"For Auto Assign Goup": "",
"SubBusiness": "",
"Multi choice": "",
"recombination dna": "",
"how-to-enter": "",
"Check box": "false"
}
}
]


Action:
For UnAssign Co-submitter
Method URL: /idea/{ideaId}/unassign-co-submitter**
Method: POST
Sample:
[340]
Response:
[
{
"id": 1504,
"name": "Abc abc",
"personId": 1590,
"email": "[email protected]",
"emailHash": "0f668517ea21c083ea15f0613fe9bda7",
"userName": "",
"globalModerator": false,
"admin": false,
"customRole": false,
"registeredDateTime": "2018-12-19T21:34:49.000-08:00",
"source": "web",
"status": "member/Verified",
"ideaCount": 0,
"voteCount": 0,
"commentCount": 0,
"tosAccepted": false,
"avatarUrl": "https://secure.gravatar.com/avatar/0f668517ea21c083ea15f0613fe9bda7.jpg?s=80&d=https%3A%2F%2Fideascale.com%2Fimages%2Favatar%2Finitial-R.png",
"points": 10,
"profileQuestions": {
"Department": "",
"For Auto Assign Goup": "",
"SubBusiness": "",
"Multi choice": "",
"recombination dna": "",
"how-to-enter": "",
"Check box": "false"
}
}
]


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                  Authentication missing expected Remote
_IDENTITY_DATA                    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                       Invalid 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              Invalid email or already registered,
_ALREADY_REGISTERED      try a different email.                                                 400
IDENTITY_NOT_FOUND       Identity not found                                                     404
PRIVATE_COMMUNITY         Private community
_NOT_ALLOWED                   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:

  • Error Info JSON is not being returned
  • 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}


For more information you could also refer to: https://a.ideascale.com/api-docs/index.html

Did this answer your question?