Veracode eLearning Courses Available API

Veracode APIs

Use the Courses Available API to return a collection of Veracode eLearning courses in JSON format that are available for your organization.

Resource URL

Table. Parameters
Name Query or Path Parameter Type Description
course_id Query String Optional. Course identifiers. Repeat the query parameters to specify multiple values.
page Query Integer Optional. Page number. Default is 0.
size Query Integer Optional. Page size. Default is 50 courses per page, maximum is 500 courses per page.
Table. Response Codes
HTTP Code Description Type
200 Success. Returns an array of Veracode eLearning courses. Object
400 Invalid request. Null
404 Not found. Null
403 Access denied. Null
500 Server-side error. Null

Example Request

The following example assumes you have correctly configured your credentials and configured any required HMAC authentication libraries.

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
public class GetCoursesClient {
    // An API Id for authentication
    private final static String API_KEY = "API_KEY_GOES_HERE";
    // The secret key corresponding to the API Id
    private final static String API_SECRET = "API_SECRET_GOES_HERE";
    public static void main(String[] args) throws Exception {
        URI uri = URI.create("");
        String authHeader = ClientCryptoLib.calculateAuthorizationHeader(ClientCryptoLib.VERACODE_HMAC_SHA_256, API_KEY,
            API_SECRET, uri.getHost(), uri.getPath(), HttpGet.METHOD_NAME);
        HttpGet request = new HttpGet(uri);
        request.addHeader("Authorization", authHeader);
        CloseableHttpResponse response = HttpClients.createDefault().execute(request);
        HttpEntity entity = response.getEntity();
        JSONObject json = new JSONObject(EntityUtils.toString(entity, "UTF-8"));

Example Response

The following response conforms to the Hypertest Application Language content type (application/hal+json), which includes a link to the reportcards endpoint for the courses.

    "_embedded": {"courses": [
            "_links": {
                "reportcards": {
                    "templated": true,
                    "href": "{&user_id,page,size}"
                "self": {"href": ""}
            "name": "AppSec Tutorials - CRLF Injection",
            "courseId": "CRLF"
        { ... }
    "_links": {
        "next": {"href": ""},
        "last": {"href": ""},
        "self": {
            "templated": true,
            "href": "{&course_id}"
        "first": {"href": ""}
    "page": {
        "number": 0,
        "size": 50,
        "totalPages": 2,
        "totalElements": 54