Centercode API API Reference

The Centercode API is a collection of endpoints providing integration opportunities with a variety of powerful platform features. The API is driven by HTTP and inspired by popular REST design patterns.

Resource Summmary

Data Packages

Data Packages allow third-party systems to retrieve customizable collections of data from the Centercode Platform from either the Community or Project scope. This enables further reporting (e.g. Tableau), dashboarding, data warehousing, and other archival or external data needs outside the Centercode Platform. Data Packages are driven by the Centercode Reporting Engine, so the Project, User, or Feedback fields returned by a Data Package endpoint are completely customizable and can be formatted as either JSON or CSV.

Video Guide | Simple Guide

Record Lookups

Record Lookups allow third-party systems to look up a specific Project, User, or Feedback within in the Centercode Platform at either the Community or Project scope. Example use cases include checking a User's score, determining if a Project is active, and retrieving a Feedback status to name a few. Record Lookups are driven by the Centercode Reporting Engine, so the Project, User, or Feedback fields returned by a Record Lookup endpoint are completely customizable and can be formatted as either JSON or CSV.

Video Guide | Simple Guide

Listeners

Listeners allow allow third-party systems to perform three types of actions against a targeted User or Feedback in the Centercode Platform. The available actions include executing a Macro, leaving a Comment and adding custom data.

Video Guide | Simple Guide

Macro Listeners

Macro Listeners allow a third-party system to execute a Macro against a single User or Feedback in the Centercode Platform at either the Community or Project scope. The full power of the Macro Engine is available to remotely automate a customizable series of actions such as scoring a User, adjusting Team membership, sending email, etc.

Comment Listeners

Comment Listeners allow a third-party system to add a comment to a User or Feedback in the Centercode Platform at either the Community or Project scope. One example would be to automatically thank a user for submitting feedback or performing some other task from outside the Centercode Platform.

Data Listeners

Data Listeners allow a third-party system to extended the data associated with a User or Feedback within the Centercode Platform at either the Community or Project scope. This extended data becomes part of the Data Engine which can then be leveraged in User and Feedback Management, Reporting, or even in other integrations.

External Users (User Imports)

External Users is a new User Onboarding Source type which allows new Centercode users to be invited or added programmatically by third-party systems. This feature generates a simple URL which can be called with an email address in order to initiate creating a new user.

Video Guide | Simple Guide

External Feedback

External Feedback allows new instances of Feedback to be dynamically generated from third-party systems. This is intended to allow for not only external user feedback (e.g. web or mobile submitted), but also telematics data (e.g. crash reports, usage data). External feedback can be submitted under the context of a specific user or anonymously.

Video Guide | Simple Guide

Access

An API request must inlclude an API key to access the target endpoint. The API key must be provided via an apiKey query string parameter. A unique aspect of the Centercode API is that when an endpoint is established, it gets exclusively associated with an API key. That means an API key can be used to authorize multiple endpoints, but each endpoint can only be authorized by a single API key.

Learn how to create an API key in the following guide:
https://centercode.help/enhanced-integrations/creating-your-community-level-api-key

All requests must be made over HTTPS.

Making Requests

The Centercode API is driven by HTTP and inspired by popular REST design patterns. Each endpoint can be invoked by standard HTTP methods, but currently only the GET and POST HTTP methods are supported. JSON is the primary message format, but the Data Package and Record Lookup endpoints can also be configured to return content in CSV format.

Cross-Origin Resource Sharing (CORS) is not currently supported.

Errors

Status Code Message
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
405 Method Not Allowed
415 Unsupported Media Type
429 Too Many Requests
500 Internal Server Error


Standard Error Response

{
    "status": 400,
    "description": "Something is not fine."
}

Invalid Parameter Error Response

{
    "status": 400,
    "description": "The specified request is invalid.",
    "invalidParameters": [
        {
            "name": "Find",
            "description": "A lookup query is required."
        }
    ]
}

Asynchronous Operations

The Macro Listener and User Import endpoints each trigger a queued opperation so the operation results cannot be immediately determined. To address this situation, the response includes a separate endpoint that can be called to return the result of the queued opperation.

Rate limiting

Each endpoint is limited to 10 requests per second from a single IP address. The following headers are returned with every response to help you avoid and handle exceeding the limit:

Header Description
X-Rate-Limit-Limit The rate limit period
X-Rate-Limit-Remaining Number of request remaining
X-Rate-Limit-Reset UTC date time (ISO 8601) when the limits resets
API Base URL
https://company.centercode.com/api/v1
Schemes: https
Version: 1

Data Packages

Community User Data Package

GET /userDataPackages/{reportElementKey}

Returns a community user based report element dataset.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/userDataPackages/NegativeScore?page=1&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
reportElementKey: string
in path

The configured report element key.

page: string
in query

The desired page number.

200 OK

Success

Response Content-Types: application/json, text/csv
Response Example (200 OK)
{
  "paging": {
    "currentPage": 1,
    "totalPages": 1,
    "resultsPerPage": 1000,
    "totalResults": 1
  },
  "fields": [
    {
      "name": "First L. Name",
      "dataType": "string"
    },
    {
      "name": "Community Score Total",
      "dataType": "integer"
    }
  ],
  "data": [
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Jim C.",
        "values": [
          "Jim C."
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "integer",
        "computedValue": "-825000",
        "values": [
          -825000
        ]
      }
    ]
  ]
}

Community Project Data Package

GET /projectDataPackages/{reportElementKey}

Returns a project based report element dataset.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/projectDataPackages/UserTotals?page=1&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
reportElementKey: string
in path

The configured report element key.

page: string
in query

The desired page number.

200 OK

Success

Response Content-Types: application/json, text/csv
Response Example (200 OK)
{
  "paging": {
    "currentPage": 1,
    "totalPages": 1,
    "resultsPerPage": 1000,
    "totalResults": 21
  },
  "fields": [
    {
      "name": "Project Name",
      "dataType": "string"
    },
    {
      "name": "Creation Date",
      "dataType": "date"
    },
    {
      "name": "Active Users",
      "dataType": "integer"
    },
    {
      "name": "Total Users",
      "dataType": "integer"
    },
    {
      "name": "Total Survey Responses",
      "dataType": "integer"
    },
    {
      "name": "Total Feedback",
      "dataType": "integer"
    }
  ],
  "data": [
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Spaceship V2 Beta",
        "values": [
          "Spaceship V2 Beta"
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "date",
        "computedValue": "2016-10-26T22:30:56",
        "values": [
          "2016-10-26T22:30:56"
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "9",
        "values": [
          9
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "9",
        "values": [
          9
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "5",
        "values": [
          5
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "5",
        "values": [
          5
        ]
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Widget Pro",
        "values": [
          "Widget Pro"
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "date",
        "computedValue": "2016-03-01T01:50:07",
        "values": [
          "2016-03-01T01:50:07"
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "3",
        "values": [
          3
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "3",
        "values": [
          3
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "0",
        "values": [
          0
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "3",
        "values": [
          3
        ]
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Widget Pro Alpha",
        "values": [
          "Widget Pro Alpha"
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "date",
        "computedValue": "2014-04-14T20:31:10",
        "values": [
          "2014-04-14T20:31:10"
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "5",
        "values": [
          5
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "5",
        "values": [
          5
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "4",
        "values": [
          4
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "5",
        "values": [
          5
        ]
      }
    ]
  ]
}

Project User Data Package

GET /projects/{projectKey}/userDataPackages/{reportElementKey}

Returns a project user based report element dataset.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/userDataPackages/UserFeedbackTotals?page=1&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
projectKey: string
in path

The configured project key.

reportElementKey: string
in path

The configured report element key.

page: string
in query

The desired page number.

200 OK

Success

Response Content-Types: application/json, text/csv
Response Example (200 OK)
{
  "paging": {
    "currentPage": 1,
    "totalPages": 1,
    "resultsPerPage": 1000,
    "totalResults": 8
  },
  "fields": [
    {
      "name": "First L. Name",
      "dataType": "string"
    },
    {
      "name": "# of Bug Report Submitted",
      "dataType": "integer"
    },
    {
      "name": "# of Bug Report Replies",
      "dataType": "integer"
    },
    {
      "name": "# of Bug Report Votes",
      "dataType": "integer"
    },
    {
      "name": "# of Suggestion Submitted",
      "dataType": "integer"
    },
    {
      "name": "# of Suggestion Replies",
      "dataType": "integer"
    },
    {
      "name": "# of Suggestion Votes",
      "dataType": "integer"
    },
    {
      "name": "Project Score Total",
      "dataType": "integer"
    }
  ],
  "data": [
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Alex B.",
        "values": [
          "Alex B."
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "integer",
        "computedValue": "1",
        "values": [
          1
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "3",
        "values": [
          3
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "0",
        "values": [
          0
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 6,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 7,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Annie H.",
        "values": [
          "Annie H."
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "integer",
        "computedValue": "11",
        "values": [
          11
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "3",
        "values": [
          3
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "7",
        "values": [
          7
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "0",
        "values": [
          0
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 6,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 7,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Betsy F.",
        "values": [
          "Betsy F."
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "integer",
        "computedValue": "1",
        "values": [
          1
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "1",
        "values": [
          1
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "0",
        "values": [
          0
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 6,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 7,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Jericho S.",
        "values": [
          "Jericho S."
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "integer",
        "computedValue": "1",
        "values": [
          1
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "1",
        "values": [
          1
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "6",
        "values": [
          6
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "4",
        "values": [
          4
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 6,
        "dataType": "integer",
        "computedValue": "3",
        "values": [
          3
        ]
      },
      {
        "fieldOrdinal": 7,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "jim a.",
        "values": [
          "jim a."
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "integer",
        "computedValue": "1",
        "values": [
          1
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "0",
        "values": [
          0
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 6,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 7,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Jim C.",
        "values": [
          "Jim C."
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "integer",
        "computedValue": "27",
        "values": [
          27
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "31",
        "values": [
          31
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "14",
        "values": [
          14
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "9",
        "values": [
          9
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "2",
        "values": [
          2
        ]
      },
      {
        "fieldOrdinal": 6,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 7,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Malcolm G.",
        "values": [
          "Malcolm G."
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "integer",
        "computedValue": "4",
        "values": [
          4
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "1",
        "values": [
          1
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "4",
        "values": [
          4
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "5",
        "values": [
          5
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 6,
        "dataType": "integer",
        "computedValue": "3",
        "values": [
          3
        ]
      },
      {
        "fieldOrdinal": 7,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "Morgana H.",
        "values": [
          "Morgana H."
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "integer",
        "computedValue": "2",
        "values": [
          2
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "2",
        "values": [
          2
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "4",
        "values": [
          4
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "2",
        "values": [
          2
        ]
      },
      {
        "fieldOrdinal": 5,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 6,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      },
      {
        "fieldOrdinal": 7,
        "dataType": "integer",
        "computedValue": "",
        "values": []
      }
    ]
  ]
}

Project Feedback Data Package

GET /projects/{projectKey}/feedbackDataPackages/{reportElementKey}

Returns a feedback based report element dataset.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/feedbackDataPackages/FeedbackScores?page=1&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
projectKey: string
in path

The configured project key.

reportElementKey: string
in path

The configured report element key.

page: string
in query

The desired page number.

200 OK

Success

Response Content-Types: application/json, text/csv
Response Example (200 OK)
{
  "paging": {
    "currentPage": 1,
    "totalPages": 1,
    "resultsPerPage": 1000,
    "totalResults": 5
  },
  "fields": [
    {
      "name": "ID",
      "dataType": "string"
    },
    {
      "name": "Summary",
      "dataType": "string"
    },
    {
      "name": "Popularity Score",
      "dataType": "integer"
    },
    {
      "name": "Impact Score",
      "dataType": "integer"
    },
    {
      "name": "# of Replies",
      "dataType": "integer"
    }
  ],
  "data": [
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "BUG-0001",
        "values": [
          "BUG-0001"
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "string",
        "computedValue": "WiFi Not Connecting",
        "values": [
          "WiFi Not Connecting"
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "11",
        "values": [
          11
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "94",
        "values": [
          94
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "3",
        "values": [
          3
        ]
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "BUG-0002",
        "values": [
          "BUG-0002"
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "string",
        "computedValue": "WiFi Signal Weak",
        "values": [
          "WiFi Signal Weak"
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "10",
        "values": [
          10
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "30",
        "values": [
          30
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "2",
        "values": [
          2
        ]
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "BUG-0003",
        "values": [
          "BUG-0003"
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "string",
        "computedValue": "Install Hanging on step 3",
        "values": [
          "Install Hanging on step 3"
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "8",
        "values": [
          8
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "48",
        "values": [
          48
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "2",
        "values": [
          2
        ]
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "BUG-0006",
        "values": [
          "BUG-0006"
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "string",
        "computedValue": "iOS sluggish and app crashes after a few seconds",
        "values": [
          "iOS sluggish and app crashes after a few seconds"
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "13",
        "values": [
          13
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "43",
        "values": [
          43
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "1",
        "values": [
          1
        ]
      }
    ],
    [
      {
        "fieldOrdinal": 0,
        "dataType": "string",
        "computedValue": "BUG-0018",
        "values": [
          "BUG-0018"
        ]
      },
      {
        "fieldOrdinal": 1,
        "dataType": "string",
        "computedValue": "App Notifications Too Frequent",
        "values": [
          "App Notifications Too Frequent"
        ]
      },
      {
        "fieldOrdinal": 2,
        "dataType": "integer",
        "computedValue": "9",
        "values": [
          9
        ]
      },
      {
        "fieldOrdinal": 3,
        "dataType": "integer",
        "computedValue": "29",
        "values": [
          29
        ]
      },
      {
        "fieldOrdinal": 4,
        "dataType": "integer",
        "computedValue": "5",
        "values": [
          5
        ]
      }
    ]
  ]
}

Record Lookups

Community User Lookup

GET /userRecordLookups/{reportElementKey}

Returns a single report element record matching a specified search value.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/userRecordLookups/UserScore?find=jim%40centercode.com?page=1&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
reportElementKey: string
in path

The configured report element key.

find: string
in query

The lookup query based on resource item type.

200 OK

Success

Response Content-Types: application/json, text/csv
Response Example (200 OK)
{
  "data": [
    {
      "field": "First L. Name",
      "dataType": "string",
      "computedValue": "Jim C.",
      "values": [
        "Jim C."
      ]
    },
    {
      "field": "Community Score Total",
      "dataType": "integer",
      "computedValue": "-825000",
      "values": [
        -825000
      ]
    }
  ]
}

Community Project Lookup

GET /projectRecordLookups/{reportElementKey}

Returns a single project based report element record matching the specified lookup value.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/projectRecordLookups/ProjectStats?find=WidgetPro?page=1&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
reportElementKey: string
in path

The configured report element key.

find: string
in query

The lookup query based on resource item type.

200 OK

Success

Response Content-Types: application/json, text/csv
Response Example (200 OK)
{
  "data": [
    {
      "field": "Project Name",
      "dataType": "string",
      "computedValue": "Widget XL Beta",
      "values": [
        "Widget XL Beta"
      ]
    },
    {
      "field": "Active Users",
      "dataType": "integer",
      "computedValue": "28",
      "values": [
        28
      ]
    },
    {
      "field": "Total Users",
      "dataType": "integer",
      "computedValue": "28",
      "values": [
        28
      ]
    },
    {
      "field": "Total Survey Responses",
      "dataType": "integer",
      "computedValue": "18",
      "values": [
        18
      ]
    },
    {
      "field": "Total Feedback",
      "dataType": "integer",
      "computedValue": "52",
      "values": [
        52
      ]
    }
  ]
}

Project User Lookup

GET /projects/{projectKey}/userRecordLookups/{reportElementKey}

Returns a single report element record matching a specified search value.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/userRecordLookups/UserStats?find=jim%40centercode.com?page=1&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
projectKey: string
in path

The configured project key.

reportElementKey: string
in path

The configured report element key.

find: string
in query

The lookup query based on resource item type.

200 OK

Success

Response Content-Types: application/json, text/csv
Response Example (200 OK)
{
  "data": [
    {
      "field": "First L. Name",
      "dataType": "string",
      "computedValue": "Jim C.",
      "values": [
        "Jim C."
      ]
    },
    {
      "field": "# of Bug Report Submitted",
      "dataType": "integer",
      "computedValue": "7",
      "values": [
        7
      ]
    },
    {
      "field": "# of Bug Report Replies",
      "dataType": "integer",
      "computedValue": "24",
      "values": [
        24
      ]
    },
    {
      "field": "# of Bug Report Votes",
      "dataType": "integer",
      "computedValue": "14",
      "values": [
        14
      ]
    },
    {
      "field": "# of Suggestion Submitted",
      "dataType": "integer",
      "computedValue": "10",
      "values": [
        10
      ]
    },
    {
      "field": "# of Suggestion Replies",
      "dataType": "integer",
      "computedValue": "2",
      "values": [
        2
      ]
    },
    {
      "field": "# of Suggestion Votes",
      "dataType": "integer",
      "computedValue": "",
      "values": []
    },
    {
      "field": "Project Score Total",
      "dataType": "integer",
      "computedValue": "",
      "values": []
    }
  ]
}

Project Feedback Lookup

GET /projects/{projectKey}/feedbackRecordLookups/{reportElementKey}

Returns a single report element record matching a specified search value.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/feedbackRecordLookups/BugReports?find=BUG-0001?page=1&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
projectKey: string
in path

The configured project key.

reportElementKey: string
in path

The configured report element key.

find: string
in query

The lookup query based on resource item type.

200 OK

Success

Response Content-Types: application/json, text/csv
Response Example (200 OK)
{
  "data": [
    {
      "field": "ID",
      "dataType": "string",
      "computedValue": "BUG-0001",
      "values": [
        "BUG-0001"
      ]
    },
    {
      "field": "Summary",
      "dataType": "string",
      "computedValue": "WiFi Not Connecting",
      "values": [
        "WiFi Not Connecting"
      ]
    },
    {
      "field": "Feature",
      "dataType": "string",
      "computedValue": "WiFi Connection",
      "values": [
        "WiFi Connection"
      ]
    },
    {
      "field": "Steps to Reproduce",
      "dataType": "string",
      "computedValue": "No matter how hard I try, I can't get the Wifi to connect at all.\r\n\r\n1. Install the hardware\r\n2. Install the app\r\n3. Run through app setup.\r\n\r\nWifi is never detected.",
      "values": [
        "No matter how hard I try, I can't get the Wifi to connect at all.\r\n\r\n1. Install the hardware\r\n2. Install the app\r\n3. Run through app setup.\r\n\r\nWifi is never detected."
      ]
    },
    {
      "field": "Status",
      "dataType": "string",
      "computedValue": "Logged Internally",
      "values": [
        "Logged Internally"
      ]
    },
    {
      "field": "Closure Reason",
      "dataType": "string",
      "computedValue": "",
      "values": []
    },
    {
      "field": "Severity",
      "dataType": "string",
      "computedValue": "Critical",
      "values": [
        "Critical"
      ]
    },
    {
      "field": "Blocker",
      "dataType": "string",
      "computedValue": "Yes",
      "values": [
        "Yes"
      ]
    },
    {
      "field": "Centercode Resolution",
      "dataType": "string",
      "computedValue": "",
      "values": []
    },
    {
      "field": "Priority",
      "dataType": "string",
      "computedValue": "",
      "values": []
    },
    {
      "field": "# of Occurrences",
      "dataType": "integer",
      "computedValue": "3",
      "values": [
        3
      ]
    },
    {
      "field": "Date Added",
      "dataType": "date",
      "computedValue": "2015-02-08T19:37:00",
      "values": [
        "2015-02-08T19:37:00"
      ]
    },
    {
      "field": "Jira ID",
      "dataType": "string",
      "computedValue": "SBX-957",
      "values": [
        "SBX-957"
      ]
    }
  ]
}

Macro Listeners

Community User Macro

POST /userMacroListeners/{listenerKey}

Triggers a macro to run against a single community user.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/userMacroListeners/Enrich?find=jim&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data ""
listenerKey: string
in path

The configured listener key.

find: string
in query

The lookup query based on resource item type.

202 Accepted

Accepted

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "statusEndpoint": "https://company.centercode.com/api/v1/userMacroListeners/Enrich/status/a4b50639-ebcf-2a3e-933d-20a6c5c17ead"
}

Community User Macro Status

GET /userMacroListeners/{listenerKey}/status/{statusId}

Returns the status of a community user macro.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/userMacroListeners/Enrich/status/a4b50639-ebcf-2a3e-933d-20a6c5c17ead?apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
listenerKey: string
in path

The configured listener key.

statusId: string
in path

The queued macro status ID.

Success

Response Content-Types: application/json
Response Example (200 OK)
{
  "status": "Succeeded"
}

Project User Macro

POST /projects/{projectKey}/userMacroListeners/{listenerKey}

Triggers a macro to run against a single project user.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/userMacroListeners/Promotion?find=jim&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data ""
projectKey: string
in path

The configured project key.

listenerKey: string
in path

The configured listener key.

find: string
in query

The lookup query based on resource item type.

202 Accepted

Accepted

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "statusEndpoint": "https://company.centercode.com/api/v1/projects/WidgetPro/userMacroListeners/Promotion/status/a4b50639-ebcf-2a3e-933d-20a6c5c17ead"
}

Project User Macro Status

GET /projects/{projectKey}/userMacroListeners/{listenerKey}/status/{statusId}

Returns the status of a project user macro.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/userMacroListeners/Promotion/status/a4b50639-ebcf-2a3e-933d-20a6c5c17ead?apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
projectKey: string
in path

The configured project key.

listenerKey: string
in path

The configured listener key.

statusId: string
in path

The queued user import status ID.

Success

Response Content-Types: application/json
Response Example (200 OK)
{
  "status": "Succeeded"
}

Project Feedback Macro

POST /projects/{projectKey}/feedbackMacroListeners/{listenerKey}

Triggers a macro to run against a single feedback submission.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/feedbackMacroListeners/ClosedInJIRA?find=BUG-0001&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data ""
projectKey: string
in path

The configured project key.

listenerKey: string
in path

The configured listener key.

find: string
in query

The lookup query based on resource item type.

202 Accepted

Accepted

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "statusEndpoint": "https://company.centercode.com/api/v1/projects/WidgetPro/feedbackMacroListeners/ClosedInJIRA/status/a4b50639-ebcf-2a3e-933d-20a6c5c17ead"
}

Project Feedback Macro Status

GET /projects/{projectKey}/feedbackMacroListeners/{listenerKey}/status/{statusId}

Returns the status of a project feedback macro.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/feedbackMacroListeners/ClosedInJIRA/status/a4b50639-ebcf-2a3e-933d-20a6c5c17ead?apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
projectKey: string
in path

The configured project key.

listenerKey: string
in path

The configured listener key.

statusId: string
in path

The queued macro status ID.

Success

Response Content-Types: application/json
Response Example (200 OK)
{
  "status": "Succeeded"
}

Comment Listeners

Community User Comment

POST /userCommentListeners/{listenerKey}

Adds a comment to the profile of the specified user.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/userCommentListeners/UserComment?find=nathan&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data '{"author": "admin@centercode.com", "message": "Please consider this user in subscription tests."}'

Any valid JSON structure.

listenerKey: string
in path

The configured listener key.

find: string
in query

The lookup query based on resource item type.

Request Content-Types: application/json
Request Example
{
  "author": "admin@centercode.com",
  "message": "Please consider this user in subscription tests."
}

Created

Response Content-Types: application/json
Response Example (201 Created)
{
  "author": "admin@centercode.com",
  "message": "Please consider this user in subscription tests."
}

Project User Comment

POST /projects/{projectKey}/userCommentListeners/{listenerKey}

Adds a comment to the profile of the specified user.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/userCommentListeners/UserComment?find=nathan&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data '{"author": "admin@centercode.com", "message": "This user has been very active in the app."}'

Any valid JSON structure.

projectKey: string
in path

The configured project key.

listenerKey: string
in path

The configured listener key.

find: string
in query

The lookup query based on resource item type.

Request Content-Types: application/json
Request Example
{
  "author": "admin@centercode.com",
  "message": "This user has been very active in the app."
}

Created

Response Content-Types: application/json
Response Example (201 Created)
{
  "author": "admin@centercode.com",
  "message": "This user has proven to be very active in the app!."
}

Project Feedback Comment

POST /projects/{projectKey}/feedbackCommentListeners/{listenerKey}

Add a comment to the specified feedback submission.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/feedbackCommentListeners/BugComment?find=BUG-0001&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data '{"author": "admin@centercode.com", "message": "Thanks for your bug report, keep up the good work!"}'

Any valid JSON structure.

projectKey: string
in path

The configured project key.

listenerKey: string
in path

The configured listener key.

find: string
in query

The lookup query based on resource item type.

Request Content-Types: application/json
Request Example
{
  "author": "admin@centercode.com",
  "message": "Thanks for your bug report, keep up the good work!"
}

Created

Response Content-Types: application/json
Response Example (201 Created)
{
  "author": "admin@centercode.com",
  "message": "Thanks for your bug report, keep up the good work!"
}

Data Listeners

Community User Data

POST /userDataListeners/{listenerKey}

Save external data to the profile of the specified user.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/userDataListeners/Performance?find=sam%40gmail.com&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data '{"performance": "Excellent"}'

Any valid JSON structure.

listenerKey: string
in path

The configured listener key.

find: string
in query

The lookup query based on resource item type.

Request Content-Types: application/json
Request Example
{
  "performance": "Excellent"
}
201 Created

Created

Response Content-Types: application/json
Response Example (201 Created)
{
  "fields": [
    {
      "dataType": "string",
      "label": "Tester Tier",
      "parameter": "performance",
      "value": "Excellent",
      "matched": true
    }
  ]
}

Project User Data

POST /projects/{projectKey}/userDataListeners/{listenerKey}

Save external data to the profile of the specified user.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/userDataListeners/Subscription?find=jim&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data '{"subscription": "Enterprise"}'

Any valid JSON structure.

projectKey: string
in path

The configured project key.

listenerKey: string
in path

The configured listener key.

find: string
in query

The lookup query based on resource item type.

Request Content-Types: application/json
Request Example
{
  "subscription": "Enterprise"
}
201 Created

Created

Response Content-Types: application/json
Response Example (201 Created)
{
  "fields": [
    {
      "dataType": "string",
      "label": "Subscription Level",
      "parameter": "subscription",
      "value": "Enterprise",
      "matched": true
    }
  ]
}

Project Feedback Data

POST /projects/{projectKey}/feedbackDataListeners/{listenerKey}

Save external data to the specified feedback submission.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/feedbackDataListeners/CrashLog?find=BUG-0001&apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data '{"crashlog": "~/Library/Logs/CrashReporter/MobileDevice/iPhone8s"}'

Any valid JSON structure.

projectKey: string
in path

The configured project key.

listenerKey: string
in path

The configured listener key.

find: string
in query

The lookup query based on resource item type.

Request Content-Types: application/json
Request Example
{
  "crashlog": "~/Library/Logs/CrashReporter/MobileDevice/iPhone8s"
}
201 Created

Created

Response Content-Types: application/json
Response Example (201 Created)
{
  "fields": [
    {
      "dataType": "string",
      "label": "Crash Log",
      "parameter": "crashlog",
      "value": "~/Library/Logs/CrashReporter/MobileDevice/iPhone8s",
      "matched": true
    }
  ]
}

User Imports

Community User Import

POST /userImports/{sourceKey}

Import a user into a community by providing an email address.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/userImports/Mobile?apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data '{"email": "person@gmail.com"}'

User import

sourceKey: string
in path

The configured user import source key.

Request Content-Types: application/json
Request Example
{
  "email": "person@gmail.com"
}
202 Accepted

Accepted

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "statusEndpoint": "https://company.centercode.com/api/v1/userImports/Mobile/status/a4b50639-ebcf-2a3e-933d-20a6c5c17ead"
}

Community User Import Status

GET /userImports/{sourceKey}/status/{statusId}
sourceKey: string
in path

The configured user import source key.

statusId: string
in path

The queued user import status ID.

Success

Response Content-Types: application/json
Response Example (200 OK)
{
  "status": "Succeeded"
}

Project User Import

POST /projects/{projectKey}/userImports/{sourceKey}

Import a user into a project by providing an email address.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/userImports/Mobile?apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data '{"email": "person@gmail.com"}'

User import

projectKey: string
in path

The configured project key.

sourceKey: string
in path

The configured user import source key.

Request Content-Types: application/json
Request Example
{
  "email": "person@gmail.com"
}
202 Accepted

Accepted

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "statusEndpoint": "https://company.centercode.com/api/v1/projects/WidgetPro/userImports/Mobile/status/a4b50639-ebcf-2a3e-933d-20a6c5c17ead"
}

Project User Import Status

GET /projects/{projectKey}/userImports/{sourceKey}/status/{statusId}

Check the status of a user import.

CURL Example

curl --request GET \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/userImports/Mobile/status/a4b50639-ebcf-2a3e-933d-20a6c5c17ead?apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45"
projectKey: string
in path

The configured project key.

sourceKey: string
in path

The configured user import source key.

statusId: string
in path

The queued user import status ID.

Success

Response Content-Types: application/json
Response Example (200 OK)
{
  "status": "Succeeded"
}

Feedback

Create Feedback

POST /projects/{projectKey}/feedback/{feedbackKey}

Submit feedback to the specified project.

CURL Example

curl --request POST \
--url "https://company.centercode.com/api/v1/projects/WidgetPro/feedback/Mobile?apiKey=9e3c8a050fdb40ff9ca13ac3b1873c45" \
--data '{"submitter": "jim@centercode.com", "title": "Lighting Presets Should be More Robust", "description": "I wish the app would have more lighting preset options.", "topic": 23795}'

Feedback parameter data

projectKey: string
in path

The configured project key.

feedbackKey: string
in path

Feedback key

Request Content-Types: application/json
Request Example
{
  "submitter": "jim@centercode.com",
  "summary": "Lighting Presets Should be More Robust",
  "description": "I really wish the app would have more lighting preset options.",
  "topic": 23795
}
201 Created

Created

Response Content-Types: application/json
Response Example (201 Created)
{
  "id": "8203093f-7388-4d63-a88d-157cb85e5400,",
  "key": "SUG-0023",
  "url": "https://company.centercode.com/project/feedback/view.html?cap=830150c24a114b466c512881db6cfdd0&uf=8203593f73884c63a80d147cb75e5400"
}

Schema Definitions

DataPackage: object

paging: object
currentPage: integer
totalPages: integer
resultsPerPage: integer
totalResults: integer
fields: object[]
object
name: string
dataType: string boolean, date, double, integer, string
data: object[][]
object[]
object
fieldOrdinal: integer
dataType: string boolean, date, double, integer, string
computedValue: string
values: string[]
string
Example
{
  "paging": {
    "currentPage": "integer",
    "totalPages": "integer",
    "resultsPerPage": "integer",
    "totalResults": "integer"
  },
  "fields": [
    {
      "name": "string",
      "dataType": "string"
    }
  ],
  "data": [
    [
      {
        "fieldOrdinal": "integer",
        "dataType": "string",
        "computedValue": "string",
        "values": [
          "string"
        ]
      }
    ]
  ]
}

RecordLookup: object

data: object[]
object
name: string
dataType: string boolean, date, double, integer, string
computedValue: string
values: string[]
string
Example
{
  "data": [
    {
      "name": "string",
      "dataType": "string",
      "computedValue": "string",
      "values": [
        "string"
      ]
    }
  ]
}

ListenerMacroAccepted: object

statusEndpoint: string
Example
{
  "statusEndpoint": "string"
}

ListenerMacroStatus: object

status: string Succeeded, Failed, Pending, Processing
Example
{
  "status": "string"
}

ListenerCommentCreated: object

author: string
message: string
Example
{
  "author": "string",
  "message": "string"
}

ListenerDataSaved: object

fields: object[]
object
dataType: string
label: string
parameter: string
value: string
matched: boolean
Example
{
  "fields": [
    {
      "dataType": "string",
      "label": "string",
      "parameter": "string",
      "value": "string",
      "matched": "boolean"
    }
  ]
}

UserImport: object

email: string
Example
{
  "email": "string"
}

UserImportAccepted: object

statusEndpoint: string
Example
{
  "statusEndpoint": "string"
}

UserImportStatus: object

status: string Succeeded, Failed, Pending, Processing
Example
{
  "status": "string"
}

FeedbackCreated: object

id: string
key: string
url: string
Example
{
  "id": "string",
  "key": "string",
  "url": "string"
}

DynamicRequest: object

string
Example
"object"

InvalidParameter: object

status: integer
description: string
invalidParameters: object[]
object
name: string
description: string
Example
{
  "status": 400,
  "description": "string",
  "invalidParameters": [
    {
      "name": "string",
      "description": "string"
    }
  ]
}

Error: object

status: integer
description: string
Example
{
  "status": 400,
  "description": "string"
}